/*
* 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;
using Amazon.Runtime.Internal.Auth;
namespace Amazon.Lex.Model
{
///
/// Container for the parameters to the PostContent operation.
/// Sends user input (text or speech) to Amazon Lex. Clients use this API to send text
/// and audio requests to Amazon Lex at runtime. Amazon Lex interprets the user input
/// using the machine learning model that it built for the bot.
///
///
///
/// The PostContent
operation supports audio input at 8kHz and 16kHz. You
/// can use 8kHz audio to achieve higher speech recognition accuracy in telephone audio
/// applications.
///
///
///
/// In response, Amazon Lex returns the next message to convey to the user. 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 get user confirmation: "Order the pizza?".
///
///
-
///
/// After the user replies "Yes" to the confirmation prompt, Amazon Lex might return
/// a conclusion statement: "Thank you, your cheese pizza has been ordered.".
///
///
///
/// Not all Amazon Lex messages require a response from the user. For example, conclusion
/// statements do not require a response. Some messages require only a yes or no response.
/// In addition to the message
, Amazon Lex provides additional context about
/// the message in the response that you can use to enhance client behavior, such as displaying
/// the appropriate client user interface. Consider the following examples:
///
/// -
///
/// If the message is to elicit slot data, Amazon Lex returns the following context information:
///
///
///
-
///
///
x-amz-lex-dialog-state
header set to ElicitSlot
///
/// -
///
///
x-amz-lex-intent-name
header set to the intent name in the current context
///
///
/// -
///
///
x-amz-lex-slot-to-elicit
header set to the slot name for which the message
/// is eliciting information
///
/// -
///
///
x-amz-lex-slots
header set to a map of slots configured for the intent
/// with their current values
///
///
-
///
/// If the message is a confirmation prompt, the
x-amz-lex-dialog-state
/// header is set to Confirmation
and the x-amz-lex-slot-to-elicit
/// header is omitted.
///
/// -
///
/// If the message is a clarification prompt configured for the intent, indicating that
/// the user intent is not understood, the
x-amz-dialog-state
header is set
/// to ElicitIntent
and the x-amz-slot-to-elicit
header is omitted.
///
///
///
///
/// In addition, Amazon Lex also returns your application-specific sessionAttributes
.
/// For more information, see Managing
/// Conversation Context.
///
///
public partial class PostContentRequest : AmazonLexRequest
{
private string _accept;
private string _activeContexts;
private string _botAlias;
private string _botName;
private string _contentType;
private Stream _inputStream;
private string _requestAttributes;
private string _sessionAttributes;
private string _userId;
///
/// Gets and sets the property Accept.
///
/// You pass this value as the Accept
HTTP header.
///
///
///
/// The message Amazon Lex returns in the response can be either text or speech based
/// on the Accept
HTTP header value in the request.
///
/// -
///
/// If the value is
text/plain; charset=utf-8
, Amazon Lex returns text in
/// the response.
///
/// -
///
/// If the value begins with
audio/
, Amazon Lex returns speech in the response.
/// Amazon Lex uses Amazon Polly to generate the speech (using the configuration you specified
/// in the Accept
header). For example, if you specify audio/mpeg
/// as the value, Amazon Lex returns speech in the MPEG format.
///
/// -
///
/// If the value is
audio/pcm
, the speech returned is audio/pcm
/// in 16-bit, little endian format.
///
/// -
///
/// The following are the accepted values:
///
///
-
///
/// audio/mpeg
///
///
-
///
/// audio/ogg
///
///
-
///
/// audio/pcm
///
///
-
///
/// text/plain; charset=utf-8
///
///
-
///
/// audio/* (defaults to mpeg)
///
///
///
public string Accept
{
get { return this._accept; }
set { this._accept = value; }
}
// Check to see if Accept property is set
internal bool IsSetAccept()
{
return this._accept != null;
}
///
/// 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)]
public string ActiveContexts
{
get { return this._activeContexts; }
set { this._activeContexts = value; }
}
// Check to see if ActiveContexts property is set
internal bool IsSetActiveContexts()
{
return this._activeContexts != null;
}
///
/// Gets and sets the property BotAlias.
///
/// 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.
///
/// 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 ContentType.
///
/// You pass this value as the Content-Type
HTTP header.
///
///
///
/// Indicates the audio format or text. The header value must start with one of the following
/// prefixes:
///
/// -
///
/// PCM format, audio data must be in little-endian byte order.
///
///
-
///
/// audio/l16; rate=16000; channels=1
///
///
-
///
/// audio/x-l16; sample-rate=16000; channel-count=1
///
///
-
///
/// audio/lpcm; sample-rate=8000; sample-size-bits=16; channel-count=1; is-big-endian=false
///
///
///
-
///
/// Opus format
///
///
-
///
/// audio/x-cbr-opus-with-preamble; preamble-size=0; bit-rate=256000; frame-size-milliseconds=4
///
///
-
///
/// Text format
///
///
-
///
/// text/plain; charset=utf-8
///
///
///
[AWSProperty(Required=true)]
public string ContentType
{
get { return this._contentType; }
set { this._contentType = value; }
}
// Check to see if ContentType property is set
internal bool IsSetContentType()
{
return this._contentType != null;
}
///
/// Gets and sets the property InputStream.
///
/// User input in PCM or Opus audio format or text format as described in the Content-Type
/// HTTP header.
///
///
///
/// You can stream audio data to Amazon Lex or you can create a local buffer that captures
/// all of the audio data before sending. In general, you get better performance if you
/// stream audio data rather than buffering the data locally.
///
///
[AWSProperty(Required=true)]
public Stream InputStream
{
get { return this._inputStream; }
set { this._inputStream = value; }
}
// Check to see if InputStream property is set
internal bool IsSetInputStream()
{
return this._inputStream != null;
}
///
/// Gets and sets the property RequestAttributes.
///
/// You pass this value as the x-amz-lex-request-attributes
HTTP header.
///
///
///
/// Request-specific information passed between Amazon Lex and a client application. The
/// value must be a JSON serialized and base64 encoded map with string keys and values.
/// The total size of the requestAttributes
and sessionAttributes
/// headers is limited to 12 KB.
///
///
///
/// 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 string RequestAttributes
{
get { return this._requestAttributes; }
set { this._requestAttributes = value; }
}
// Check to see if RequestAttributes property is set
internal bool IsSetRequestAttributes()
{
return this._requestAttributes != null;
}
///
/// Gets and sets the property SessionAttributes.
///
/// You pass this value as the x-amz-lex-session-attributes
HTTP header.
///
///
///
/// Application-specific information passed between Amazon Lex and a client application.
/// The value must be a JSON serialized and base64 encoded map with string keys and values.
/// The total size of the sessionAttributes
and requestAttributes
/// headers is limited to 12 KB.
///
///
///
/// For more information, see Setting
/// Session Attributes.
///
///
[AWSProperty(Sensitive=true)]
public string SessionAttributes
{
get { return this._sessionAttributes; }
set { this._sessionAttributes = value; }
}
// Check to see if SessionAttributes property is set
internal bool IsSetSessionAttributes()
{
return this._sessionAttributes != null;
}
///
/// 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;
}
///
/// Get the signer to use for this request.
///
/// A signer for this request.
override protected AbstractAWSSigner CreateSigner()
{
return new AWS4Signer(false);
}
}
}