CreateIntent - Amazon Lex

CreateIntent

Creates an intent.

To define the interaction between the user and your bot, you define one or more intents. For example, for a pizza ordering bot you would create an OrderPizza intent.

When you create an intent, you must provide a name. You can optionally provide the following:

  • Sample utterances. For example, "I want to order a pizza" and "Can I order a pizza." You can't provide utterances for built-in intents.

  • Information to be gathered. You specify slots for the information that you bot requests from the user. You can specify standard slot types, such as date and time, or custom slot types for your application.

  • How the intent is fulfilled. You can provide a Lambda function or configure the intent to return the intent information to your client application. If you use a Lambda function, Amazon Lex invokes the function when all of the intent information is available.

  • A confirmation prompt to send to the user to confirm an intent. For example, "Shall I order your pizza?"

  • A conclusion statement to send to the user after the intent is fulfilled. For example, "I ordered your pizza."

  • A follow-up prompt that asks the user for additional activity. For example, "Do you want a drink with your pizza?"

Request Syntax

PUT /bots/botId/botversions/botVersion/botlocales/localeId/intents/ HTTP/1.1 Content-type: application/json { "description": "string", "dialogCodeHook": { "enabled": boolean }, "fulfillmentCodeHook": { "enabled": boolean }, "inputContexts": [ { "name": "string" } ], "intentClosingSetting": { "active": boolean, "closingResponse": { "allowInterrupt": boolean, "messageGroups": [ { "message": { "customPayload": { "value": "string" }, "imageResponseCard": { "buttons": [ { "text": "string", "value": "string" } ], "imageUrl": "string", "subtitle": "string", "title": "string" }, "plainTextMessage": { "value": "string" }, "ssmlMessage": { "value": "string" } }, "variations": [ { "customPayload": { "value": "string" }, "imageResponseCard": { "buttons": [ { "text": "string", "value": "string" } ], "imageUrl": "string", "subtitle": "string", "title": "string" }, "plainTextMessage": { "value": "string" }, "ssmlMessage": { "value": "string" } } ] } ] } }, "intentConfirmationSetting": { "active": boolean, "declinationResponse": { "allowInterrupt": boolean, "messageGroups": [ { "message": { "customPayload": { "value": "string" }, "imageResponseCard": { "buttons": [ { "text": "string", "value": "string" } ], "imageUrl": "string", "subtitle": "string", "title": "string" }, "plainTextMessage": { "value": "string" }, "ssmlMessage": { "value": "string" } }, "variations": [ { "customPayload": { "value": "string" }, "imageResponseCard": { "buttons": [ { "text": "string", "value": "string" } ], "imageUrl": "string", "subtitle": "string", "title": "string" }, "plainTextMessage": { "value": "string" }, "ssmlMessage": { "value": "string" } } ] } ] }, "promptSpecification": { "allowInterrupt": boolean, "maxRetries": number, "messageGroups": [ { "message": { "customPayload": { "value": "string" }, "imageResponseCard": { "buttons": [ { "text": "string", "value": "string" } ], "imageUrl": "string", "subtitle": "string", "title": "string" }, "plainTextMessage": { "value": "string" }, "ssmlMessage": { "value": "string" } }, "variations": [ { "customPayload": { "value": "string" }, "imageResponseCard": { "buttons": [ { "text": "string", "value": "string" } ], "imageUrl": "string", "subtitle": "string", "title": "string" }, "plainTextMessage": { "value": "string" }, "ssmlMessage": { "value": "string" } } ] } ] } }, "intentName": "string", "kendraConfiguration": { "kendraIndex": "string", "queryFilterString": "string", "queryFilterStringEnabled": boolean }, "outputContexts": [ { "name": "string", "timeToLiveInSeconds": number, "turnsToLive": number } ], "parentIntentSignature": "string", "sampleUtterances": [ { "utterance": "string" } ] }

URI Request Parameters

The request uses the following URI parameters.

botId

The identifier of the bot associated with this intent.

Length Constraints: Fixed length of 10.

Pattern: ^[0-9a-zA-Z]+$

Required: Yes

botVersion

The identifier of the version of the bot associated with this intent.

Length Constraints: Fixed length of 5.

Pattern: ^DRAFT$

Required: Yes

localeId

The identifier of the language and locale where this intent is used. All of the bots, slot types, and slots used by the intent must have the same locale. For more information, see Supported languages.

