using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace Amazon.Lambda.LexEvents
{
///
/// This class represents the input event from Amazon Lex. It used as the input parameter
/// for Lambda functions.
/// http://docs.aws.amazon.com/lex/latest/dg/lambda-input-response-format.html
///
public class LexEvent
{
///
/// Provides the intent name, slots, and confirmationStatus fields.
///
public LexCurrentIntent CurrentIntent { get; set; }
///
/// Provides additional information about a slot value.
///
public IDictionary SlotDetails { get; set; }
///
/// The Lex bot invoking the Lambda function
///
public LexBot Bot { get; set; }
///
/// This value is provided by the client application. Amazon Lex passes it to the Lambda function.
///
public string UserId { get; set; }
///
/// The text used to process the request.
///
public string InputTranscript { get; set; }
///
/// To indicate why Amazon Lex is invoking the Lambda function
///
public string InvocationSource { get; set; }
///
/// For each user input, the client sends the request to Amazon Lex using one of the runtime API operations,
/// PostContent or PostText. From the API request parameters, Amazon Lex determines whether the response
/// to the client (user) is text or voice, and sets this field accordingly.
///
/// The Lambda function can use this information to generate an appropriate message.
/// For example, if the client expects a voice response, your Lambda function could return
/// Speech Synthesis Markup LanguageSpeech Synthesis Markup Language (SSML) instead of text.
///
///
public string OutputDialogMode { get; set; }
///
/// The version of the message that identifies the format of the event data going into the
/// Lambda function and the expected format of the response from a Lambda function.
///
public string MessageVersion { get; set; }
///
/// Application-specific session attributes that the client sent in the request. If you want
/// Amazon Lex to include them in the response to the client, your Lambda function should
/// send these back to Amazon Lex in response.
///
public IDictionary SessionAttributes { get; set; }
///
/// Request-specific attributes that the client sends in the request. Use request attributes to
/// pass information that doesn't need to persist for the entire session.
///
public IDictionary RequestAttributes { get; set; }
///
/// A List of alternative intents that are returned when the bot is in advanced mode
///
public IList AlternativeIntents { get; set; }
///
/// The result of an Amazon Comprehend sentiment analysis of the last utterance.
///
public LexSentimentResponseType SentimentResponse { get; set; }
///
/// If included, sets values for one or more recent intents. You can include information for up to three intents.
///
public IList RecentIntentSummaryView { get; set; }
///
/// 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.
///
public IList ActiveContexts { get; set; }
///
/// Class representing the sentiment response.
///
public class LexSentimentResponseType
{
///
/// Gets and sets the SentimentLabel
///
public string SentimentLabel { get; set; }
///
/// Gets and sets the SentimentScore
///
public string SentimentScore { get; set; }
}
///
/// The class representing the current intent for the Lambda function to process.
///
public class LexCurrentIntent
{
///
/// The intent's name
///
public string Name { get; set; }
///
/// List of slots that are configured for the intent and values that are recognized by
/// Amazon Lex in the user conversation from the beginning. Otherwise, the values are null.
///
public IDictionary Slots { get; set; }
///
/// Provides additional information about a slot value.
///
public IDictionary SlotDetails { get; set; }
///
/// Gets and sets the property NluIntentConfidence.
///
public double? NluIntentConfidenceScore { get; set; }
///
/// The ConfirmationStatus provides the user response to a confirmation prompt, if there is one.
///
public string ConfirmationStatus { get; set; }
}
///
/// The class representing the information for a SlotDetail
///
public class SlotDetail
{
///
/// The resolutions array contains a list of additional values recognized for the slot.
///
public IList> Resolutions { get; set; }
///
/// The originalValue field contains the value that was entered by the user for the slot.
///
public string OriginalValue { get; set; }
}
///
/// The class identifies the Lex bot that is invoking the Lambda function.
///
public class LexBot
{
///
/// The name of the Lex bot
///
public string Name { get; set; }
///
/// The alias of the Lex bot
///
public string Alias { get; set; }
///
/// The version of the Lex bot
///
public string Version { get; set; }
}
}
}