// Code generated by smithy-go-codegen DO NOT EDIT.

package types

import (
	smithydocument "github.com/aws/smithy-go/document"
)

// Contains information about the contexts that a user is using in a session. You
// can configure Amazon Lex V2 to set a context when an intent is fulfilled, or you
// can set a context using the , , or operations. Use a context to indicate to
// Amazon Lex V2 intents that should be used as follow-up intents. For example, if
// the active context is order-fulfilled, only intents that have order-fulfilled
// configured as a trigger are considered for follow up.
type ActiveContext struct {

	// A list of contexts active for the request. A context can be activated when a
	// previous intent is fulfilled, or by including the context in the request. If you
	// don't specify a list of contexts, Amazon Lex V2 will use the current list of
	// contexts for the session. If you specify an empty list, all contexts for the
	// session are cleared.
	//
	// This member is required.
	ContextAttributes map[string]string

	// The name of the context.
	//
	// This member is required.
	Name *string

	// Indicates the number of turns or seconds that the context is active. Once the
	// time to live expires, the context is no longer returned in a response.
	//
	// This member is required.
	TimeToLive *ActiveContextTimeToLive

	noSmithyDocumentSerde
}

// The time that a context is active. You can specify the time to live in seconds
// or in conversation turns.
type ActiveContextTimeToLive struct {

	// The number of seconds that the context is active. You can specify between 5 and
	// 86400 seconds (24 hours).
	//
	// This member is required.
	TimeToLiveInSeconds *int32

	// The number of turns that the context is active. You can specify up to 20 turns.
	// Each request and response from the bot is a turn.
	//
	// This member is required.
	TurnsToLive *int32

	noSmithyDocumentSerde
}

// Represents a chunk of audio sent from the client application to Amazon Lex V2.
// The audio is all or part of an utterance from the user. Amazon Lex V2
// accumulates audio chunks until it recognizes a natural pause in speech before
// processing the input.
type AudioInputEvent struct {

	// The encoding used for the audio chunk. You must use 8 KHz PCM 16-bit
	// mono-channel little-endian format. The value of the field should be: audio/lpcm;
	// sample-rate=8000; sample-size-bits=16; channel-count=1; is-big-endian=false
	//
	// This member is required.
	ContentType *string

	// An encoded stream of audio.
	AudioChunk []byte

	// A timestamp set by the client of the date and time that the event was sent to
	// Amazon Lex V2.
	ClientTimestampMillis int64

	// A unique identifier that your application assigns to the event. You can use this
	// to identify events in logs.
	EventId *string

	noSmithyDocumentSerde
}

// An event sent from Amazon Lex V2 to your client application containing audio to
// play to the user.
type AudioResponseEvent struct {

	// A chunk of the audio to play.
	AudioChunk []byte

	// The encoding of the audio chunk. This is the same as the encoding configure in
	// the contentType field of the ConfigurationEvent.
	ContentType *string

	// A unique identifier of the event sent by Amazon Lex V2. The identifier is in the
	// form RESPONSE-N, where N is a number starting with one and incremented for each
	// event sent by Amazon Lex V2 in the current session.
	EventId *string

	noSmithyDocumentSerde
}

// A button that appears on a response card show to the user.
type Button struct {

	// The text that is displayed on the button.
	//
	// This member is required.
	Text *string

	// The value returned to Amazon Lex V2 when a user chooses the button.
	//
	// This member is required.
	Value *string

	noSmithyDocumentSerde
}

// Provides a score that indicates the confidence that Amazon Lex V2 has that an
// intent is the one that satisfies the user's intent.
type ConfidenceScore struct {

	// A score that indicates how confident Amazon Lex V2 is that an intent satisfies
	// the user's intent. Ranges between 0.00 and 1.00. Higher scores indicate higher
	// confidence.
	Score float64

	noSmithyDocumentSerde
}

