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; } } } }