@aws-sdk/client-lex-runtime-service
Version:
AWS SDK for JavaScript Lex Runtime Service Client for Node.js, Browser and React Native
1,136 lines • 65.1 kB
TypeScript
/// <reference types="node" />
import { LazyJsonString as __LazyJsonString, SmithyException as __SmithyException } from "@aws-sdk/smithy-client";
import { MetadataBearer as $MetadataBearer } from "@aws-sdk/types";
import { Readable } from "stream";
/**
* <p>The length of time or number of turns that a context remains active.</p>
*/
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>
*/
timeToLiveInSeconds?: number;
/**
* <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>
*/
turnsToLive?: number;
}
export declare namespace ActiveContextTimeToLive {
const filterSensitiveLog: (obj: ActiveContextTimeToLive) => any;
}
/**
* <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>
*/
export interface ActiveContext {
/**
* <p>The name of the context.</p>
*/
name: string | undefined;
/**
* <p>The length of time or number of turns that a context remains active.</p>
*/
timeToLive: ActiveContextTimeToLive | undefined;
/**
* <p>State variables for the current context. You can use these values as default values for
* slots in subsequent events.</p>
*/
parameters: {
[key: string]: string;
} | undefined;
}
export declare namespace ActiveContext {
const filterSensitiveLog: (obj: ActiveContext) => any;
}
/**
* <p> Request validation failed, there is no usable message in the context, or the bot build
* failed, is still in progress, or contains unbuilt changes. </p>
*/
export interface BadRequestException extends __SmithyException, $MetadataBearer {
name: "BadRequestException";
$fault: "client";
message?: string;
}
export declare namespace BadRequestException {
const filterSensitiveLog: (obj: BadRequestException) => any;
}
/**
* <p> Two clients are using the same AWS account, Amazon Lex bot, and user ID. </p>
*/
export interface ConflictException extends __SmithyException, $MetadataBearer {
name: "ConflictException";
$fault: "client";
message?: string;
}
export declare namespace ConflictException {
const filterSensitiveLog: (obj: ConflictException) => any;
}
export interface DeleteSessionRequest {
/**
* <p>The name of the bot that contains the session data.</p>
*/
botName: string | undefined;
/**
* <p>The alias in use for the bot that contains the session data.</p>
*/
botAlias: string | undefined;
/**
* <p>The identifier of the user associated with the session data.</p>
*/
userId: string | undefined;
}
export declare namespace DeleteSessionRequest {
const filterSensitiveLog: (obj: DeleteSessionRequest) => any;
}
export interface DeleteSessionResponse {
/**
* <p>The name of the bot associated with the session data.</p>
*/
botName?: string;
/**
* <p>The alias in use for the bot associated with the session data.</p>
*/
botAlias?: string;
/**
* <p>The ID of the client application user.</p>
*/
userId?: string;
/**
* <p>The unique identifier for the session.</p>
*/
sessionId?: string;
}
export declare namespace DeleteSessionResponse {
const filterSensitiveLog: (obj: DeleteSessionResponse) => any;
}
/**
* <p>Internal service error. Retry the call.</p>
*/
export interface InternalFailureException extends __SmithyException, $MetadataBearer {
name: "InternalFailureException";
$fault: "server";
message?: string;
}
export declare namespace InternalFailureException {
const filterSensitiveLog: (obj: InternalFailureException) => any;
}
/**
* <p>Exceeded a limit.</p>
*/
export interface LimitExceededException extends __SmithyException, $MetadataBearer {
name: "LimitExceededException";
$fault: "client";
retryAfterSeconds?: string;
message?: string;
}
export declare namespace LimitExceededException {
const filterSensitiveLog: (obj: LimitExceededException) => any;
}
/**
* <p>The resource (such as the Amazon Lex bot or an alias) that is referred to is not
* found.</p>
*/
export interface NotFoundException extends __SmithyException, $MetadataBearer {
name: "NotFoundException";
$fault: "client";
message?: string;
}
export declare namespace NotFoundException {
const filterSensitiveLog: (obj: NotFoundException) => any;
}
export interface GetSessionRequest {
/**
* <p>The name of the bot that contains the session data.</p>
*/
botName: string | undefined;
/**
* <p>The alias in use for the bot that contains the session data.</p>
*/
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>
*/
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>
*/
checkpointLabelFilter?: string;
}
export declare namespace GetSessionRequest {
const filterSensitiveLog: (obj: GetSessionRequest) => any;
}
export declare enum FulfillmentState {
FAILED = "Failed",
FULFILLED = "Fulfilled",
READY_FOR_FULFILLMENT = "ReadyForFulfillment"
}
export declare enum MessageFormatType {
COMPOSITE = "Composite",
CUSTOM_PAYLOAD = "CustomPayload",
PLAIN_TEXT = "PlainText",
SSML = "SSML"
}
export declare enum DialogActionType {
CLOSE = "Close",
CONFIRM_INTENT = "ConfirmIntent",
DELEGATE = "Delegate",
ELICIT_INTENT = "ElicitIntent",
ELICIT_SLOT = "ElicitSlot"
}
/**
* <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>
*/
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>
*/
type: DialogActionType | string | undefined;
/**
* <p>The name of the intent.</p>
*/
intentName?: string;
/**
* <p>Map of the slots that have been gathered and their values. </p>
*/
slots?: {
[key: string]: string;
};
/**
* <p>The name of the slot that should be elicited from the user.</p>
*/
slotToElicit?: string;
/**
* <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>
*/
fulfillmentState?: FulfillmentState | string;
/**
* <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>
*/
message?: string;
/**
* <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>
*/
messageFormat?: MessageFormatType | string;
}
export declare namespace DialogAction {
const filterSensitiveLog: (obj: DialogAction) => any;
}
export declare enum ConfirmationStatus {
CONFIRMED = "Confirmed",
DENIED = "Denied",
NONE = "None"
}
/**
* <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>
*/
export interface IntentSummary {
/**
* <p>The name of the intent.</p>
*/
intentName?: string;
/**
* <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>
*/
checkpointLabel?: string;
/**
* <p>Map of the slots that have been gathered and their values. </p>
*/
slots?: {
[key: string]: string;
};
/**
* <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>
*/
confirmationStatus?: ConfirmationStatus | string;
/**
* <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>
*/
dialogActionType: DialogActionType | 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>
*/
fulfillmentState?: FulfillmentState | string;
/**
* <p>The next slot to elicit from the user. If there is not slot to elicit, the field is
* blank.</p>
*/
slotToElicit?: string;
}
export declare namespace IntentSummary {
const filterSensitiveLog: (obj: IntentSummary) => any;
}
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>
*/
recentIntentSummaryView?: IntentSummary[];
/**
* <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>
*/
sessionAttributes?: {
[key: string]: string;
};
/**
* <p>A unique identifier for the session.</p>
*/
sessionId?: string;
/**
* <p>Describes the current state of the bot.</p>
*/
dialogAction?: DialogAction;
/**
* <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>
*/
activeContexts?: ActiveContext[];
}
export declare namespace GetSessionResponse {
const filterSensitiveLog: (obj: GetSessionResponse) => any;
}
/**
* <p>Either the Amazon Lex bot is still building, or one of the dependent services (Amazon Polly,
* AWS Lambda) failed with an internal service error.</p>
*/
export interface BadGatewayException extends __SmithyException, $MetadataBearer {
name: "BadGatewayException";
$fault: "server";
Message?: string;
}
export declare namespace BadGatewayException {
const filterSensitiveLog: (obj: BadGatewayException) => any;
}
/**
* <p> One of the dependencies, such as AWS Lambda or Amazon Polly, threw an exception. For example, </p>
* <ul>
* <li>
* <p>If Amazon Lex does not have sufficient permissions to call a Lambda function.</p>
* </li>
* <li>
* <p>If a Lambda function takes longer than 30 seconds to execute.</p>
* </li>
* <li>
* <p>If a fulfillment Lambda function returns a <code>Delegate</code> dialog action without
* removing any slot values.</p>
* </li>
* </ul>
*/
export interface DependencyFailedException extends __SmithyException, $MetadataBearer {
name: "DependencyFailedException";
$fault: "client";
Message?: string;
}
export declare namespace DependencyFailedException {
const filterSensitiveLog: (obj: DependencyFailedException) => any;
}
/**
* <p>This exception is not used.</p>
*/
export interface LoopDetectedException extends __SmithyException, $MetadataBearer {
name: "LoopDetectedException";
$fault: "server";
Message?: string;
}
export declare namespace LoopDetectedException {
const filterSensitiveLog: (obj: LoopDetectedException) => any;
}
/**
* <p>The accept header in the request does not have a valid value.</p>
*/
export interface NotAcceptableException extends __SmithyException, $MetadataBearer {
name: "NotAcceptableException";
$fault: "client";
message?: string;
}
export declare namespace NotAcceptableException {
const filterSensitiveLog: (obj: NotAcceptableException) => any;
}
export interface PostContentRequest {
/**
* <p>Name of the Amazon Lex bot.</p>
*/
botName: string | undefined;
/**
* <p>Alias of the Amazon Lex bot.</p>
*/
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>
*/
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>
*/
sessionAttributes?: __LazyJsonString | string;
/**
* <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>
*/
requestAttributes?: __LazyJsonString | string;
/**
* <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>
*/
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>
*/
accept?: string;
/**
* <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>
*/
inputStream: Readable | ReadableStream | Blob | 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>
*/
activeContexts?: __LazyJsonString | string;
}
export declare namespace PostContentRequest {
const filterSensitiveLog: (obj: PostContentRequest) => any;
}
export declare enum DialogState {
CONFIRM_INTENT = "ConfirmIntent",
ELICIT_INTENT = "ElicitIntent",
ELICIT_SLOT = "ElicitSlot",
FAILED = "Failed",
FULFILLED = "Fulfilled",
READY_FOR_FULFILLMENT = "ReadyForFulfillment"
}
export interface PostContentResponse {
/**
* <p>Content type as specified in the <code>Accept</code> HTTP header in the request.</p>
*/
contentType?: string;
/**
* <p>Current user intent that Amazon Lex is aware of.</p>
*/
intentName?: string;
/**
* <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>
*/
nluIntentConfidence?: __LazyJsonString | string;
/**
* <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>
*/
alternativeIntents?: __LazyJsonString | string;
/**
* <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>
*/
slots?: __LazyJsonString | string;
/**
* <p> Map of key/value pairs representing the session-specific context information. </p>
*/
sessionAttributes?: __LazyJsonString | string;
/**
* <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>
*/
sentimentResponse?: string;
/**
* <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>
*/
message?: string;
/**
* <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>
*/
messageFormat?: MessageFormatType | string;
/**
* <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>
*/
dialogState?: DialogState | string;
/**
* <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>
*/
slotToElicit?: string;
/**
* <p>The text used to process the request.</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>
*/
inputTranscript?: string;
/**
* <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>
*/
audioStream?: Readable | ReadableStream | Blob;
/**
* <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>
*/
botVersion?: string;
/**
* <p>The unique identifier for the session.</p>
*/
sessionId?: string;
/**
* <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>
*/
activeContexts?: __LazyJsonString | string;
}
export declare namespace PostContentResponse {
const filterSensitiveLog: (obj: PostContentResponse) => any;
}
/**
* <p>The input speech is too long.</p>
*/
export interface RequestTimeoutException extends __SmithyException, $MetadataBearer {
name: "RequestTimeoutException";
$fault: "client";
message?: string;
}
export declare namespace RequestTimeoutException {
const filterSensitiveLog: (obj: RequestTimeoutException) => any;
}
/**
* <p>The Content-Type header (<code>PostContent</code> API) has an invalid value. </p>
*/
export interface UnsupportedMediaTypeException extends __SmithyException, $MetadataBearer {
name: "UnsupportedMediaTypeException";
$fault: "client";
message?: string;
}
export declare namespace UnsupportedMediaTypeException {
const filterSensitiveLog: (obj: UnsupportedMediaTypeException) => any;
}
export interface PostTextRequest {
/**
* <p>The name of the Amazon Lex bot.</p>
*/
botName: string | undefined;
/**
* <p>The alias of the Amazon Lex bot.</p>
*/
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>
*/
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>
*/
sessionAttributes?: {
[key: string]: string;
};
/**
* <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>
*/
requestAttributes?: {
[key: string]: string;
};
/**
* <p>The text that the user entered (Amazon Lex interprets this text).</p>
*/
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>
*/
activeContexts?: ActiveContext[];
}
export declare namespace PostTextRequest {
const filterSensitiveLog: (obj: PostTextRequest) => any;
}
/**
* <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>
*/
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>
*/
score?: number;
}
export declare namespace IntentConfidence {
const filterSensitiveLog: (obj: IntentConfidence) => any;
}
/**
* <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>
*/
export interface PredictedIntent {
/**
* <p>The name of the intent that Amazon Lex suggests satisfies the user's intent.</p>
*/
intentName?: string;
/**
* <p>Indicates how confident Amazon Lex is that an intent satisfies the user's intent.</p>
*/
nluIntentConfidence?: IntentConfidence;
/**
* <p>The slot and slot values associated with the predicted intent.</p>
*/
slots?: {
[key: string]: string;
};
}
export declare namespace PredictedIntent {
const filterSensitiveLog: (obj: PredictedIntent) => any;
}
export declare enum ContentType {
GENERIC = "application/vnd.amazonaws.card.generic"
}
/**
* <p>Represents an option to be shown on the client platform (Facebook, Slack, etc.)</p>
*/
export interface Button {
/**
* <p>Text that is visible to the user on the button.</p>
*/
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>
*/
value: string | undefined;
}
export declare namespace Button {
const filterSensitiveLog: (obj: Button) => any;
}
/**
* <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>
*/
export interface GenericAttachment {
/**
* <p>The title of the option.</p>
*/
title?: string;
/**
* <p>The subtitle shown below the title.</p>
*/
subTitle?: string;
/**
* <p>The URL of an attachment to the response card.</p>
*/
attachmentLinkUrl?: string;
/**
* <p>The URL of an image that is displayed to the user.</p>
*/
imageUrl?: string;
/**
* <p>The list of options to show to the user.</p>
*/
buttons?: Button[];
}
export declare namespace GenericAttachment {
const filterSensitiveLog: (obj: GenericAttachment) => any;
}
/**
* <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>
*/
export interface ResponseCard {
/**
* <p>The version of the response card format.</p>
*/
version?: string;
/**
* <p>The content type of the response.</p>
*/
contentType?: ContentType | string;
/**
* <p>An array of attachment objects representing options.</p>
*/
genericAttachments?: GenericAttachment[];
}
export declare namespace ResponseCard {
const filterSensitiveLog: (obj: ResponseCard) => any;
}
/**
* <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>
*/
export interface SentimentResponse {
/**
* <p>The inferred sentiment that Amazon Comprehend has the highest confidence in.</p>
*/
sentimentLabel?: string;
/**
* <p>The likelihood that the sentiment was correctly inferred.</p>
*/
sentimentScore?: string;
}
export declare namespace SentimentResponse {
const filterSensitiveLog: (obj: SentimentResponse) => any;
}
export interface PostTextResponse {
/**
* <p>The current user intent that Amazon Lex is aware of.</p>
*/
intentName?: string;
/**
* <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>
*/
nluIntentConfidence?: IntentConfidence;
/**
* <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>
*/
alternativeIntents?: PredictedIntent[];
/**
* <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>
*/
slots?: {
[key: string]: string;
};
/**
* <p>A map of key-value pairs representing the session-specific context information.</p>
*/
sessionAttributes?: {
[key: string]: string;
};
/**
* <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>
*/
message?: string;
/**
* <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>
*/
sentimentResponse?: SentimentResponse;
/**
* <p>The format of the response message. One of the following values:</p>
* <ul>
* <li>
* <p>
* <code>PlainText</code> - The message cont