/*
* 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 PostContent operation.
///
public partial class PostContentResponse : AmazonWebServiceResponse, IDisposable
{
private string _activeContexts;
private string _alternativeIntents;
private Stream _audioStream;
private string _botVersion;
private string _contentType;
private DialogState _dialogState;
private string _encodedInputTranscript;
private string _encodedMessage;
private string _inputTranscript;
private string _intentName;
private string _message;
private MessageFormatType _messageFormat;
private string _nluIntentConfidence;
private string _sentimentResponse;
private string _sessionAttributes;
private string _sessionId;
private string _slots;
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)]
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 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.
///
///
public string AlternativeIntents
{
get { return this._alternativeIntents; }
set { this._alternativeIntents = value; }
}
// Check to see if AlternativeIntents property is set
internal bool IsSetAlternativeIntents()
{
return this._alternativeIntents != null;
}
///
/// Gets and sets the property AudioStream.
///
/// The prompt (or statement) to convey to the user. This is based on the bot configuration
/// and context. For example, if Amazon Lex did not understand the user intent, it sends
/// the clarificationPrompt
configured for the bot. If the intent requires
/// confirmation before taking the fulfillment action, it sends the confirmationPrompt
.
/// Another example: Suppose that the Lambda function successfully fulfilled the intent,
/// and sent a message to convey to the user. Then Amazon Lex sends that message in the
/// response.
///
///
public Stream AudioStream
{
get { return this._audioStream; }
set { this._audioStream = value; }
}
// Check to see if AudioStream property is set
internal bool IsSetAudioStream()
{
return this._audioStream != null;
}
///
/// 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 ContentType.
///
/// Content type as specified in the Accept
HTTP header in the request.
///
///
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 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 the user's intent. Consider
/// the following examples:
///
///
///
/// 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 dialog state.
///
///
/// -
///
///
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" response, a user might respond with additional information.
/// For example, "yes, but make it a 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 or change the intent from OrderPizza to OrderDrink).
///
/// -
///
///
ElicitSlot
- Amazon Lex is expecting the value of a slot 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 has successfully fulfilled
/// the intent.
///
/// -
///
///
ReadyForFulfillment
- Conveys that the client has to fulfill the request.
///
///
/// -
///
///
Failed
- Conveys that the conversation with the user failed.
///
///
///
/// This can happen for various reasons, including that the user does 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 if the Lambda function
/// fails 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 EncodedInputTranscript.
///
/// The text used to process the request.
///
///
///
/// If the input was an audio stream, the encodedInputTranscript
field contains
/// the text extracted from the audio stream. This is the text that is actually processed
/// to recognize intents and slot values. You can use this information to determine if
/// Amazon Lex is correctly processing the audio that you send.
///
///
///
/// The encodedInputTranscript
field is base-64 encoded. You must decode
/// the field before you can use the value.
///
///
[AWSProperty(Sensitive=true)]
public string EncodedInputTranscript
{
get { return this._encodedInputTranscript; }
set { this._encodedInputTranscript = value; }
}
// Check to see if EncodedInputTranscript property is set
internal bool IsSetEncodedInputTranscript()
{
return this._encodedInputTranscript != null;
}
///
/// Gets and sets the property EncodedMessage.
///
/// 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
in 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.
///
///
///
/// The encodedMessage
field is base-64 encoded. You must decode the field
/// before you can use the value.
///
///
[AWSProperty(Sensitive=true, Min=1, Max=1366)]
public string EncodedMessage
{
get { return this._encodedMessage; }
set { this._encodedMessage = value; }
}
// Check to see if EncodedMessage property is set
internal bool IsSetEncodedMessage()
{
return this._encodedMessage != null;
}
///
/// Gets and sets the property InputTranscript.
///
/// The text used to process the request.
///
///
///
/// You can use this field only in the de-DE, en-AU, en-GB, en-US, es-419, es-ES, es-US,
/// fr-CA, fr-FR, and it-IT locales. In all other locales, the inputTranscript
/// field is null. You should use the encodedInputTranscript
field instead.
///
///
///
/// If the input was an audio stream, the inputTranscript
field contains
/// the text extracted from the audio stream. This is the text that is actually processed
/// to recognize intents and slot values. You can use this information to determine if
/// Amazon Lex is correctly processing the audio that you send.
///
///
[Obsolete("The inputTranscript field is deprecated, use the encodedInputTranscript field instead. The inputTranscript field is available only in the de-DE, en-AU, en-GB, en-US, es-419, es-ES, es-US, fr-CA, fr-FR and it-IT locales.")]
public string InputTranscript
{
get { return this._inputTranscript; }
set { this._inputTranscript = value; }
}
// Check to see if InputTranscript property is set
internal bool IsSetInputTranscript()
{
return this._inputTranscript != null;
}
///
/// Gets and sets the property IntentName.
///
/// 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.
///
/// You can only use this field in the de-DE, en-AU, en-GB, en-US, es-419, es-ES, es-US,
/// fr-CA, fr-FR, and it-IT locales. In all other locales, the message
field
/// is null. You should use the encodedMessage
field instead.
///
///
///
/// 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
in 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.
///
///
[Obsolete("The message field is deprecated, use the encodedMessage field instead. The message field is available only in the de-DE, en-AU, en-GB, en-US, es-419, es-ES, es-US, fr-CA, fr-FR and it-IT locales.")]
[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 for the client.
///
/// -
///
///
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.
///
///
///
/// The score is a relative score, not an absolute score. The score may change based on
/// improvements to Amazon Lex.
///
///
public string 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 SentimentResponse.
///
/// The sentiment expressed in an utterance.
///
///
///
/// When the bot is configured to send utterances to Amazon Comprehend for sentiment analysis,
/// this field contains the result of the analysis.
///
///
public string 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.
///
/// Map of key/value pairs representing the session-specific context information.
///
///
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 SessionId.
///
/// The 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.
///
/// Map of zero or more intent slots (name/value pairs) Amazon Lex detected from the user
/// input during the conversation. The field is base-64 encoded.
///
///
///
/// 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
.
///
///
public string Slots
{
get { return this._slots; }
set { this._slots = value; }
}
// Check to see if Slots property is set
internal bool IsSetSlots()
{
return this._slots != null;
}
///
/// 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;
}
#region Dispose Pattern
private bool _disposed;
///
/// Disposes of all managed and unmanaged resources.
///
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (_disposed)
return;
if (disposing)
{
this._audioStream?.Dispose();
this._audioStream = null;
}
this._disposed = true;
}
#endregion
}
}