/*
* 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
{
///
/// Container for the parameters to the PostText operation.
/// Sends user input to Amazon Lex. Client applications can use this API to send requests
/// to Amazon Lex at runtime. Amazon Lex then interprets the user input using the machine
/// learning model it built for the bot.
///
///
///
/// In response, Amazon Lex returns the next message
to convey to the user
/// an optional responseCard
to display. Consider the following example messages:
///
///
/// -
///
/// For a user input "I would like a pizza", Amazon Lex might return a response with
/// a message eliciting slot data (for example, PizzaSize): "What size pizza would you
/// like?"
///
///
-
///
/// After the user provides all of the pizza order information, Amazon Lex might return
/// a response with a message to obtain user confirmation "Proceed with the pizza order?".
///
///
///
-
///
/// After the user replies to a confirmation prompt with a "yes", Amazon Lex might return
/// a conclusion statement: "Thank you, your cheese pizza has been ordered.".
///
///
///
/// Not all Amazon Lex messages require a user response. For example, a conclusion statement
/// does not require a response. Some messages require only a "yes" or "no" user response.
/// In addition to the message
, Amazon Lex provides additional context about
/// the message in the response that you might use to enhance client behavior, for example,
/// to display the appropriate client user interface. These are the slotToElicit
,
/// dialogState
, intentName
, and slots
fields in
/// the response. Consider the following examples:
///
/// -
///
/// If the message is to elicit slot data, Amazon Lex returns the following context information:
///
///
-
///
///
dialogState
set to ElicitSlot
///
/// -
///
///
intentName
set to the intent name in the current context
///
/// -
///
///
slotToElicit
set to the slot name for which the message
/// is eliciting information
///
/// -
///
///
slots
set to a map of slots, configured for the intent, with currently
/// known values
///
///
-
///
/// If the message is a confirmation prompt, the
dialogState
is set to ConfirmIntent
/// and SlotToElicit
is set to null.
///
/// -
///
/// If the message is a clarification prompt (configured for the intent) that indicates
/// that user intent is not understood, the
dialogState
is set to ElicitIntent
/// and slotToElicit
is set to null.
///
///
///
/// In addition, Amazon Lex also returns your application-specific sessionAttributes
.
/// For more information, see Managing
/// Conversation Context.
///
///
public partial class PostTextRequest : AmazonLexRequest
{
private List _activeContexts = new List();
private string _botAlias;
private string _botName;
private string _inputText;
private Dictionary _requestAttributes = new Dictionary();
private Dictionary _sessionAttributes = new Dictionary();
private string _userId;
///
/// Gets and sets the property ActiveContexts.
///
/// A list of contexts active for the request. A context can be activated when a previous
/// intent is fulfilled, or by including the context in the request,
///
///
///
/// If you don't specify a list of contexts, Amazon Lex will use the current list of contexts
/// for the session. If you specify an empty list, all contexts for the session are cleared.
///
///
[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 BotAlias.
///
/// The alias of the Amazon Lex bot.
///
///
[AWSProperty(Required=true)]
public string BotAlias
{
get { return this._botAlias; }
set { this._botAlias = value; }
}
// Check to see if BotAlias property is set
internal bool IsSetBotAlias()
{
return this._botAlias != null;
}
///
/// Gets and sets the property BotName.
///
/// The name of the Amazon Lex bot.
///
///
[AWSProperty(Required=true)]
public string BotName
{
get { return this._botName; }
set { this._botName = value; }
}
// Check to see if BotName property is set
internal bool IsSetBotName()
{
return this._botName != null;
}
///
/// Gets and sets the property InputText.
///
/// The text that the user entered (Amazon Lex interprets this text).
///
///
[AWSProperty(Required=true, Sensitive=true, Min=1, Max=1024)]
public string InputText
{
get { return this._inputText; }
set { this._inputText = value; }
}
// Check to see if InputText property is set
internal bool IsSetInputText()
{
return this._inputText != null;
}
///
/// Gets and sets the property RequestAttributes.
///
/// Request-specific information passed between Amazon Lex and a client application.
///
///
///
/// The namespace x-amz-lex:
is reserved for special attributes. Don't create
/// any request attributes with the prefix x-amz-lex:
.
///
///
///
/// For more information, see Setting
/// Request Attributes.
///
///
[AWSProperty(Sensitive=true)]
public Dictionary RequestAttributes
{
get { return this._requestAttributes; }
set { this._requestAttributes = value; }
}
// Check to see if RequestAttributes property is set
internal bool IsSetRequestAttributes()
{
return this._requestAttributes != null && this._requestAttributes.Count > 0;
}
///
/// Gets and sets the property SessionAttributes.
///
/// Application-specific information passed between Amazon Lex and a client application.
///
///
///
/// For more information, see Setting
/// Session Attributes.
///
///
[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 UserId.
///
/// The ID of the client application user. Amazon Lex uses this to identify a user's conversation
/// with your bot. At runtime, each request must contain the userID
field.
///
///
///
/// To decide the user ID to use for your application, consider the following factors.
///
/// -
///
/// The
userID
field must not contain any personally identifiable information
/// of the user, for example, name, personal identification numbers, or other end user
/// personal information.
///
/// -
///
/// If you want a user to start a conversation on one device and continue on another device,
/// use a user-specific identifier.
///
///
-
///
/// If you want the same user to be able to have two independent conversations on two
/// different devices, choose a device-specific identifier.
///
///
-
///
/// A user can't have two independent conversations with two different versions of the
/// same bot. For example, a user can't have a conversation with the PROD and BETA versions
/// of the same bot. If you anticipate that a user will need to have conversation with
/// two different versions, for example, while testing, include the bot alias in the user
/// ID to separate the two conversations.
///
///
///
[AWSProperty(Required=true, Min=2, Max=100)]
public string UserId
{
get { return this._userId; }
set { this._userId = value; }
}
// Check to see if UserId property is set
internal bool IsSetUserId()
{
return this._userId != null;
}
}
}