Si vous utilisez Amazon Lex V2, consultez plutôt le guide Amazon Lex V2.
Si vous utilisez Amazon Lex V1, nous vous recommandons de mettre à niveau vos robots vers Amazon Lex V2. Nous n'ajoutons plus de nouvelles fonctionnalités à la V1 et recommandons vivement d'utiliser la V2 pour tous les nouveaux robots.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Format d'événement et de réponse d'entrée de la fonction Lambda
Cette section décrit la structure des données d'événements qu'Amazon Lex fournit à une fonction Lambda. Utilisez ces informations pour analyser l'entrée de votre code Lambda. Il explique également le format de la réponse qu'Amazon Lex attend de votre fonction Lambda.
Format d'un événement d'entrée
Ce qui suit montre le format général d'un événement Amazon Lex transmis à une fonction Lambda. Utilisez ces informations lorsque vous écrivez votre fonction Lambda.
Note
Le format d'entrée peut changer sans modification correspondante dans messageVersion
. Le code ne devrait pas générer une erreur si de nouveaux champs sont présents.
{
"currentIntent": {
"name": "intent-name
",
"nluIntentConfidenceScore": score
,
"slots": {
"slot name
": "value
",
"slot name
": "value
"
},
"slotDetails": {
"slot name
": {
"resolutions" : [
{ "value": "resolved value
" },
{ "value": "resolved value
" }
],
"originalValue": "original text
"
},
"slot name
": {
"resolutions" : [
{ "value": "resolved value
" },
{ "value": "resolved value
" }
],
"originalValue": "original text
"
}
},
"confirmationStatus": "None, Confirmed, or Denied (intent confirmation, if configured)
"
},
"alternativeIntents": [
{
"name": "intent-name
",
"nluIntentConfidenceScore": score
,
"slots": {
"slot name
": "value
",
"slot name
": "value
"
},
"slotDetails": {
"slot name
": {
"resolutions" : [
{ "value": "resolved value
" },
{ "value": "resolved value
" }
],
"originalValue": "original text
"
},
"slot name
": {
"resolutions" : [
{ "value": "resolved value
" },
{ "value": "resolved value
" }
],
"originalValue": "original text
"
}
},
"confirmationStatus": "None, Confirmed, or Denied (intent confirmation, if configured)
"
}
],
"bot": {
"name": "bot name
",
"alias": "bot alias
",
"version": "bot version
"
},
"userId": "User ID specified in the POST request to Amazon Lex.
",
"inputTranscript": "Text used to process the request
",
"invocationSource": "FulfillmentCodeHook or DialogCodeHook
",
"outputDialogMode": "Text or Voice, based on ContentType request header in runtime API request
",
"messageVersion": "1.0",
"sessionAttributes": {
"key
": "value
",
"key
": "value
"
},
"requestAttributes": {
"key
": "value
",
"key
": "value
"
},
"recentIntentSummaryView": [
{
"intentName": "Name
",
"checkpointLabel": Label
,
"slots": {
"slot name
": "value
",
"slot name
": "value
"
},
"confirmationStatus": "None, Confirmed, or Denied (intent confirmation, if configured)
",
"dialogActionType": "ElicitIntent, ElicitSlot, ConfirmIntent, Delegate, or Close
",
"fulfillmentState": "Fulfilled or Failed
",
"slotToElicit": "Next slot to elicit
"
}
],
"sentimentResponse": {
"sentimentLabel": "sentiment
",
"sentimentScore": "score
"
},
"kendraResponse": {
Complete query response from Amazon Kendra
},
"activeContexts": [
{
"timeToLive": {
"timeToLiveInSeconds": seconds
,
"turnsToLive": turns
},
"name": "name
",
"parameters": {
"key name
": "value
"
}
}
]
}
Notez les informations supplémentaires suivantes à propos des champs d'événement :
-
currentIntent – Fournit les champs d'intention
name
,slots
,slotDetails
etconfirmationStatus
.nluIntentConfidenceScore
est la certitude qu'a Amazon Lex que l'intention actuelle est celle qui correspond le mieux à l'intention actuelle de l'utilisateur.slots
est une carte des noms d'emplacements, configurés à cette fin, par rapport aux valeurs d'emplacements reconnues par Amazon Lex lors de la conversation avec l'utilisateur. Une valeur d'option reste null jusqu'à ce que l'utilisateur fournisse une valeur.La valeur d'option dans l'événement d'entrée peut ne pas correspondre à l'une des valeurs configurées pour l'option. Par exemple, si l'utilisateur répond à la question « Quelle couleur de voiture souhaitez-vous ? » avec « pizza », Amazon Lex renverra « pizza » comme valeur de la machine à sous. Votre fonction doit valider les valeurs pour vous assurer qu'elles respectent le contexte.
slotDetails
fournit des informations supplémentaires sur une valeur d'option. Le tableauresolutions
contient une liste de valeurs supplémentaires reconnues pour l'option. Chaque option peut avoir un maximum de cinq valeurs.Le champ
originalValue
contient la valeur qui a été saisie par l'utilisateur pour l'option. Lorsque le type d'option est configuré pour renvoyer la valeur de résolution supérieure comme valeur d'option, la valeuroriginalValue
peut être différente de la valeur qui se trouve dans le champslots
.confirmationStatus
fournit à l'utilisateur une réponse à un message de confirmation, le cas échéant. Par exemple, si Amazon Lex demande « Voulez-vous commander une grosse pizza au fromage ? , » en fonction de la réponse de l'utilisateur, la valeur de ce champ peut êtreConfirmed
ouDenied
. Sinon, la valeur de ce champ estNone
.Si l'utilisateur confirme son intention, Amazon Lex définit ce champ sur
Confirmed
. Si l'utilisateur nie l'intention, Amazon Lex définit cette valeur surDenied
.Dans la réponse de confirmation, un énoncé utilisateur peut fournir des mises à jour d'option. Par exemple, l'utilisateur peut dire « yes, change size to medium. ». Dans ce cas, la valeur de slot mise à jour de l'événement Lambda suivant est
PizzaSize
définie sur.medium
Amazon Lex définit leconfirmationStatus
toNone
, car l'utilisateur a modifié certaines données d'emplacement, ce qui nécessite la fonction Lambda pour effectuer la validation des données utilisateur. -
AlternativeIntents : si vous activez les scores de confiance, Amazon Lex renvoie jusqu'à quatre intentions alternatives. Chaque intention inclut un score qui indique le niveau de confiance d'Amazon Lex quant au fait que l'intention est la bonne en fonction de l'énoncé de l'utilisateur.
Le contenu des intentions alternatives est identique à celui du
currentIntent
champ. Pour de plus amples informations, veuillez consulter Utilisation des scores de confiance. -
bot – Informations concernant le bot qui a traité la demande.
-
name
– Nom du bot qui a traité la demande. -
alias
– Alias de la version du bot qui a traité la demande. -
version
– Version du bot qui a traité la demande.
-
-
UserId — Cette valeur est fournie par l'application cliente. Amazon Lex le transmet à la fonction Lambda.
-
inputTranscript – Texte utilisé pour traiter la demande.
Si l'entrée correspond à du texte, le champ
inputTranscript
contient le texte qui a été saisi par l'utilisateur.Si l'entrée correspond à un flux audio, le champ
inputTranscript
contient le texte extraite du flux audio. Il s'agit du texte qui est réellement traité pour reconnaître les intentions et les valeurs d'option. -
InvocationSource — Pour indiquer pourquoi Amazon Lex appelle la fonction Lambda, il lui attribue l'une des valeurs suivantes :
-
DialogCodeHook
— Amazon Lex définit cette valeur pour demander à la fonction Lambda d'initialiser la fonction et de valider les données saisies par l'utilisateur.Lorsque l'intention est configurée pour invoquer une fonction Lambda en tant que crochet de code d'initialisation et de validation, Amazon Lex invoque la fonction Lambda spécifiée sur chaque entrée utilisateur (énoncé) une fois qu'Amazon Lex a compris l'intention.
Note
Si l'intention n'est pas claire, Amazon Lex ne peut pas appeler la fonction Lambda.
-
FulfillmentCodeHook
— Amazon Lex définit cette valeur pour indiquer à la fonction Lambda de répondre à une intention.Si l'intention est configurée pour invoquer une fonction Lambda en tant que hook de code d'expédition, Amazon Lex définit cette valeur uniquement après avoir obtenu toutes les données d'emplacement nécessaires pour répondre à l'intention.
invocationSource
Dans votre configuration d'intention, vous pouvez disposer de deux fonctions Lambda distinctes pour initialiser et valider les données utilisateur et pour répondre à l'intention. Vous pouvez également utiliser une fonction Lambda pour effectuer les deux. Dans ce cas, votre fonction Lambda peut utiliser la
invocationSource
valeur pour suivre le chemin de code correct. -
-
outputDialogMode— Pour chaque entrée utilisateur, le client envoie la demande à Amazon Lex à l'aide de l'une des opérations d'API d'exécution, PostContent ouPostText. Amazon Lex utilise les paramètres de demande pour déterminer si la réponse au client est textuelle ou vocale, et définit ce champ en conséquence.
La fonction Lambda peut utiliser ces informations pour générer un message approprié. Par exemple, si le client attend une réponse vocale, votre fonction Lambda peut renvoyer le langage SSML (Speech Synthesis Markup Language) au lieu du texte.
-
MessageVersion : version du message qui identifie le format des données d'événement entrées dans la fonction Lambda et le format attendu de la réponse d'une fonction Lambda.
Note
Vous configurez cette valeur lorsque vous définissez une intention. Dans l'implémentation actuelle, seule la version de message 1.0 est prise en charge. Par conséquent, la console prend la valeur par défaut 1.0 et n'affiche pas la version de message.
-
SessionAttributes — Attributs de session spécifiques à l'application que le client envoie dans la demande. Si vous souhaitez qu'Amazon Lex les inclue dans la réponse au client, votre fonction Lambda doit les renvoyer à Amazon Lex dans la réponse. Pour de plus amples informations, veuillez consulter la page Définition des attributs de session.
-
RequestAttributes — Attributs spécifiques à la demande que le client envoie dans la demande. Utilisez les attributs de demande pour transmettre des informations qui n'ont pas besoin de persister pendant la totalité de la session. S'il n'y a pas d'attributs de demandes, cette valeur est null. Pour de plus amples informations, veuillez consulter la page Définition des attributs de demandes.
-
recentIntentSummaryAfficher : informations relatives à l'état d'une intention. Vous pouvez voir des informations sur les trois dernières intentions utilisées. Vous pouvez utiliser ces informations pour définir des valeurs dans l'intention ou pour revenir à une intention précédente. Pour de plus amples informations, veuillez consulter Gestion des sessions avec l'API Amazon Lex.
-
SentimentResponse : résultat d'une analyse des sentiments d'Amazon Comprehend concernant le dernier énoncé. Vous pouvez utiliser ces informations pour gérer le flux de conversation de votre bot en fonction du sentiment exprimé par l'utilisateur. Pour de plus amples informations, veuillez consulter Analyse de sentiment.
-
KendraResponse : résultat d'une requête envoyée à un index Amazon Kendra. Présent uniquement dans l'entrée d’un hook de code d’exécution et uniquement lorsque l'intention étend l'intention intégrée
AMAZON.KendraSearchIntent
. Le champ contient la réponse complète de la recherche Amazon Kendra. Pour de plus amples informations, veuillez consulter AMAZON.KendraSearchIntent. -
ActiveContexts — Un ou plusieurs contextes actifs au cours de cette phase de conversation avec l'utilisateur.
-
timeToLive— La durée ou le nombre de tours de conversation avec l'utilisateur pendant lesquels le contexte reste actif.
-
name — le nom du contexte.
-
paramètres une liste de paires clé/valeur contenant le nom et la valeur des emplacements correspondant à l'intention qui a activé le contexte.
Pour de plus amples informations, veuillez consulter Définition du contexte d'intention.
-
Format de la réponse
Amazon Lex attend une réponse d'une fonction Lambda au format suivant :
{
"sessionAttributes": {
"key1": "value1",
"key2": "value2"
...
},
"recentIntentSummaryView": [
{
"intentName": "Name
",
"checkpointLabel": "Label
",
"slots": {
"slot name
": "value
",
"slot name
": "value
"
},
"confirmationStatus": "None, Confirmed, or Denied (intent confirmation, if configured)
",
"dialogActionType": "ElicitIntent, ElicitSlot, ConfirmIntent, Delegate, or Close
",
"fulfillmentState": "Fulfilled or Failed
",
"slotToElicit": "Next slot to elicit
"
}
],
"activeContexts": [
{
"timeToLive": {
"timeToLiveInSeconds": seconds
,
"turnsToLive": turns
},
"name": "name
",
"parameters": {
"key name
": "value
"
}
}
],
"dialogAction": {
"type": "ElicitIntent, ElicitSlot, ConfirmIntent, Delegate, or Close
",
Full structure based on the type field. See below for details.
}
}
La réponse comprend quatre champs. Les activeContexts
champs sessionAttributes
recentIntentSummaryView
, et sont facultatifs, le dialogAction
champ est obligatoire. Le contenu du champ dialogAction
dépend de la valeur du champ type
. Pour plus de détails, consultez dialogAction.
sessionAttributes
Facultatif. Si vous incluez le champ sessionAttributes
, il peut être vide. Si votre fonction Lambda ne renvoie pas les attributs de session, les derniers attributs connus sessionAttributes
transmis via l'API ou la fonction Lambda sont conservés. Pour plus d'informations, consultez les opérations PostContent et PostText.
"sessionAttributes": {
"key1": "value1
",
"key2": "value2
"
}
recentIntentSummaryAfficher
Facultatif. S'il est inclus, définit des valeurs pour une ou plusieurs intentions récentes. Vous pouvez inclure des informations pour trois intentions au maximum. Par exemple, vous pouvez définir des valeurs pour des intentions précédentes en fonction des informations collectées par l'intention actuelle. Les informations du récapitulatif doivent être valides pour l'intention. Par exemple, le nom de l'intention doit être une intention dans le bot. Si vous incluez une valeur d'emplacement dans la vue récapitulative, l'emplacement doit exister dans l'intention. Si vous n'incluez pas recentIntentSummaryView
dans votre réponse, toutes les valeurs des intentions récentes restent inchangées. Pour plus d'informations, consultez l'opération PutSession ou le type de données IntentSummary.
"recentIntentSummaryView": [ { "intentName": "
Name
", "checkpointLabel": "Label
", "slots": { "slot name
": "value
", "slot name
": "value
" }, "confirmationStatus": "None, Confirmed, or Denied (intent confirmation, if configured)
", "dialogActionType": "ElicitIntent, ElicitSlot, ConfirmIntent, Delegate, or Close
", "fulfillmentState": "Fulfilled or Failed
", "slotToElicit": "Next slot to elicit
" } ]
Contextes actifs
Facultatif. S'il est inclus, définit la valeur pour un ou plusieurs contextes. Par exemple, vous pouvez inclure un contexte pour qu'une ou plusieurs intentions ayant ce contexte comme entrée puissent être reconnues lors de la prochaine étape de la conversation.
Tous les contextes actifs qui ne sont pas inclus dans la réponse voient leurs time-to-live valeurs décrémentées et peuvent toujours être actifs lors de la prochaine demande.
Si vous spécifiez une valeur time-to-live de 0 pour un contexte inclus dans l'événement d'entrée, il sera inactif lors de la prochaine demande.
Pour de plus amples informations, veuillez consulter Définition du contexte d'intention.
dialogAction
Obligatoire. Le dialogAction
champ indique à Amazon Lex la marche à suivre et décrit ce à quoi il doit s'attendre de la part de l'utilisateur une fois qu'Amazon Lex a renvoyé une réponse au client.
Le champ type
indique l'action suivante. Il détermine également les autres champs que la fonction Lambda doit fournir dans le cadre de la dialogAction
valeur.
-
Close
— Informe Amazon Lex de ne pas attendre de réponse de la part de l'utilisateur. Par exemple, « Votre commande de pizza a été passée » ne nécessite pas de réponse.Le champ
fulfillmentState
est obligatoire. Amazon Lex utilise cette valeur pour définir ledialogState
champ dans la PostText réponse PostContent ou l'application cliente. Les champsmessage
etresponseCard
sont facultatifs. Si vous ne spécifiez aucun message, Amazon Lex utilise le message d'adieu ou le message de suivi configuré en fonction de l'intention."dialogAction": { "type": "Close", "fulfillmentState": "
Fulfilled or Failed
", "message": { "contentType": "PlainText or SSML or CustomPayload
", "content": "Message to convey to the user. For example, Thanks, your pizza has been ordered.
" }, "responseCard": { "version":integer-value
, "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title":"card-title
", "subTitle":"card-sub-title
", "imageUrl":"URL of the image to be shown
", "attachmentLinkUrl":"URL of the attachment to be associated with the card
", "buttons":[ { "text":"button-text
", "value":"Value sent to server on button click
" } ] } ] } } -
ConfirmIntent
— Informe Amazon Lex que l'utilisateur doit répondre par oui ou par non pour confirmer ou infirmer l'intention actuelle.Vous devez inclure les champs
intentName
etslots
. Le champslots
doit contenir une entrée pour chacune des options complétées pour l'intention spécifiée. Vous n'avez pas besoin d'inclure une entrée dans le champslots
pour les options qui ne sont pas complétées. Vous devez inclure le champmessage
si le champconfirmationPrompt
de l'intention est null. Le contenu dumessage
champ renvoyé par la fonction Lambda a priorité sur le contenuconfirmationPrompt
spécifié dans l'intention. Le champresponseCard
est facultatif."dialogAction": { "type": "ConfirmIntent", "message": { "contentType": "
PlainText or SSML or CustomPayload
", "content": "Message to convey to the user. For example, Are you sure you want a large pizza?
" }, "intentName": "intent-name
", "slots": { "slot-name": "value
", "slot-name": "value
", "slot-name": "value
" }, "responseCard": { "version":integer-value
, "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title":"card-title
", "subTitle":"card-sub-title
", "imageUrl":"URL of the image to be shown
", "attachmentLinkUrl":"URL of the attachment to be associated with the card
", "buttons":[ { "text":"button-text
", "value":"Value sent to server on button click
" } ] } ] } } -
Delegate
— Demande à Amazon Lex de choisir le plan d'action suivant en fonction de la configuration du bot. Si la réponse n'inclut aucun attribut de session, Amazon Lex conserve les attributs existants. Si vous souhaitez qu'une valeur d'option soit null, vous n'avez pas besoin d'inclure le champ d'option dans la demande. Vous recevez une exceptionDependencyFailedException
si la fonction de traitement renvoie l'action de dialogueDelegate
sans supprimer d'options.Les champs
kendraQueryFilterString
etkendraQueryRequestPayload
sont facultatifs et utilisés uniquement lorsque l'intention est dérivée de l'intention intégréeAMAZON.KendraSearchIntent
. Pour de plus amples informations, veuillez consulter AMAZON.KendraSearchIntent."dialogAction": { "type": "Delegate", "slots": { "slot-name": "
value
", "slot-name": "value
", "slot-name": "value
" }, "kendraQueryRequestPayload": "Amazon Kendra query
", "kendraQueryFilterString": "Amazon Kendra attribute filters
" } -
ElicitIntent
— Informe Amazon Lex que l'utilisateur est censé répondre par un énoncé contenant une intention. Par exemple, « Je veux un grand pizza », qui indique l'intentionOrderPizzaIntent
. L'énoncé « large », en revanche, n'est pas suffisant pour qu'Amazon Lex puisse déduire l'intention de l'utilisateur.Les champs
message
etresponseCard
sont facultatifs. Si vous ne fournissez aucun message, Amazon Lex utilise l'une des instructions de clarification du bot. Si aucune invite de clarification n'est définie, Amazon Lex renvoie une exception 400 Bad Request.{ "dialogAction": { "type": "ElicitIntent", "message": { "contentType": "
PlainText or SSML or CustomPayload
", "content": "Message to convey to the user. For example, What can I help you with?
" }, "responseCard": { "version":integer-value
, "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title":"card-title
", "subTitle":"card-sub-title
", "imageUrl":"URL of the image to be shown
", "attachmentLinkUrl":"URL of the attachment to be associated with the card
", "buttons":[ { "text":"button-text
", "value":"Value sent to server on button click
" } ] } ] } } -
ElicitSlot
— Informe Amazon Lex que l'utilisateur est censé fournir une valeur d'emplacement dans la réponse.Les champs obligatoires sont
intentName
,slotToElicit
etslots
. Les champsmessage
etresponseCard
sont facultatifs. Si vous ne spécifiez aucun message, Amazon Lex utilise l'une des invites de sélection d'emplacements configurées pour l'emplacement."dialogAction": { "type": "ElicitSlot", "message": { "contentType": "
PlainText or SSML or CustomPayload
", "content": "Message to convey to the user. For example, What size pizza would you like?
" }, "intentName": "intent-name
", "slots": { "slot-name": "value
", "slot-name": "value
", "slot-name": "value
" }, "slotToElicit" : "slot-name
", "responseCard": { "version":integer-value
, "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title":"card-title
", "subTitle":"card-sub-title
", "imageUrl":"URL of the image to be shown
", "attachmentLinkUrl":"URL of the attachment to be associated with the card
", "buttons":[ { "text":"button-text
", "value":"Value sent to server on button click
" } ] } ] } }