using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace Amazon.Lambda.LexV2Events
{
///
/// This class represents the input event from Amazon Lex V2. It used as the input parameter
/// for Lambda functions.
/// https://docs.aws.amazon.com/lexv2/latest/dg/lambda.html#lambda-input-format
///
public class LexV2Event
{
///
/// Message Version
///
public string MessageVersion { get; set; }
///
/// Indicates the action that called the Lambda function. When the source is DialogCodeHook, the Lambda function was called after input from the user.
/// When the source is FulfillmentCodeHook the Lambda function was called after all required slots have been filled and the intent is ready for fulfillment.
///
public string InvocationSource { get; set; }
///
/// Input Mode. Could be one of DTMF, Speech or Text.
///
public string InputMode { get; set; }
///
/// Indicates the type of response. Could be one of CustomPayload, ImageResponseCard, PlainText or SSML.
///
public string ResponseContentType { get; set; }
///
/// The identifier of the session in use.
///
public string SessionId { get; set; }
///
/// The text that was used to process the input from the user.
/// For text or DTMF input, this is the text that the user typed.
/// For speech input, this is the text that was recognized from the speech.
///
public string InputTranscript { get; set; }
///
/// The LexV2 bot invoking the Lambda function.
///
public LexV2Bot Bot { get; set; }
///
/// One or more intents that Amazon Lex V2 considers possible matches to the user's utterance.
///
public IList Interpretations { get; set; }
///
/// The next state of the dialog between the user and the bot if the Lambda function doesn't change the flow.
/// Only present when the invocationSource field is DialogCodeHook and when the predicted dialog action is ElicitSlot.
///
public LexV2ProposedNextState ProposedNextState { 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; }
///
/// The current state of the conversation between the user and your Amazon Lex V2 bot.
///
public LexV2SessionState SessionState { get; set; }
///
/// One or more transcriptions that Amazon Lex V2 considers possible matches to the user's audio utterance.
///
public IList Transcriptions { get; set; }
}
}