// The initial event sent from the application to Amazon Lex V2 to configure the
// conversation, including session and request attributes and the response content
// type.
type ConfigurationEvent struct {

	// The message that Amazon Lex V2 returns in the response can be either text or
	// speech based on the responseContentType value.
	//
	// * If the value is
	// text/plain;charset=utf-8, Amazon Lex V2 returns text in the response.
	//
	// * If the
	// value begins with audio/, Amazon Lex V2 returns speech in the response. Amazon
	// Lex V2 uses Amazon Polly to generate the speech using the configuration that you
	// specified in the requestContentType parameter. For example, if you specify
	// audio/mpeg as the value, Amazon Lex V2 returns speech in the MPEG format.
	//
	// * If
	// the value is audio/pcm, the speech returned is audio/pcm in 16-bit,
	// little-endian format.
	//
	// * The following are the accepted values:
	//
	// * audio/mpeg
	//
	// *
	// audio/ogg
	//
	// * audio/pcm
	//
	// * audio/* (defaults to mpeg)
	//
	// * text/plain;
	// charset=utf-8
	//
	// This member is required.
	ResponseContentType *string

	// A timestamp set by the client of the date and time that the event was sent to
	// Amazon Lex V2.
	ClientTimestampMillis int64

	// Determines whether Amazon Lex V2 should send audio responses to the client
	// application. Set this field to false when the client is operating in a playback
	// mode where audio responses are played to the user. If the client isn't operating
	// in playback mode, such as a text chat application, set this to true so that
	// Amazon Lex V2 doesn't wait for the prompt to finish playing on the client.
	DisablePlayback bool

	// A unique identifier that your application assigns to the event. You can use this
	// to identify events in logs.
	EventId *string

	// Request-specific information passed between the client application and Amazon
	// Lex V2. The namespace x-amz-lex: is reserved for special attributes. Don't
	// create any request attributes for prefix x-amz-lex:.
	RequestAttributes map[string]string

	// The state of the user's session with Amazon Lex V2.
	SessionState *SessionState

	// A list of messages to send to the user. If you set the welcomeMessage field, you
	// must also set the DialogAction
	// (https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_DialogAction.html)
	// structure's type
	// (https://docs.aws.amazon.com/lexv2/latest/dg/API_runtime_DialogAction.html#lexv2-Type-runtime_DialogAction-type)
	// field.
	WelcomeMessages []Message

	noSmithyDocumentSerde
}

// The next action that Amazon Lex V2 should take.
type DialogAction struct {

	// The next action that the bot should take in its interaction with the user. The
	// possible values are:
	//
	// * Close - Indicates that there will not be a response from
	// the user. For example, the statement "Your order has been placed" does not
	// require a response.
	//
	// * ConfirmIntent - The next action is asking the user if the
	// intent is complete and ready to be fulfilled. This is a yes/no question such as
	// "Place the order?"
	//
	// * Delegate - The next action is determined by Amazon Lex
	// V2.
	//
	// * ElicitIntent - The next action is to elicit an intent from the user.
	//
	// *
	// ElicitSlot - The next action is to elicit a slot value from the user.
	//
	// This member is required.
	Type DialogActionType

	// Configures the slot to use spell-by-letter or spell-by-word style. When you use
	// a style on a slot, users can spell out their input to make it clear to your
	// bot.
	//
	// * Spell by letter - "b" "o" "b"
	//
	// * Spell by word - "b as in boy" "o as in
	// oscar" "b as in boy"
	//
	// For more information, see  Using spelling to enter slot
	// values  (https://docs.aws.amazon.com/lexv2/latest/dg/using-spelling.html).
	SlotElicitationStyle StyleType

	// The name of the slot that should be elicited from the user.
	SlotToElicit *string

	// The name of the constituent sub slot of the composite slot specified in
	// slotToElicit that should be elicited from the user.
	SubSlotToElicit *ElicitSubSlot

	noSmithyDocumentSerde
}

