createIntent method
- required String botId,
- required String botVersion,
- required String intentName,
- required String localeId,
- String? description,
- DialogCodeHookSettings? dialogCodeHook,
- FulfillmentCodeHookSettings? fulfillmentCodeHook,
- InitialResponseSetting? initialResponseSetting,
- List<
InputContext> ? inputContexts, - IntentClosingSetting? intentClosingSetting,
- IntentConfirmationSetting? intentConfirmationSetting,
- String? intentDisplayName,
- KendraConfiguration? kendraConfiguration,
- List<
OutputContext> ? outputContexts, - String? parentIntentSignature,
- QInConnectIntentConfiguration? qInConnectIntentConfiguration,
- QnAIntentConfiguration? qnAIntentConfiguration,
- List<
SampleUtterance> ? sampleUtterances,
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?"
May throw ConflictException.
May throw InternalServerException.
May throw PreconditionFailedException.
May throw ServiceQuotaExceededException.
May throw ThrottlingException.
May throw ValidationException.
Parameter botId :
The identifier of the bot associated with this intent.
Parameter botVersion :
The version of the bot associated with this intent.
Parameter 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.
Parameter 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.
Parameter description :
A description of the intent. Use the description to help identify the
intent in lists.
Parameter 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.
Parameter 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.
Parameter initialResponseSetting :
Configuration settings for the response that is sent to the user at the
beginning of a conversation, before eliciting slot values.
Parameter 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.
Parameter intentClosingSetting :
Sets the response that Amazon Lex sends to the user when the intent is
closed.
Parameter 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.
Parameter intentDisplayName :
A display name for the intent. If configured, This name will be shown to
users during Intent Disambiguation instead of the intent name. Display
names should be user-friendly, descriptive and match the intent's purpose
to improve user experience during disambiguation.
Parameter 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.
Parameter 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.
Parameter parentIntentSignature :
A unique identifier for the built-in intent to base this intent on.
Parameter qInConnectIntentConfiguration :
Qinconnect intent configuration details for the create intent request.
Parameter qnAIntentConfiguration :
Specifies the configuration of the built-in Amazon.QnAIntent.
The AMAZON.QnAIntent intent is called when Amazon Lex can't
determine another intent to invoke. If you specify this field, you can't
specify the kendraConfiguration field.
Parameter 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..
Implementation
Future<CreateIntentResponse> createIntent({
required String botId,
required String botVersion,
required String intentName,
required String localeId,
String? description,
DialogCodeHookSettings? dialogCodeHook,
FulfillmentCodeHookSettings? fulfillmentCodeHook,
InitialResponseSetting? initialResponseSetting,
List<InputContext>? inputContexts,
IntentClosingSetting? intentClosingSetting,
IntentConfirmationSetting? intentConfirmationSetting,
String? intentDisplayName,
KendraConfiguration? kendraConfiguration,
List<OutputContext>? outputContexts,
String? parentIntentSignature,
QInConnectIntentConfiguration? qInConnectIntentConfiguration,
QnAIntentConfiguration? qnAIntentConfiguration,
List<SampleUtterance>? sampleUtterances,
}) async {
final $payload = <String, dynamic>{
'intentName': intentName,
if (description != null) 'description': description,
if (dialogCodeHook != null) 'dialogCodeHook': dialogCodeHook,
if (fulfillmentCodeHook != null)
'fulfillmentCodeHook': fulfillmentCodeHook,
if (initialResponseSetting != null)
'initialResponseSetting': initialResponseSetting,
if (inputContexts != null) 'inputContexts': inputContexts,
if (intentClosingSetting != null)
'intentClosingSetting': intentClosingSetting,
if (intentConfirmationSetting != null)
'intentConfirmationSetting': intentConfirmationSetting,
if (intentDisplayName != null) 'intentDisplayName': intentDisplayName,
if (kendraConfiguration != null)
'kendraConfiguration': kendraConfiguration,
if (outputContexts != null) 'outputContexts': outputContexts,
if (parentIntentSignature != null)
'parentIntentSignature': parentIntentSignature,
if (qInConnectIntentConfiguration != null)
'qInConnectIntentConfiguration': qInConnectIntentConfiguration,
if (qnAIntentConfiguration != null)
'qnAIntentConfiguration': qnAIntentConfiguration,
if (sampleUtterances != null) 'sampleUtterances': sampleUtterances,
};
final response = await _protocol.send(
payload: $payload,
method: 'PUT',
requestUri:
'/bots/${Uri.encodeComponent(botId)}/botversions/${Uri.encodeComponent(botVersion)}/botlocales/${Uri.encodeComponent(localeId)}/intents',
exceptionFnMap: _exceptionFns,
);
return CreateIntentResponse.fromJson(response);
}