Required: Yes

Request Body

The request accepts the following data in JSON format.

description

A description of the intent. Use the description to help identify the intent in lists.

Type: String

Length Constraints: Minimum length of 0. Maximum length of 200.

Required: No

dialogCodeHook

Specifies that Amazon Lex invokes the alias Lambda function for each user input. You can invoke this Lambda function to personalize user interaction.

For example, suppose that your bot determines that the user's name is John. You Lambda function might retrieve John's information from a backend database and prepopulate some of the values. For example, if you find that John is gluten intolerant, you might set the corresponding intent slot, glutenIntolerant to true. You might find John's phone number and set the corresponding session attribute.

Type: DialogCodeHookSettings object

Required: No

fulfillmentCodeHook

Specifies that Amazon Lex invokes the alias Lambda function when the intent is ready for fulfillment. You can invoke this function to complete the bot's transaction with the user.

For example, in a pizza ordering bot, the Lambda function can look up the closest pizza restaurant to the customer's location and then place an order on the customer's behalf.

Type: FulfillmentCodeHookSettings object

Required: No

inputContexts

A list of contexts that must be active for this intent to be considered by Amazon Lex.

When an intent has an input context list, Amazon Lex only considers using the intent in an interaction with the user when the specified contexts are included in the active context list for the session. If the contexts are not active, then Amazon Lex will not use the intent.

A context can be automatically activated using the outputContexts property or it can be set at runtime.

For example, if there are two intents with different input contexts that respond to the same utterances, only the intent with the active context will respond.

An intent may have up to 5 input contexts. If an intent has multiple input contexts, all of the contexts must be active to consider the intent.

Type: Array of InputContext objects

Array Members: Minimum number of 0 items. Maximum number of 5 items.

Required: No

intentClosingSetting

Sets the response that Amazon Lex sends to the user when the intent is closed.

Type: IntentClosingSetting object

Required: No

intentConfirmationSetting

Provides prompts that Amazon Lex sends to the user to confirm the completion of an intent. If the user answers "no," the settings contain a statement that is sent to the user to end the intent.

Type: IntentConfirmationSetting object

Required: No

intentName

The name of the intent. Intent names must be unique in the locale that contains the intent and cannot match the name of any built-in intent.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 100.

Pattern: ^([0-9a-zA-Z][_-]?)+$

Required: Yes

kendraConfiguration

Configuration information required to use the AMAZON.KendraSearchIntent intent to connect to an Amazon Kendra index. The AMAZON.KendraSearchIntent intent is called when Amazon Lex can't determine another intent to invoke.

Type: KendraConfiguration object

Required: No

outputContexts

A lists of contexts that the intent activates when it is fulfilled.

You can use an output context to indicate the intents that Amazon Lex should consider for the next turn of the conversation with a customer.

When you use the outputContextsList property, all of the contexts specified in the list are activated when the intent is fulfilled. You can set up to 10 output contexts. You can also set the number of conversation turns that the context should be active, or the length of time that the context should be active.

Type: Array of OutputContext objects

Array Members: Minimum number of 0 items. Maximum number of 10 items.

Required: No

parentIntentSignature

A unique identifier for the built-in intent to base this intent on.

Type: String

Required: No

sampleUtterances

An array of strings that a user might say to signal the intent. For example, "I want a pizza", or "I want a {PizzaSize} pizza".

In an utterance, slot names are enclosed in curly braces ("{", "}") to indicate where they should be displayed in the utterance shown to the user..

Type: Array of SampleUtterance objects

Required: No

Response Syntax