// A notification from the client that it is disconnecting from Amazon Lex V2.
// Sending a DisconnectionEvent event is optional, but can help identify a
// conversation in logs.
type DisconnectionEvent struct {

	// A timestamp set by the client of the date and time that the event was sent to
	// Amazon Lex V2.
	ClientTimestampMillis int64

	// A unique identifier that your application assigns to the event. You can use this
	// to identify events in logs.
	EventId *string

	noSmithyDocumentSerde
}

// A DTMF character sent from the client application. DTMF characters are typically
// sent from a phone keypad to represent numbers. For example, you can have Amazon
// Lex V2 process a credit card number input from a phone.
type DTMFInputEvent struct {

	// The DTMF character that the user pressed. The allowed characters are A - D, 0 -
	// 9, # and *.
	//
	// This member is required.
	InputCharacter *string

	// A timestamp set by the client of the date and time that the event was sent to
	// Amazon Lex V2.
	ClientTimestampMillis int64

	// A unique identifier that your application assigns to the event. You can use this
	// to identify events in logs.
	EventId *string

	noSmithyDocumentSerde
}

// The specific constituent sub slot of the composite slot to elicit in dialog
// action.
type ElicitSubSlot struct {

	// The name of the slot that should be elicited from the user.
	//
	// This member is required.
	Name *string

	// The field is not supported.
	SubSlotToElicit *ElicitSubSlot

	noSmithyDocumentSerde
}

// Event that Amazon Lex V2 sends to indicate that the stream is still open between
// the client application and Amazon Lex V2
type HeartbeatEvent struct {

	// A unique identifier of the event sent by Amazon Lex V2. The identifier is in the
	// form RESPONSE-N, where N is a number starting with one and incremented for each
	// event sent by Amazon Lex V2 in the current session.
	EventId *string

	noSmithyDocumentSerde
}

// A card that is shown to the user by a messaging platform. You define the
// contents of the card, the card is displayed by the platform. When you use a
// response card, the response from the user is constrained to the text associated
// with a button on the card.
type ImageResponseCard struct {

	// The title to display on the response card. The format of the title is determined
	// by the platform displaying the response card.
	//
	// This member is required.
	Title *string

	// A list of buttons that should be displayed on the response card. The arrangement
	// of the buttons is determined by the platform that displays the button.
	Buttons []Button

	// The URL of an image to display on the response card. The image URL must be
	// publicly available so that the platform displaying the response card has access
	// to the image.
	ImageUrl *string

	// The subtitle to display on the response card. The format of the subtitle is
	// determined by the platform displaying the response card.
	Subtitle *string

	noSmithyDocumentSerde
}

// The current intent that Amazon Lex V2 is attempting to fulfill.
type Intent struct {

	// The name of the intent.
	//
	// This member is required.
	Name *string

	// Contains information about whether fulfillment of the intent has been confirmed.
	ConfirmationState ConfirmationState

	// A map of all of the slots for the intent. The name of the slot maps to the value
	// of the slot. If a slot has not been filled, the value is null.
	Slots map[string]Slot

	// Contains fulfillment information for the intent.
	State IntentState

	noSmithyDocumentSerde
}

// Contains the current state of the conversation between the client application
// and Amazon Lex V2.
type IntentResultEvent struct {

	// A unique identifier of the event sent by Amazon Lex V2. The identifier is in the
	// form RESPONSE-N, where N is a number starting with one and incremented for each
	// event sent by Amazon Lex V2 in the current session.
	EventId *string

	// Indicates whether the input to the operation was text or speech.
	InputMode InputMode

	// A list of intents that Amazon Lex V2 determined might satisfy the user's
	// utterance. Each interpretation includes the intent, a score that indicates how
	// confident Amazon Lex V2 is that the interpretation is the correct one, and an
	// optional sentiment response that indicates the sentiment expressed in the
	// utterance.
	Interpretations []Interpretation

	// The attributes sent in the request.
	RequestAttributes map[string]string

	// The identifier of the session in use.
	SessionId *string

	// The state of the user's session with Amazon Lex V2.
	SessionState *SessionState

	noSmithyDocumentSerde
}

