/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the runtime.lex-2016-11-28.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.Lex.Model
{
///
/// This is the response object from the PostText operation.
///
public partial class PostTextResponse : AmazonWebServiceResponse
{
private List _activeContexts = new List();
private List _alternativeIntents = new List();
private string _botVersion;
private DialogState _dialogState;
private string _intentName;
private string _message;
private MessageFormatType _messageFormat;
private IntentConfidence _nluIntentConfidence;
private ResponseCard _responseCard;
private SentimentResponse _sentimentResponse;
private Dictionary _sessionAttributes = new Dictionary();
private string _sessionId;
private Dictionary _slots = new Dictionary();
private string _slotToElicit;
///
/// Gets and sets the property ActiveContexts.
///
/// A list of active contexts for the session. A context can be set when an intent is
/// fulfilled or by calling the PostContent
, PostText
, or PutSession
/// operation.
///
///
///
/// You can use a context to control the intents that can follow up an intent, or to modify
/// the operation of your application.
///
///
[AWSProperty(Sensitive=true, Min=0, Max=20)]
public List ActiveContexts
{
get { return this._activeContexts; }
set { this._activeContexts = value; }
}
// Check to see if ActiveContexts property is set
internal bool IsSetActiveContexts()
{
return this._activeContexts != null && this._activeContexts.Count > 0;
}
///
/// Gets and sets the property AlternativeIntents.
///
/// One to four alternative intents that may be applicable to the user's intent.
///
///
///
/// Each alternative includes a score that indicates how confident Amazon Lex is that
/// the intent matches the user's intent. The intents are sorted by the confidence score.
///
///
[AWSProperty(Max=4)]
public List AlternativeIntents
{
get { return this._alternativeIntents; }
set { this._alternativeIntents = value; }
}
// Check to see if AlternativeIntents property is set
internal bool IsSetAlternativeIntents()
{
return this._alternativeIntents != null && this._alternativeIntents.Count > 0;
}
///
/// Gets and sets the property BotVersion.
///
/// The version of the bot that responded to the conversation. You can use this information
/// to help determine if one version of a bot is performing better than another version.
///
///
[AWSProperty(Min=1, Max=64)]
public string BotVersion
{
get { return this._botVersion; }
set { this._botVersion = value; }
}
// Check to see if BotVersion property is set
internal bool IsSetBotVersion()
{
return this._botVersion != null;
}
///
/// Gets and sets the property DialogState.
///
/// Identifies the current state of the user interaction. Amazon Lex returns one of the
/// following values as dialogState
. The client can optionally use this information
/// to customize the user interface.
///
/// -
///
///
ElicitIntent
- Amazon Lex wants to elicit user intent.
///
///
///
/// For example, a user might utter an intent ("I want to order a pizza"). If Amazon Lex
/// cannot infer the user intent from this utterance, it will return this dialogState.
///
/// -
///
///
ConfirmIntent
- Amazon Lex is expecting a "yes" or "no" response.
///
///
///
/// For example, Amazon Lex wants user confirmation before fulfilling an intent.
///
///
///
/// Instead of a simple "yes" or "no," a user might respond with additional information.
/// For example, "yes, but make it thick crust pizza" or "no, I want to order a drink".
/// Amazon Lex can process such additional information (in these examples, update the
/// crust type slot value, or change intent from OrderPizza to OrderDrink).
///
/// -
///
///
ElicitSlot
- Amazon Lex is expecting a slot value for the current intent.
///
///
///
///
/// For example, suppose that in the response Amazon Lex sends this message: "What size
/// pizza would you like?". A user might reply with the slot value (e.g., "medium"). The
/// user might also provide additional information in the response (e.g., "medium thick
/// crust pizza"). Amazon Lex can process such additional information appropriately.
///
/// -
///
///
Fulfilled
- Conveys that the Lambda function configured for the intent
/// has successfully fulfilled the intent.
///
/// -
///
///
ReadyForFulfillment
- Conveys that the client has to fulfill the intent.
///
///
/// -
///
///
Failed
- Conveys that the conversation with the user failed.
///
///
///
/// This can happen for various reasons including that the user did not provide an appropriate
/// response to prompts from the service (you can configure how many times Amazon Lex
/// can prompt a user for specific information), or the Lambda function failed to fulfill
/// the intent.
///
///
///
public DialogState DialogState
{
get { return this._dialogState; }
set { this._dialogState = value; }
}
// Check to see if DialogState property is set
internal bool IsSetDialogState()
{
return this._dialogState != null;
}
///
/// Gets and sets the property IntentName.
///
/// The current user intent that Amazon Lex is aware of.
///
///
public string IntentName
{
get { return this._intentName; }
set { this._intentName = value; }
}
// Check to see if IntentName property is set
internal bool IsSetIntentName()
{
return this._intentName != null;
}
///
/// Gets and sets the property Message.
///
/// The message to convey to the user. The message can come from the bot's configuration
/// or from a Lambda function.
///
///
///
/// If the intent is not configured with a Lambda function, or if the Lambda function
/// returned Delegate
as the dialogAction.type
its response,
/// Amazon Lex decides on the next course of action and selects an appropriate message
/// from the bot's configuration based on the current interaction context. For example,
/// if Amazon Lex isn't able to understand user input, it uses a clarification prompt
/// message.
///
///
///
/// When you create an intent you can assign messages to groups. When messages are assigned
/// to groups Amazon Lex returns one message from each group in the response. The message
/// field is an escaped JSON string containing the messages. For more information about
/// the structure of the JSON string returned, see msg-prompts-formats.
///
///
///
/// If the Lambda function returns a message, Amazon Lex passes it to the client in its
/// response.
///
///
[AWSProperty(Sensitive=true, Min=1, Max=1024)]
public string Message
{
get { return this._message; }
set { this._message = value; }
}
// Check to see if Message property is set
internal bool IsSetMessage()
{
return this._message != null;
}
///
/// Gets and sets the property MessageFormat.
///
/// The format of the response message. One of the following values:
///
/// -
///
///
PlainText
- The message contains plain UTF-8 text.
///
/// -
///
///
CustomPayload
- The message is a custom format defined by the Lambda
/// function.
///
/// -
///
///
SSML
- The message contains text formatted for voice output.
///
/// -
///
///
Composite
- The message contains an escaped JSON object containing one
/// or more messages from the groups that messages were assigned to when the intent was
/// created.
///
///
///
public MessageFormatType MessageFormat
{
get { return this._messageFormat; }
set { this._messageFormat = value; }
}
// Check to see if MessageFormat property is set
internal bool IsSetMessageFormat()
{
return this._messageFormat != null;
}
///
/// Gets and sets the property NluIntentConfidence.
///
/// Provides a score that indicates how confident Amazon Lex is that the returned intent
/// is the one that matches the user's intent. The score is between 0.0 and 1.0. For more
/// information, see Confidence
/// Scores.
///
///
///
/// The score is a relative score, not an absolute score. The score may change based on
/// improvements to Amazon Lex.
///
///
public IntentConfidence NluIntentConfidence
{
get { return this._nluIntentConfidence; }
set { this._nluIntentConfidence = value; }
}
// Check to see if NluIntentConfidence property is set
internal bool IsSetNluIntentConfidence()
{
return this._nluIntentConfidence != null;
}
///
/// Gets and sets the property ResponseCard.
///
/// Represents the options that the user has to respond to the current prompt. Response
/// Card can come from the bot configuration (in the Amazon Lex console, choose the settings
/// button next to a slot) or from a code hook (Lambda function).
///
///
public ResponseCard ResponseCard
{
get { return this._responseCard; }
set { this._responseCard = value; }
}
// Check to see if ResponseCard property is set
internal bool IsSetResponseCard()
{
return this._responseCard != null;
}
///
/// Gets and sets the property SentimentResponse.
///
/// The sentiment expressed in and utterance.
///
///
///
/// When the bot is configured to send utterances to Amazon Comprehend for sentiment analysis,
/// this field contains the result of the analysis.
///
///
public SentimentResponse SentimentResponse
{
get { return this._sentimentResponse; }
set { this._sentimentResponse = value; }
}
// Check to see if SentimentResponse property is set
internal bool IsSetSentimentResponse()
{
return this._sentimentResponse != null;
}
///
/// Gets and sets the property SessionAttributes.
///
/// A map of key-value pairs representing the session-specific context information.
///
///
[AWSProperty(Sensitive=true)]
public Dictionary SessionAttributes
{
get { return this._sessionAttributes; }
set { this._sessionAttributes = value; }
}
// Check to see if SessionAttributes property is set
internal bool IsSetSessionAttributes()
{
return this._sessionAttributes != null && this._sessionAttributes.Count > 0;
}
///
/// Gets and sets the property SessionId.
///
/// A unique identifier for the session.
///
///
public string SessionId
{
get { return this._sessionId; }
set { this._sessionId = value; }
}
// Check to see if SessionId property is set
internal bool IsSetSessionId()
{
return this._sessionId != null;
}
///
/// Gets and sets the property Slots.
///
/// The intent slots that Amazon Lex detected from the user input in the conversation.
///
///
///
///
/// Amazon Lex creates a resolution list containing likely values for a slot. The value
/// that it returns is determined by the valueSelectionStrategy
selected
/// when the slot type was created or updated. If valueSelectionStrategy
/// is set to ORIGINAL_VALUE
, the value provided by the user is returned,
/// if the user value is similar to the slot values. If valueSelectionStrategy
/// is set to TOP_RESOLUTION
Amazon Lex returns the first value in the resolution
/// list or, if there is no resolution list, null. If you don't specify a valueSelectionStrategy
,
/// the default is ORIGINAL_VALUE
.
///
///
[AWSProperty(Sensitive=true)]
public Dictionary Slots
{
get { return this._slots; }
set { this._slots = value; }
}
// Check to see if Slots property is set
internal bool IsSetSlots()
{
return this._slots != null && this._slots.Count > 0;
}
///
/// Gets and sets the property SlotToElicit.
///
/// If the dialogState
value is ElicitSlot
, returns the name
/// of the slot for which Amazon Lex is eliciting a value.
///
///
public string SlotToElicit
{
get { return this._slotToElicit; }
set { this._slotToElicit = value; }
}
// Check to see if SlotToElicit property is set
internal bool IsSetSlotToElicit()
{
return this._slotToElicit != null;
}
}
}