using System.Collections.Generic;
using System.Runtime.Serialization;
namespace Amazon.Lambda.LexV2Events
{
///
/// The class that represents the state of the user's session with Amazon Lex V2.
/// https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_SessionState.html
///
[DataContract]
public class LexV2SessionState
{
///
/// One or more contexts that indicate to Amazon Lex V2 the context of a request. When a context is active, Amazon Lex V2 considers
/// intents with the matching context as a trigger as the next intent in a session.
///
[DataMember(Name = "activeContexts", EmitDefaultValue = false)]
[System.Text.Json.Serialization.JsonPropertyName("activeContexts")]
public IList ActiveContexts { get; set; }
///
/// The next step that Amazon Lex V2 should take in the conversation with a user.
///
[DataMember(Name = "dialogAction", EmitDefaultValue = false)]
[System.Text.Json.Serialization.JsonPropertyName("dialogAction")]
public LexV2DialogAction DialogAction { get; set; }
///
/// The active intent that Amazon Lex V2 is processing.
///
[DataMember(Name = "intent", EmitDefaultValue = false)]
[System.Text.Json.Serialization.JsonPropertyName("intent")]
public LexV2Intent Intent { get; set; }
///
/// A unique identifier for a specific request.
///
[DataMember(Name = "originatingRequestId", EmitDefaultValue = false)]
[System.Text.Json.Serialization.JsonPropertyName("originatingRequestId")]
public string OriginatingRequestId { get; set; }
///
/// Hints for phrases that a customer is likely to use for a slot. Amazon Lex V2 uses the hints to help determine the correct value of a slot.
///
[DataMember(Name = "runtimeHints", EmitDefaultValue = false)]
[System.Text.Json.Serialization.JsonPropertyName("runtimeHints")]
public LexV2RuntimeHints RuntimeHints { get; set; }
///
/// Map of key/value pairs representing session-specific context information. It contains application information passed between Amazon Lex V2 and a client application.
///
[DataMember(Name = "sessionAttributes", EmitDefaultValue = false)]
[System.Text.Json.Serialization.JsonPropertyName("sessionAttributes")]
public Dictionary SessionAttributes { get; set; }
}
///
/// The class that represents hints to the phrases which can be provided to Amazon Lex V2 that a customer is likely to use for a slot.
/// https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_RuntimeHints.html
///
[DataContract]
public class LexV2RuntimeHints
{
///
/// A list of the slots in the intent that should have runtime hints added, and the phrases that should be added for each slot.
///
[DataMember(Name = "slotHints", EmitDefaultValue = false)]
[System.Text.Json.Serialization.JsonPropertyName("slotHints")]
public IDictionary> SlotHints { get; set; }
}
///
/// Provides an array of phrases that should be given preference when resolving values for a slot.
/// https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_RuntimeHintDetails.html
///
[DataContract]
public class RuntimeHintDetails
{
///
/// One or more strings that Amazon Lex V2 should look for in the input to the bot. Each phrase is given preference when deciding on slot values.
///
[DataMember(Name = "runtimeHintValues", EmitDefaultValue = false)]
[System.Text.Json.Serialization.JsonPropertyName("runtimeHintValues")]
public IList RuntimeHintValues { get; set; }
}
///
/// Provides the phrase that Amazon Lex V2 should look for in the user's input to the bot.
/// https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_RuntimeHintValue.html
///
[DataContract]
public class RuntimeHintValue
{
///
/// The phrase that Amazon Lex V2 should look for in the user's input to the bot.
///
[DataMember(Name = "phrase", EmitDefaultValue = false)]
[System.Text.Json.Serialization.JsonPropertyName("phrase")]
public string Phrase { get; set; }
}
}