// An intent that Amazon Lex V2 determined might satisfy the user's utterance. The
// intents are ordered by the confidence score.
type Interpretation struct {

	// A list of intents that might satisfy the user's utterance. The intents are
	// ordered by the confidence score.
	Intent *Intent

	// Determines the threshold where Amazon Lex V2 will insert the
	// AMAZON.FallbackIntent, AMAZON.KendraSearchIntent, or both when returning
	// alternative intents in a response. AMAZON.FallbackIntent and
	// AMAZON.KendraSearchIntent are only inserted if they are configured for the bot.
	NluConfidence *ConfidenceScore

	// 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.
	SentimentResponse *SentimentResponse

	noSmithyDocumentSerde
}

// Container for text that is returned to the customer..
type Message struct {

	// Indicates the type of response.
	//
	// This member is required.
	ContentType MessageContentType

	// The text of the message.
	Content *string

	// A card that is shown to the user by a messaging platform. You define the
	// contents of the card, the card is displayed by the platform. When you use a
	// response card, the response from the user is constrained to the text associated
	// with a button on the card.
	ImageResponseCard *ImageResponseCard

	noSmithyDocumentSerde
}

// Event sent from the client application to Amazon Lex V2 to indicate that
// playback of audio is complete and that Amazon Lex V2 should start processing the
// user's input.
type PlaybackCompletionEvent struct {

	// A timestamp set by the client of the date and time that the event was sent to
	// Amazon Lex V2.
	ClientTimestampMillis int64

	// A unique identifier that your application assigns to the event. You can use this
	// to identify events in logs.
	EventId *string

	noSmithyDocumentSerde
}

// Event sent from Amazon Lex V2 to indicate to the client application should stop
// playback of audio. For example, if the client is playing a prompt that asks for
// the user's telephone number, the user might start to say the phone number before
// the prompt is complete. Amazon Lex V2 sends this event to the client application
// to indicate that the user is responding and that Amazon Lex V2 is processing
// their input.
type PlaybackInterruptionEvent struct {

	// The identifier of the event that contained the audio, DTMF, or text that caused
	// the interruption.
	CausedByEventId *string

	// A unique identifier of the event sent by Amazon Lex V2. The identifier is in the
	// form RESPONSE-N, where N is a number starting with one and incremented for each
	// event sent by Amazon Lex V2 in the current session.
	EventId *string

	// Indicates the type of user input that Amazon Lex V2 detected.
	EventReason PlaybackInterruptionReason

	noSmithyDocumentSerde
}

// Provides an array of phrases that should be given preference when resolving
// values for a slot.
type RuntimeHintDetails struct {

	// 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.
	RuntimeHintValues []RuntimeHintValue

	// A map of constituent sub slot names inside a composite slot in the intent and
	// the phrases that should be added for each sub slot. Inside each composite slot
	// hints, this structure provides a mechanism to add granular sub slot phrases.
	// Only sub slot hints are supported for composite slots. The intent name,
	// composite slot name and the constituent sub slot names must exist.
	SubSlotHints map[string]RuntimeHintDetails

	noSmithyDocumentSerde
}

// You can provide Amazon Lex V2 with hints to the phrases that a customer is
// likely to use for a slot. When a slot with hints is resolved, the phrases in the
// runtime hints are preferred in the resolution. You can provide hints for a
// maximum of 100 intents. You can provide a maximum of 100 slots. Before you can
// use runtime hints with an existing bot, you must first rebuild the bot. For more
// information, see Using runtime hints to improve recognition of slot values
// (https://docs.aws.amazon.com/lexv2/latest/dg/using-hints.html).
type RuntimeHints struct {

	// A list of the slots in the intent that should have runtime hints added, and the
	// phrases that should be added for each slot. The first level of the slotHints map
	// is the name of the intent. The second level is the name of the slot within the
	// intent. For more information, see Using hints to improve accuracy
	// (https://docs.aws.amazon.com/lexv2/latest/dg/using-hints.html). The intent name
	// and slot name must exist.
	SlotHints map[string]map[string]RuntimeHintDetails

	noSmithyDocumentSerde
}

// Provides the phrase that Amazon Lex V2 should look for in the user's input to
// the bot.
type RuntimeHintValue struct {

	// The phrase that Amazon Lex V2 should look for in the user's input to the bot.
	//
	// This member is required.
	Phrase *string

	noSmithyDocumentSerde
}

// Provides information about the sentiment expressed in a user's response in a
// conversation. Sentiments are determined using Amazon Comprehend. Sentiments are
// only returned if they are enabled for the bot. For more information, see
// Determine Sentiment
// (https://docs.aws.amazon.com/comprehend/latest/dg/how-sentiment.html) in the
// Amazon Comprehend developer guide.
type SentimentResponse struct {

	// The overall sentiment expressed in the user's response. This is the sentiment
	// most likely expressed by the user based on the analysis by Amazon Comprehend.
	Sentiment SentimentType

	// The individual sentiment responses for the utterance.
	SentimentScore *SentimentScore

	noSmithyDocumentSerde
}

// The individual sentiment responses for the utterance.
type SentimentScore struct {

	// The level of confidence that Amazon Comprehend has in the accuracy of its
	// detection of the MIXED sentiment.
	Mixed float64

	// The level of confidence that Amazon Comprehend has in the accuracy of its
	// detection of the NEGATIVE sentiment.
	Negative float64

	// The level of confidence that Amazon Comprehend has in the accuracy of its
	// detection of the NEUTRAL sentiment.
	Neutral float64

	// The level of confidence that Amazon Comprehend has in the accuracy of its
	// detection of the POSITIVE sentiment.
	Positive float64

	noSmithyDocumentSerde
}

// The state of the user's session with Amazon Lex V2.
type SessionState struct {

	// 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.
	ActiveContexts []ActiveContext

	// The next step that Amazon Lex V2 should take in the conversation with a user.
	DialogAction *DialogAction

	// The active intent that Amazon Lex V2 is processing.
	Intent *Intent

	// A unique identifier for a specific request.
	OriginatingRequestId *string

	// 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.
	RuntimeHints *RuntimeHints

	// Map of key/value pairs representing session-specific context information. It
	// contains application information passed between Amazon Lex V2 and a client
	// application.
	SessionAttributes map[string]string

	noSmithyDocumentSerde
}

// A value that Amazon Lex V2 uses to fulfill an intent.
type Slot struct {

	// When the shape value is List, it indicates that the values field contains a list
	// of slot values. When the value is Scalar, it indicates that the value field
	// contains a single value.
	Shape Shape

	// The constituent sub slots of a composite slot.
	SubSlots map[string]Slot

	// The current value of the slot.
	Value *Value

	// A list of one or more values that the user provided for the slot. For example,
	// if a for a slot that elicits pizza toppings, the values might be "pepperoni" and
	// "pineapple."
	Values []Slot

	noSmithyDocumentSerde
}

// Represents a stream of events between your application and Amazon Lex V2.
//
// The following types satisfy this interface:
//
//	StartConversationRequestEventStreamMemberAudioInputEvent
//	StartConversationRequestEventStreamMemberConfigurationEvent
//	StartConversationRequestEventStreamMemberDisconnectionEvent
//	StartConversationRequestEventStreamMemberDTMFInputEvent
//	StartConversationRequestEventStreamMemberPlaybackCompletionEvent
//	StartConversationRequestEventStreamMemberTextInputEvent
type StartConversationRequestEventStream interface {
	isStartConversationRequestEventStream()
}

// Speech audio sent from your client application to Amazon Lex V2. Audio starts
// accumulating when Amazon Lex V2 identifies a voice and continues until a natural
// pause in the speech is found before processing.
type StartConversationRequestEventStreamMemberAudioInputEvent struct {
	Value AudioInputEvent

	noSmithyDocumentSerde
}

func (*StartConversationRequestEventStreamMemberAudioInputEvent) isStartConversationRequestEventStream() {
}

// Configuration information sent from your client application to Amazon Lex V2
type StartConversationRequestEventStreamMemberConfigurationEvent struct {
	Value ConfigurationEvent

	noSmithyDocumentSerde
}

func (*StartConversationRequestEventStreamMemberConfigurationEvent) isStartConversationRequestEventStream() {
}

// Event sent from the client application to indicate to Amazon Lex V2 that the
// conversation is over.
type StartConversationRequestEventStreamMemberDisconnectionEvent struct {
	Value DisconnectionEvent

	noSmithyDocumentSerde
}

func (*StartConversationRequestEventStreamMemberDisconnectionEvent) isStartConversationRequestEventStream() {
}

// DTMF information sent to Amazon Lex V2 by your application. Amazon Lex V2
// accumulates the DMTF information from when the user sends the first character
// and ends
//
// * when there's a pause longer that the value configured for the end
// timeout.
//
// * when there's a digit that is the configured end character.
//
// * when
// Amazon Lex V2 accumulates characters equal to the maximum DTMF character
// configuration.
type StartConversationRequestEventStreamMemberDTMFInputEvent struct {
	Value DTMFInputEvent

	noSmithyDocumentSerde
}

func (*StartConversationRequestEventStreamMemberDTMFInputEvent) isStartConversationRequestEventStream() {
}

// Event sent from the client application to Amazon Lex V2 to indicate that it has
// finished playing audio and that Amazon Lex V2 should start listening for user
// input.
type StartConversationRequestEventStreamMemberPlaybackCompletionEvent struct {
	Value PlaybackCompletionEvent

	noSmithyDocumentSerde
}

func (*StartConversationRequestEventStreamMemberPlaybackCompletionEvent) isStartConversationRequestEventStream() {
}

// Text sent from your client application to Amazon Lex V2. Each TextInputEvent is
// processed individually.
type StartConversationRequestEventStreamMemberTextInputEvent struct {
	Value TextInputEvent

	noSmithyDocumentSerde
}

func (*StartConversationRequestEventStreamMemberTextInputEvent) isStartConversationRequestEventStream() {
}

// Represents a stream of events between Amazon Lex V2 and your application.
//
// The following types satisfy this interface:
//
//	StartConversationResponseEventStreamMemberAudioResponseEvent
//	StartConversationResponseEventStreamMemberHeartbeatEvent
//	StartConversationResponseEventStreamMemberIntentResultEvent
//	StartConversationResponseEventStreamMemberPlaybackInterruptionEvent
//	StartConversationResponseEventStreamMemberTextResponseEvent
//	StartConversationResponseEventStreamMemberTranscriptEvent
type StartConversationResponseEventStream interface {
	isStartConversationResponseEventStream()
}

// An event sent from Amazon Lex V2 to your client application containing audio to
// play to the user.
type StartConversationResponseEventStreamMemberAudioResponseEvent struct {
	Value AudioResponseEvent

	noSmithyDocumentSerde
}

func (*StartConversationResponseEventStreamMemberAudioResponseEvent) isStartConversationResponseEventStream() {
}

// Event that Amazon Lex V2 sends to indicate that the stream is still open between
// the client application and Amazon Lex V2
type StartConversationResponseEventStreamMemberHeartbeatEvent struct {
	Value HeartbeatEvent

	noSmithyDocumentSerde
}

func (*StartConversationResponseEventStreamMemberHeartbeatEvent) isStartConversationResponseEventStream() {
}

// Event sent from Amazon Lex V2 to the client application containing the current
// state of the conversation between the user and Amazon Lex V2.
type StartConversationResponseEventStreamMemberIntentResultEvent struct {
	Value IntentResultEvent

	noSmithyDocumentSerde
}

func (*StartConversationResponseEventStreamMemberIntentResultEvent) isStartConversationResponseEventStream() {
}

// Event sent from Amazon Lex V2 to indicate to the client application should stop
// playback of audio. For example, if the client is playing a prompt that asks for
// the user's telephone number, the user might start to say the phone number before
// the prompt is complete. Amazon Lex V2 sends this event to the client application
// to indicate that the user is responding and that Amazon Lex V2 is processing
// their input.
type StartConversationResponseEventStreamMemberPlaybackInterruptionEvent struct {
	Value PlaybackInterruptionEvent

	noSmithyDocumentSerde
}

func (*StartConversationResponseEventStreamMemberPlaybackInterruptionEvent) isStartConversationResponseEventStream() {
}

// The event sent from Amazon Lex V2 to your application with text to present to
// the user.
type StartConversationResponseEventStreamMemberTextResponseEvent struct {
	Value TextResponseEvent

	noSmithyDocumentSerde
}

func (*StartConversationResponseEventStreamMemberTextResponseEvent) isStartConversationResponseEventStream() {
}

// Event sent from Amazon Lex V2 to your client application that contains a
// transcript of voice audio.
type StartConversationResponseEventStreamMemberTranscriptEvent struct {
	Value TranscriptEvent

	noSmithyDocumentSerde
}

func (*StartConversationResponseEventStreamMemberTranscriptEvent) isStartConversationResponseEventStream() {
}

// The event sent from your client application to Amazon Lex V2 with text input
// from the user.
type TextInputEvent struct {

	// The text from the user. Amazon Lex V2 processes this as a complete statement.
	//
	// This member is required.
	Text *string

	// A timestamp set by the client of the date and time that the event was sent to
	// Amazon Lex V2.
	ClientTimestampMillis int64

	// A unique identifier that your application assigns to the event. You can use this
	// to identify events in logs.
	EventId *string

	noSmithyDocumentSerde
}

// The event sent from Amazon Lex V2 to your application with text to present to
// the user.
type TextResponseEvent struct {

	// A unique identifier of the event sent by Amazon Lex V2. The identifier is in the
	// form RESPONSE-N, where N is a number starting with one and incremented for each
	// event sent by Amazon Lex V2 in the current session.
	EventId *string

	// A list of messages to send to the user. Messages are ordered based on the order
	// that you returned the messages from your Lambda function or the order that the
	// messages are defined in the bot.
	Messages []Message

	noSmithyDocumentSerde
}

// Event sent from Amazon Lex V2 to your client application that contains a
// transcript of voice audio.
type TranscriptEvent struct {

	// A unique identifier of the event sent by Amazon Lex V2. The identifier is in the
	// form RESPONSE-N, where N is a number starting with one and incremented for each
	// event sent by Amazon Lex V2 in the current session.
	EventId *string

	// The transcript of the voice audio from the user.
	Transcript *string

	noSmithyDocumentSerde
}

// The value of a slot.
type Value struct {

	// The value that Amazon Lex V2 determines for the slot. The actual value depends
	// on the setting of the value selection strategy for the bot. You can choose to
	// use the value entered by the user, or you can have Amazon Lex V2 choose the
	// first value in the resolvedValues list.
	//
	// This member is required.
	InterpretedValue *string

	// The text of the utterance from the user that was entered for the slot.
	OriginalValue *string

	// A list of additional values that have been recognized for the slot.
	ResolvedValues []string

	noSmithyDocumentSerde
}

type noSmithyDocumentSerde = smithydocument.NoSerde

// UnknownUnionMember is returned when a union member is returned over the wire,
// but has an unknown tag.
type UnknownUnionMember struct {
	Tag   string
	Value []byte

	noSmithyDocumentSerde
}

func (*UnknownUnionMember) isStartConversationRequestEventStream()  {}
func (*UnknownUnionMember) isStartConversationResponseEventStream() {}
