UNPKG

@aws-sdk/client-lex-runtime-service

Version:

AWS SDK for JavaScript Lex Runtime Service Client for Node.js, Browser and React Native

1,165 lines 65.9 kB
import { AutomaticJsonStringConversion as __AutomaticJsonStringConversion } from "@smithy/smithy-client"; import { StreamingBlobTypes } from "@smithy/types"; import { ConfirmationStatus, ContentType, DialogActionType, DialogState, FulfillmentState, MessageFormatType } from "./enums"; /** * <p>The length of time or number of turns that a context remains * active.</p> * @public */ export interface ActiveContextTimeToLive { /** * <p>The number of seconds that the context should be active after it is * first sent in a <code>PostContent</code> or <code>PostText</code> * response. You can set the value between 5 and 86,400 seconds (24 * hours).</p> * @public */ timeToLiveInSeconds?: number | undefined; /** * <p>The number of conversation turns that the context should be active. A * conversation turn is one <code>PostContent</code> or <code>PostText</code> * request and the corresponding response from Amazon Lex.</p> * @public */ turnsToLive?: number | undefined; } /** * <p>A context is a variable that contains information about the current * state of the conversation between a user and Amazon Lex. Context can be set * automatically by Amazon Lex when an intent is fulfilled, or it can be set at * runtime using the <code>PutContent</code>, <code>PutText</code>, or * <code>PutSession</code> operation.</p> * @public */ export interface ActiveContext { /** * <p>The name of the context.</p> * @public */ name: string | undefined; /** * <p>The length of time or number of turns that a context remains * active.</p> * @public */ timeToLive: ActiveContextTimeToLive | undefined; /** * <p>State variables for the current context. You can use these values as * default values for slots in subsequent events.</p> * @public */ parameters: Record<string, string> | undefined; } /** * @public */ export interface DeleteSessionRequest { /** * <p>The name of the bot that contains the session data.</p> * @public */ botName: string | undefined; /** * <p>The alias in use for the bot that contains the session data.</p> * @public */ botAlias: string | undefined; /** * <p>The identifier of the user associated with the session data.</p> * @public */ userId: string | undefined; } /** * @public */ export interface DeleteSessionResponse { /** * <p>The name of the bot associated with the session data.</p> * @public */ botName?: string | undefined; /** * <p>The alias in use for the bot associated with the session data.</p> * @public */ botAlias?: string | undefined; /** * <p>The ID of the client application user.</p> * @public */ userId?: string | undefined; /** * <p>The unique identifier for the session.</p> * @public */ sessionId?: string | undefined; } /** * @public */ export interface GetSessionRequest { /** * <p>The name of the bot that contains the session data.</p> * @public */ botName: string | undefined; /** * <p>The alias in use for the bot that contains the session data.</p> * @public */ botAlias: string | undefined; /** * <p>The ID of the client application user. Amazon Lex uses this to identify a * user's conversation with your bot. </p> * @public */ userId: string | undefined; /** * <p>A string used to filter the intents returned in the * <code>recentIntentSummaryView</code> structure. </p> * <p>When you specify a filter, only intents with their * <code>checkpointLabel</code> field set to that string are * returned.</p> * @public */ checkpointLabelFilter?: string | undefined; } /** * <p>Describes the next action that the bot should take in its interaction * with the user and provides information about the context in which the * action takes place. Use the <code>DialogAction</code> data type to set the * interaction to a specific state, or to return the interaction to a * previous state.</p> * @public */ export interface DialogAction { /** * <p>The next action that the bot should take in its interaction with the * user. The possible values are:</p> * <ul> * <li> * <p> * <code>ConfirmIntent</code> - 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?"</p> * </li> * <li> * <p> * <code>Close</code> - Indicates that the there will not be a * response from the user. For example, the statement "Your order has * been placed" does not require a response.</p> * </li> * <li> * <p> * <code>Delegate</code> - The next action is determined by * Amazon Lex.</p> * </li> * <li> * <p> * <code>ElicitIntent</code> - The next action is to determine the * intent that the user wants to fulfill.</p> * </li> * <li> * <p> * <code>ElicitSlot</code> - The next action is to elicit a slot * value from the user.</p> * </li> * </ul> * @public */ type: DialogActionType | undefined; /** * <p>The name of the intent.</p> * @public */ intentName?: string | undefined; /** * <p>Map of the slots that have been gathered and their values. </p> * @public */ slots?: Record<string, string> | undefined; /** * <p>The name of the slot that should be elicited from the user.</p> * @public */ slotToElicit?: string | undefined; /** * <p>The fulfillment state of the intent. The possible values are:</p> * <ul> * <li> * <p> * <code>Failed</code> - The Lambda function associated with the * intent failed to fulfill the intent.</p> * </li> * <li> * <p> * <code>Fulfilled</code> - The intent has fulfilled by the Lambda * function associated with the intent. </p> * </li> * <li> * <p> * <code>ReadyForFulfillment</code> - All of the information * necessary for the intent is present and the intent ready to be * fulfilled by the client application.</p> * </li> * </ul> * @public */ fulfillmentState?: FulfillmentState | undefined; /** * <p>The message that should be shown to the user. If you don't specify a * message, Amazon Lex will use the message configured for the intent.</p> * @public */ message?: string | undefined; /** * <ul> * <li> * <p> * <code>PlainText</code> - The message contains plain UTF-8 * text.</p> * </li> * <li> * <p> * <code>CustomPayload</code> - The message is a custom format for * the client.</p> * </li> * <li> * <p> * <code>SSML</code> - The message contains text formatted for voice * output.</p> * </li> * <li> * <p> * <code>Composite</code> - The message contains an escaped JSON * object containing one or more messages. For more information, see * <a href="https://docs.aws.amazon.com/lex/latest/dg/howitworks-manage-prompts.html">Message Groups</a>. </p> * </li> * </ul> * @public */ messageFormat?: MessageFormatType | undefined; } /** * <p>Provides information about the state of an intent. You can use this * information to get the current state of an intent so that you can process * the intent, or so that you can return the intent to its previous * state.</p> * @public */ export interface IntentSummary { /** * <p>The name of the intent.</p> * @public */ intentName?: string | undefined; /** * <p>A user-defined label that identifies a particular intent. You can use * this label to return to a previous intent. </p> * <p>Use the <code>checkpointLabelFilter</code> parameter of the * <code>GetSessionRequest</code> operation to filter the intents returned * by the operation to those with only the specified label.</p> * @public */ checkpointLabel?: string | undefined; /** * <p>Map of the slots that have been gathered and their values. </p> * @public */ slots?: Record<string, string> | undefined; /** * <p>The status of the intent after the user responds to the confirmation * prompt. If the user confirms the intent, Amazon Lex sets this field to * <code>Confirmed</code>. If the user denies the intent, Amazon Lex sets this * value to <code>Denied</code>. The possible values are:</p> * <ul> * <li> * <p> * <code>Confirmed</code> - The user has responded "Yes" to the * confirmation prompt, confirming that the intent is complete and that * it is ready to be fulfilled.</p> * </li> * <li> * <p> * <code>Denied</code> - The user has responded "No" to the * confirmation prompt.</p> * </li> * <li> * <p> * <code>None</code> - The user has never been prompted for * confirmation; or, the user was prompted but did not confirm or deny * the prompt.</p> * </li> * </ul> * @public */ confirmationStatus?: ConfirmationStatus | undefined; /** * <p>The next action that the bot should take in its interaction with the * user. The possible values are:</p> * <ul> * <li> * <p> * <code>ConfirmIntent</code> - 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?"</p> * </li> * <li> * <p> * <code>Close</code> - Indicates that the there will not be a * response from the user. For example, the statement "Your order has * been placed" does not require a response.</p> * </li> * <li> * <p> * <code>ElicitIntent</code> - The next action is to determine the * intent that the user wants to fulfill.</p> * </li> * <li> * <p> * <code>ElicitSlot</code> - The next action is to elicit a slot * value from the user.</p> * </li> * </ul> * @public */ dialogActionType: DialogActionType | undefined; /** * <p>The fulfillment state of the intent. The possible values are:</p> * <ul> * <li> * <p> * <code>Failed</code> - The Lambda function associated with the * intent failed to fulfill the intent.</p> * </li> * <li> * <p> * <code>Fulfilled</code> - The intent has fulfilled by the Lambda * function associated with the intent. </p> * </li> * <li> * <p> * <code>ReadyForFulfillment</code> - All of the information * necessary for the intent is present and the intent ready to be * fulfilled by the client application.</p> * </li> * </ul> * @public */ fulfillmentState?: FulfillmentState | undefined; /** * <p>The next slot to elicit from the user. If there is not slot to elicit, * the field is blank.</p> * @public */ slotToElicit?: string | undefined; } /** * @public */ export interface GetSessionResponse { /** * <p>An array of information about the intents used in the session. The * array can contain a maximum of three summaries. If more than three intents * are used in the session, the <code>recentIntentSummaryView</code> * operation contains information about the last three intents used.</p> * <p>If you set the <code>checkpointLabelFilter</code> parameter in the * request, the array contains only the intents with the specified * label.</p> * @public */ recentIntentSummaryView?: IntentSummary[] | undefined; /** * <p>Map of key/value pairs representing the session-specific context * information. It contains application information passed between Amazon Lex and * a client application.</p> * @public */ sessionAttributes?: Record<string, string> | undefined; /** * <p>A unique identifier for the session.</p> * @public */ sessionId?: string | undefined; /** * <p>Describes the current state of the bot.</p> * @public */ dialogAction?: DialogAction | undefined; /** * <p>A list of active contexts for the session. A context can be set when * an intent is fulfilled or by calling the <code>PostContent</code>, * <code>PostText</code>, or <code>PutSession</code> operation.</p> * <p>You can use a context to control the intents that can follow up an * intent, or to modify the operation of your application.</p> * @public */ activeContexts?: ActiveContext[] | undefined; } /** * @public */ export interface PostContentRequest { /** * <p>Name of the Amazon Lex bot.</p> * @public */ botName: string | undefined; /** * <p>Alias of the Amazon Lex bot.</p> * @public */ botAlias: string | undefined; /** * <p>The ID of the client application user. Amazon Lex uses this to identify a * user's conversation with your bot. At runtime, each request must contain * the <code>userID</code> field.</p> * <p>To decide the user ID to use for your application, consider the * following factors.</p> * <ul> * <li> * <p>The <code>userID</code> field must not contain any personally * identifiable information of the user, for example, name, personal * identification numbers, or other end user personal information.</p> * </li> * <li> * <p>If you want a user to start a conversation on one device and * continue on another device, use a user-specific identifier.</p> * </li> * <li> * <p>If you want the same user to be able to have two independent * conversations on two different devices, choose a device-specific * identifier.</p> * </li> * <li> * <p>A user can't have two independent conversations with two different * versions of the same bot. For example, a user can't have a * conversation with the PROD and BETA versions of the same bot. If you * anticipate that a user will need to have conversation with two * different versions, for example, while testing, include the bot alias * in the user ID to separate the two conversations.</p> * </li> * </ul> * @public */ userId: string | undefined; /** * <p>You pass this value as the <code>x-amz-lex-session-attributes</code> * HTTP header.</p> * <p>Application-specific information passed between Amazon Lex and a client * application. The value must be a JSON serialized and base64 encoded map * with string keys and values. The total size of the * <code>sessionAttributes</code> and <code>requestAttributes</code> * headers is limited to 12 KB.</p> * <p>For more information, see <a href="https://docs.aws.amazon.com/lex/latest/dg/context-mgmt.html#context-mgmt-session-attribs">Setting Session Attributes</a>.</p> * @public */ sessionAttributes?: __AutomaticJsonStringConversion | string | undefined; /** * <p>You pass this value as the <code>x-amz-lex-request-attributes</code> * HTTP header.</p> * <p>Request-specific information passed between Amazon Lex and a client * application. The value must be a JSON serialized and base64 encoded map * with string keys and values. The total size of the * <code>requestAttributes</code> and <code>sessionAttributes</code> * headers is limited to 12 KB.</p> * <p>The namespace <code>x-amz-lex:</code> is reserved for special * attributes. Don't create any request attributes with the prefix * <code>x-amz-lex:</code>.</p> * <p>For more information, see <a href="https://docs.aws.amazon.com/lex/latest/dg/context-mgmt.html#context-mgmt-request-attribs">Setting Request Attributes</a>.</p> * @public */ requestAttributes?: __AutomaticJsonStringConversion | string | undefined; /** * <p> You pass this value as the <code>Content-Type</code> HTTP header. </p> * <p> Indicates the audio format or text. The header value must start with * one of the following prefixes: </p> * <ul> * <li> * <p>PCM format, audio data must be in little-endian byte order.</p> * <ul> * <li> * <p>audio/l16; rate=16000; channels=1</p> * </li> * <li> * <p>audio/x-l16; sample-rate=16000; channel-count=1</p> * </li> * <li> * <p>audio/lpcm; sample-rate=8000; sample-size-bits=16; * channel-count=1; is-big-endian=false </p> * </li> * </ul> * </li> * <li> * <p>Opus format</p> * <ul> * <li> * <p>audio/x-cbr-opus-with-preamble; preamble-size=0; * bit-rate=256000; frame-size-milliseconds=4</p> * </li> * </ul> * </li> * <li> * <p>Text format</p> * <ul> * <li> * <p>text/plain; charset=utf-8</p> * </li> * </ul> * </li> * </ul> * @public */ contentType: string | undefined; /** * <p> You pass this value as the <code>Accept</code> HTTP header. </p> * <p> The message Amazon Lex returns in the response can be either text or * speech based on the <code>Accept</code> HTTP header value in the request. </p> * <ul> * <li> * <p> If the value is <code>text/plain; charset=utf-8</code>, Amazon Lex * returns text in the response. </p> * </li> * <li> * <p> If the value begins with <code>audio/</code>, Amazon Lex returns * speech in the response. Amazon Lex uses Amazon Polly to generate the speech * (using the configuration you specified in the <code>Accept</code> * header). For example, if you specify <code>audio/mpeg</code> as the * value, Amazon Lex returns speech in the MPEG format.</p> * </li> * <li> * <p>If the value is <code>audio/pcm</code>, the speech returned is * <code>audio/pcm</code> in 16-bit, little endian format. * </p> * </li> * <li> * <p>The following are the accepted values:</p> * <ul> * <li> * <p>audio/mpeg</p> * </li> * <li> * <p>audio/ogg</p> * </li> * <li> * <p>audio/pcm</p> * </li> * <li> * <p>text/plain; charset=utf-8</p> * </li> * <li> * <p>audio/* (defaults to mpeg)</p> * </li> * </ul> * </li> * </ul> * @public */ accept?: string | undefined; /** * <p> User input in PCM or Opus audio format or text format as described in * the <code>Content-Type</code> HTTP header. </p> * <p>You can stream audio data to Amazon Lex or you can create a local buffer * that captures all of the audio data before sending. In general, you get * better performance if you stream audio data rather than buffering the data * locally.</p> * @public */ inputStream: StreamingBlobTypes | undefined; /** * <p>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,</p> * <p>If you don't specify a list of contexts, Amazon Lex will use the current * list of contexts for the session. If you specify an empty list, all * contexts for the session are cleared.</p> * @public */ activeContexts?: __AutomaticJsonStringConversion | string | undefined; } /** * @public */ export interface PostContentResponse { /** * <p>Content type as specified in the <code>Accept</code> HTTP header in * the request.</p> * @public */ contentType?: string | undefined; /** * <p>Current user intent that Amazon Lex is aware of.</p> * @public */ intentName?: string | undefined; /** * <p>Provides a score that indicates how confident Amazon Lex is that the * returned intent is the one that matches the user's intent. The score is * between 0.0 and 1.0.</p> * <p>The score is a relative score, not an absolute score. The score may * change based on improvements to Amazon Lex. </p> * @public */ nluIntentConfidence?: __AutomaticJsonStringConversion | string | undefined; /** * <p>One to four alternative intents that may be applicable to the user's * intent.</p> * <p>Each alternative includes a score that indicates how confident Amazon Lex * is that the intent matches the user's intent. The intents are sorted by * the confidence score.</p> * @public */ alternativeIntents?: __AutomaticJsonStringConversion | string | undefined; /** * <p>Map of zero or more intent slots (name/value pairs) Amazon Lex detected * from the user input during the conversation. The field is base-64 * encoded.</p> * <p>Amazon Lex creates a resolution list containing likely values for a slot. * The value that it returns is determined by the * <code>valueSelectionStrategy</code> selected when the slot type was * created or updated. If <code>valueSelectionStrategy</code> is set to * <code>ORIGINAL_VALUE</code>, the value provided by the user is returned, * if the user value is similar to the slot values. If * <code>valueSelectionStrategy</code> is set to * <code>TOP_RESOLUTION</code> Amazon Lex returns the first value in the * resolution list or, if there is no resolution list, null. If you don't * specify a <code>valueSelectionStrategy</code>, the default is * <code>ORIGINAL_VALUE</code>.</p> * @public */ slots?: __AutomaticJsonStringConversion | string | undefined; /** * <p> Map of key/value pairs representing the session-specific context * information. </p> * @public */ sessionAttributes?: __AutomaticJsonStringConversion | string | undefined; /** * <p>The sentiment expressed in an utterance.</p> * <p>When the bot is configured to send utterances to Amazon Comprehend for * sentiment analysis, this field contains the result of the analysis.</p> * @public */ sentimentResponse?: string | undefined; /** * <p>You can only use this field in the de-DE, en-AU, en-GB, en-US, es-419, * es-ES, es-US, fr-CA, fr-FR, and it-IT locales. In all other locales, the * <code>message</code> field is null. You should use the * <code>encodedMessage</code> field instead.</p> * <p>The message to convey to the user. The message can come from the bot's * configuration or from a Lambda function.</p> * <p>If the intent is not configured with a Lambda function, or if the Lambda * function returned <code>Delegate</code> as the * <code>dialogAction.type</code> in its response, Amazon Lex decides on the * next course of action and selects an appropriate message from the bot's * configuration based on the current interaction context. For example, if * Amazon Lex isn't able to understand user input, it uses a clarification prompt * message.</p> * <p>When you create an intent you can assign messages to groups. When * messages are assigned to groups Amazon Lex returns one message from each group * in the response. The message field is an escaped JSON string containing * the messages. For more information about the structure of the JSON string * returned, see <a>msg-prompts-formats</a>.</p> * <p>If the Lambda function returns a message, Amazon Lex passes it to the client * in its response.</p> * * @deprecated The message field is deprecated, use the encodedMessage field instead. The message field is available only in the de-DE, en-AU, en-GB, en-US, es-419, es-ES, es-US, fr-CA, fr-FR and it-IT locales. * @public */ message?: string | undefined; /** * <p>The message to convey to the user. The message can come from the bot's * configuration or from a Lambda function.</p> * <p>If the intent is not configured with a Lambda function, or if the Lambda * function returned <code>Delegate</code> as the * <code>dialogAction.type</code> in its response, Amazon Lex decides on the * next course of action and selects an appropriate message from the bot's * configuration based on the current interaction context. For example, if * Amazon Lex isn't able to understand user input, it uses a clarification prompt * message.</p> * <p>When you create an intent you can assign messages to groups. When * messages are assigned to groups Amazon Lex returns one message from each group * in the response. The message field is an escaped JSON string containing * the messages. For more information about the structure of the JSON string * returned, see <a>msg-prompts-formats</a>.</p> * <p>If the Lambda function returns a message, Amazon Lex passes it to the client * in its response.</p> * <p>The <code>encodedMessage</code> field is base-64 encoded. You must * decode the field before you can use the value.</p> * @public */ encodedMessage?: string | undefined; /** * <p>The format of the response message. One of the following * values:</p> * <ul> * <li> * <p> * <code>PlainText</code> - The message contains plain UTF-8 * text.</p> * </li> * <li> * <p> * <code>CustomPayload</code> - The message is a custom format for * the client.</p> * </li> * <li> * <p> * <code>SSML</code> - The message contains text formatted for voice * output.</p> * </li> * <li> * <p> * <code>Composite</code> - The message contains an escaped JSON * object containing one or more messages from the groups that messages * were assigned to when the intent was created.</p> * </li> * </ul> * @public */ messageFormat?: MessageFormatType | undefined; /** * <p>Identifies the current state of the user interaction. Amazon Lex returns * one of the following values as <code>dialogState</code>. The client can * optionally use this information to customize the user interface. </p> * <ul> * <li> * <p> * <code>ElicitIntent</code> - Amazon Lex wants to elicit the user's intent. * Consider the following examples: </p> * <p> For example, a user might utter an intent ("I want to order a * pizza"). If Amazon Lex cannot infer the user intent from this utterance, it * will return this dialog state. </p> * </li> * <li> * <p> * <code>ConfirmIntent</code> - Amazon Lex is expecting a "yes" or "no" * response. </p> * <p>For example, Amazon Lex wants user confirmation before fulfilling an * intent. Instead of a simple "yes" or "no" response, a user might * respond with additional information. For example, "yes, but make it a * thick crust pizza" or "no, I want to order a drink." Amazon Lex can process * such additional information (in these examples, update the crust type * slot or change the intent from OrderPizza to OrderDrink). </p> * </li> * <li> * <p> * <code>ElicitSlot</code> - Amazon Lex is expecting the value of a slot for * the current intent. </p> * <p> For example, suppose that in the response Amazon Lex sends this * message: "What size pizza would you like?". A user might reply with * the slot value (e.g., "medium"). The user might also provide * additional information in the response (e.g., "medium thick crust * pizza"). Amazon Lex can process such additional information appropriately. * </p> * </li> * <li> * <p> * <code>Fulfilled</code> - Conveys that the Lambda function has * successfully fulfilled the intent. </p> * </li> * <li> * <p> * <code>ReadyForFulfillment</code> - Conveys that the client has to * fulfill the request. </p> * </li> * <li> * <p> * <code>Failed</code> - Conveys that the conversation with the user * failed. </p> * <p> This can happen for various reasons, including that the user does * not provide an appropriate response to prompts from the service (you * can configure how many times Amazon Lex can prompt a user for specific * information), or if the Lambda function fails to fulfill the intent. * </p> * </li> * </ul> * @public */ dialogState?: DialogState | undefined; /** * <p> If the <code>dialogState</code> value is <code>ElicitSlot</code>, * returns the name of the slot for which Amazon Lex is eliciting a value. </p> * @public */ slotToElicit?: string | undefined; /** * <p>The text used to process the request.</p> * <p>You can use this field only in the de-DE, en-AU, en-GB, en-US, es-419, * es-ES, es-US, fr-CA, fr-FR, and it-IT locales. In all other locales, the * <code>inputTranscript</code> field is null. You should use the * <code>encodedInputTranscript</code> field instead.</p> * <p>If the input was an audio stream, the <code>inputTranscript</code> * field contains the text extracted from the audio stream. This is the text * that is actually processed to recognize intents and slot values. You can * use this information to determine if Amazon Lex is correctly processing the * audio that you send.</p> * * @deprecated The inputTranscript field is deprecated, use the encodedInputTranscript field instead. The inputTranscript field is available only in the de-DE, en-AU, en-GB, en-US, es-419, es-ES, es-US, fr-CA, fr-FR and it-IT locales. * @public */ inputTranscript?: string | undefined; /** * <p>The text used to process the request.</p> * <p>If the input was an audio stream, the * <code>encodedInputTranscript</code> field contains the text extracted * from the audio stream. This is the text that is actually processed to * recognize intents and slot values. You can use this information to * determine if Amazon Lex is correctly processing the audio that you send.</p> * <p>The <code>encodedInputTranscript</code> field is base-64 encoded. You must * decode the field before you can use the value.</p> * @public */ encodedInputTranscript?: string | undefined; /** * <p>The prompt (or statement) to convey to the user. This is based on the * bot configuration and context. For example, if Amazon Lex did not understand * the user intent, it sends the <code>clarificationPrompt</code> configured * for the bot. If the intent requires confirmation before taking the * fulfillment action, it sends the <code>confirmationPrompt</code>. Another * example: Suppose that the Lambda function successfully fulfilled the * intent, and sent a message to convey to the user. Then Amazon Lex sends that * message in the response. </p> * @public */ audioStream?: StreamingBlobTypes | undefined; /** * <p>The version of the bot that responded to the conversation. You can use * this information to help determine if one version of a bot is performing * better than another version.</p> * @public */ botVersion?: string | undefined; /** * <p>The unique identifier for the session.</p> * @public */ sessionId?: string | undefined; /** * <p>A list of active contexts for the session. A context can be set when * an intent is fulfilled or by calling the <code>PostContent</code>, * <code>PostText</code>, or <code>PutSession</code> operation.</p> * <p>You can use a context to control the intents that can follow up an * intent, or to modify the operation of your application.</p> * @public */ activeContexts?: __AutomaticJsonStringConversion | string | undefined; } /** * @public */ export interface PostTextRequest { /** * <p>The name of the Amazon Lex bot.</p> * @public */ botName: string | undefined; /** * <p>The alias of the Amazon Lex bot.</p> * @public */ botAlias: string | undefined; /** * <p>The ID of the client application user. Amazon Lex uses this to identify a * user's conversation with your bot. At runtime, each request must contain * the <code>userID</code> field.</p> * <p>To decide the user ID to use for your application, consider the * following factors.</p> * <ul> * <li> * <p>The <code>userID</code> field must not contain any personally * identifiable information of the user, for example, name, personal * identification numbers, or other end user personal information.</p> * </li> * <li> * <p>If you want a user to start a conversation on one device and * continue on another device, use a user-specific identifier.</p> * </li> * <li> * <p>If you want the same user to be able to have two independent * conversations on two different devices, choose a device-specific * identifier.</p> * </li> * <li> * <p>A user can't have two independent conversations with two different * versions of the same bot. For example, a user can't have a * conversation with the PROD and BETA versions of the same bot. If you * anticipate that a user will need to have conversation with two * different versions, for example, while testing, include the bot alias * in the user ID to separate the two conversations.</p> * </li> * </ul> * @public */ userId: string | undefined; /** * <p>Application-specific information passed between Amazon Lex and a client * application.</p> * <p>For more information, see <a href="https://docs.aws.amazon.com/lex/latest/dg/context-mgmt.html#context-mgmt-session-attribs">Setting Session Attributes</a>.</p> * @public */ sessionAttributes?: Record<string, string> | undefined; /** * <p>Request-specific information passed between Amazon Lex and a client * application.</p> * <p>The namespace <code>x-amz-lex:</code> is reserved for special * attributes. Don't create any request attributes with the prefix * <code>x-amz-lex:</code>.</p> * <p>For more information, see <a href="https://docs.aws.amazon.com/lex/latest/dg/context-mgmt.html#context-mgmt-request-attribs">Setting Request Attributes</a>.</p> * @public */ requestAttributes?: Record<string, string> | undefined; /** * <p>The text that the user entered (Amazon Lex interprets this text).</p> * @public */ inputText: string | undefined; /** * <p>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,</p> * <p>If you don't specify a list of contexts, Amazon Lex will use the current * list of contexts for the session. If you specify an empty list, all * contexts for the session are cleared.</p> * @public */ activeContexts?: ActiveContext[] | undefined; } /** * <p>Provides a score that indicates the confidence that Amazon Lex has that an * intent is the one that satisfies the user's intent.</p> * @public */ export interface IntentConfidence { /** * <p>A score that indicates how confident Amazon Lex is that an intent satisfies * the user's intent. Ranges between 0.00 and 1.00. Higher scores indicate * higher confidence.</p> * @public */ score?: number | undefined; } /** * <p>An intent that Amazon Lex suggests satisfies the user's intent. Includes * the name of the intent, the confidence that Amazon Lex has that the user's * intent is satisfied, and the slots defined for the intent.</p> * @public */ export interface PredictedIntent { /** * <p>The name of the intent that Amazon Lex suggests satisfies the user's * intent.</p> * @public */ intentName?: string | undefined; /** * <p>Indicates how confident Amazon Lex is that an intent satisfies the user's * intent.</p> * @public */ nluIntentConfidence?: IntentConfidence | undefined; /** * <p>The slot and slot values associated with the predicted intent.</p> * @public */ slots?: Record<string, string> | undefined; } /** * <p>Represents an option to be shown on the client platform (Facebook, * Slack, etc.)</p> * @public */ export interface Button { /** * <p>Text that is visible to the user on the button.</p> * @public */ text: string | undefined; /** * <p>The value sent to Amazon Lex when a user chooses the button. For * example, consider button text "NYC." When the user chooses the button, the * value sent can be "New York City."</p> * @public */ value: string | undefined; } /** * <p>Represents an option rendered to the user when a prompt is shown. It * could be an image, a button, a link, or text. </p> * @public */ export interface GenericAttachment { /** * <p>The title of the option.</p> * @public */ title?: string | undefined; /** * <p>The subtitle shown below the title.</p> * @public */ subTitle?: string | undefined; /** * <p>The URL of an attachment to the response card.</p> * @public */ attachmentLinkUrl?: string | undefined; /** * <p>The URL of an image that is displayed to the user.</p> * @public */ imageUrl?: string | undefined; /** * <p>The list of options to show to the user.</p> * @public */ buttons?: Button[] | undefined; } /** * <p>If you configure a response card when creating your bots, Amazon Lex * substitutes the session attributes and slot values that are available, and * then returns it. The response card can also come from a Lambda function ( * <code>dialogCodeHook</code> and <code>fulfillmentActivity</code> on an * intent).</p> * @public */ export interface ResponseCard { /** * <p>The version of the response card format.</p> * @public */ version?: string | undefined; /** * <p>The content type of the response.</p> * @public */ contentType?: ContentType | undefined; /** * <p>An array of attachment objects representing options.</p> * @public */ genericAttachments?: GenericAttachment[] | undefined; } /** * <p>The sentiment expressed in an utterance.</p> * <p>When the bot is configured to send utterances to Amazon Comprehend for * sentiment analysis, this field structure contains the result of the * analysis.</p> * @public */ export interface SentimentResponse { /** * <p>The inferred sentiment that Amazon Comprehend has the highest * confidence in.</p> * @public */ sentimentLabel?: string | undefined; /** * <p>The likelihood that the sentiment was correctly inferred.</p> * @public */ sentimentScore?: string | undefined; } /** * @public */ export interface PostTextResponse { /** * <p>The current user intent that Amazon Lex is aware of.</p> * @public */ intentName?: string | undefined; /** * <p>Provides a score that indicates how confident Amazon Lex is that the * returned intent is the one that matches the user's intent. The score is * between 0.0 and 1.0. For more information, see <a href="https://docs.aws.amazon.com/lex/latest/dg/confidence-scores.html">Confidence Scores</a>.</p> * <p>The score is a relative score, not an absolute score. The score may * change based on improvements to Amazon Lex.</p> * @public */ nluIntentConfidence?: IntentConfidence | undefined; /** * <p>One to four alternative intents that may be applicable to the user's * intent.</p> * <p>Each alternative includes a score that indicates how confident Amazon Lex * is that the intent matches the user's intent. The intents are sorted by * the confidence score.</p> * @public */ alternativeIntents?: PredictedIntent[] | undefined; /** * <p> The intent slots that Amazon Lex detected from the user input in the * conversation. </p> * <p>Amazon Lex creates a resolution list containing likely values for a slot. * The value that it returns is determined by the * <code>valueSelectionStrategy</code> selected when the slot type was * created or updated. If <code>valueSelectionStrategy</code> is set to * <code>ORIGINAL_VALUE</code>, the value provided by the user is returned, * if the user value is similar to the slot values. If * <code>valueSelectionStrategy</code> is set to * <code>TOP_RESOLUTION</code> Amazon Lex returns the first value in the * resolution list or, if there is no resolution list, null. If you don't * specify a <code>valueSelectionStrategy</code>, the default is * <code>ORIGINAL_VALUE</code>.</p> * @public */ slots?: Record<string, string> | undefined; /** * <p>A map of key-value pairs representing the session-specific context * information.</p> * @public */ sessionAttributes?: Record<string, string> | undefined; /** * <p>The message to convey to the user. The message can come from the bot's * configuration or from a Lambda function.</p> * <p>If the intent is not configured with a Lambda function, or if the Lambda * function returned <code>Delegate</code> as the * <code>dialogAction.type</code> its response, Amazon Lex decides on the next * course of action and selects an appropriate message from the bot's * configuration based on the current interaction context. For example, if * Amazon Lex isn't able to understand user input, it uses a clarification prompt * message.</p> * <p>When you create an intent you can assign messages to groups. When * messages are assigned to groups Amazon Lex returns one message from each group * in the response. The message field is an escaped JSON string containing * the messages. For more information about the structure of the JSON string * returned, see <a>msg-prompts-formats</a>.</p> * <p>If the Lambda function returns a message, Amazon Lex passes it to the client * in its response.</p> * @public */ message?: string | undefined; /** * <p>The sentiment expressed in and utterance.</p> * <p>When the bot is configured to send utterances to Amazon Comprehend for * sentiment analysis, this field contains the result of the analysis.</p> * @public */ sentimentResponse?: SentimentResponse | undefined; /** * <p>The format of the response message. One of the following * values:</p> * <ul> * <li> * <p> * <code>PlainText</code> - The message contains plain UTF-8 * text.</p> * </li> * <li> * <p> * <code>CustomPayload</code> - The message is a custom format * defined by the Lambda function.</p> * </li> * <li> * <p> * <code>SSML</code> - The message contains text formatted for voice * output.</p> * </li> * <li> * <p> * <code>Composite</code> - The message contains an escaped JSON * object containing one or more messages from the groups that messages * were assigned to when the intent was created.</p> * </li