HTTP/1.1 200 Content-type: application/json { "botId": "string", "botVersion": "string", "creationDateTime": number, "description": "string", "dialogCodeHook": { "enabled": boolean }, "fulfillmentCodeHook": { "enabled": boolean }, "inputContexts": [ { "name": "string" } ], "intentClosingSetting": { "active": boolean, "closingResponse": { "allowInterrupt": boolean, "messageGroups": [ { "message": { "customPayload": { "value": "string" }, "imageResponseCard": { "buttons": [ { "text": "string", "value": "string" } ], "imageUrl": "string", "subtitle": "string", "title": "string" }, "plainTextMessage": { "value": "string" }, "ssmlMessage": { "value": "string" } }, "variations": [ { "customPayload": { "value": "string" }, "imageResponseCard": { "buttons": [ { "text": "string", "value": "string" } ], "imageUrl": "string", "subtitle": "string", "title": "string" }, "plainTextMessage": { "value": "string" }, "ssmlMessage": { "value": "string" } } ] } ] } }, "intentConfirmationSetting": { "active": boolean, "declinationResponse": { "allowInterrupt": boolean, "messageGroups": [ { "message": { "customPayload": { "value": "string" }, "imageResponseCard": { "buttons": [ { "text": "string", "value": "string" } ], "imageUrl": "string", "subtitle": "string", "title": "string" }, "plainTextMessage": { "value": "string" }, "ssmlMessage": { "value": "string" } }, "variations": [ { "customPayload": { "value": "string" }, "imageResponseCard": { "buttons": [ { "text": "string", "value": "string" } ], "imageUrl": "string", "subtitle": "string", "title": "string" }, "plainTextMessage": { "value": "string" }, "ssmlMessage": { "value": "string" } } ] } ] }, "promptSpecification": { "allowInterrupt": boolean, "maxRetries": number, "messageGroups": [ { "message": { "customPayload": { "value": "string" }, "imageResponseCard": { "buttons": [ { "text": "string", "value": "string" } ], "imageUrl": "string", "subtitle": "string", "title": "string" }, "plainTextMessage": { "value": "string" }, "ssmlMessage": { "value": "string" } }, "variations": [ { "customPayload": { "value": "string" }, "imageResponseCard": { "buttons": [ { "text": "string", "value": "string" } ], "imageUrl": "string", "subtitle": "string", "title": "string" }, "plainTextMessage": { "value": "string" }, "ssmlMessage": { "value": "string" } } ] } ] } }, "intentId": "string", "intentName": "string", "kendraConfiguration": { "kendraIndex": "string", "queryFilterString": "string", "queryFilterStringEnabled": boolean }, "localeId": "string", "outputContexts": [ { "name": "string", "timeToLiveInSeconds": number, "turnsToLive": number } ], "parentIntentSignature": "string", "sampleUtterances": [ { "utterance": "string" } ] }

Response Elements

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

botId

The identifier of the bot associated with the intent.

Type: String

Length Constraints: Fixed length of 10.

Pattern: ^[0-9a-zA-Z]+$

botVersion

The identifier of the version of the bot associated with the intent.

Type: String

Length Constraints: Fixed length of 5.

Pattern: ^DRAFT$

creationDateTime

A timestamp of the date and time that the intent was created.

Type: Timestamp

description

The description specified for the intent.

Type: String

Length Constraints: Minimum length of 0. Maximum length of 200.

dialogCodeHook

The dialog Lambda function specified for the intent.

Type: DialogCodeHookSettings object

fulfillmentCodeHook

The fulfillment Lambda function specified for the intent.

Type: FulfillmentCodeHookSettings object

inputContexts

The list of input contexts specified for the intent.

Type: Array of InputContext objects

Array Members: Minimum number of 0 items. Maximum number of 5 items.

intentClosingSetting

The closing setting specified for the intent.

Type: IntentClosingSetting object

intentConfirmationSetting

The confirmation setting specified for the intent.

Type: IntentConfirmationSetting object

intentId

A unique identifier for the intent.

Type: String

Length Constraints: Fixed length of 10.

Pattern: ^[0-9a-zA-Z]+$

intentName

The name specified for the intent.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 100.

Pattern: ^([0-9a-zA-Z][_-]?)+$

kendraConfiguration

Configuration for searching a Amazon Kendra index specified for the intent.

Type: KendraConfiguration object

localeId

The locale that the intent is specified to use.

Type: String

outputContexts

The list of output contexts specified for the intent.

Type: Array of OutputContext objects

Array Members: Minimum number of 0 items. Maximum number of 10 items.

parentIntentSignature

The signature of the parent intent specified for the intent.

Type: String

sampleUtterances

The sample utterances specified for the intent.

Type: Array of SampleUtterance objects

Errors

For information about the errors that are common to all actions, see Common Errors.

ConflictException

HTTP Status Code: 409

InternalServerException

HTTP Status Code: 500

PreconditionFailedException

HTTP Status Code: 412

ServiceQuotaExceededException

HTTP Status Code: 402

ThrottlingException

HTTP Status Code: 429

ValidationException

HTTP Status Code: 400

See Also

For more information about using this API in one of the language-specific AWS SDKs, see the following: