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.
AWS Lambda format de réponse pour Lex V2
La deuxième étape de l'intégration d'une fonction Lambda dans votre bot Amazon Lex V2 consiste à comprendre les champs de la réponse de la fonction Lambda et à déterminer les paramètres que vous souhaitez manipuler. L'JSONobjet suivant montre le format général d'une réponse Lambda renvoyée à Amazon Lex V2 :
{ "sessionState": { // see État de la session for details about the structure }, "messages": [ { "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML", "content":
string
, "imageResponseCard": { "title":string
, "subtitle":string
, "imageUrl":string
, "buttons": [ { "text":string
, "value":string
}, ... ] } }, ... ], "requestAttributes": {string
:string
, ... } }
Chaque champ de la réponse est décrit ci-dessous :
État de la conversation entre l'utilisateur et votre bot Amazon Lex V2 que vous souhaitez renvoyer. Voir État de la session pour plus de détails sur la structure. Ce champ est toujours obligatoire.
Liste des messages qu'Amazon Lex V2 renvoie au client pour la prochaine étape de la conversation. Si le message contentType
que vous fournissez est PlainText
CustomPayload
, ouSSML
, écrivez le message que vous souhaitez renvoyer au client dans le content
champ. Si c'est le contentType
casImageResponseCard
, donnez les détails de la carte dans le imageResponseCard
champ. Si vous ne fournissez aucun message, Amazon Lex V2 utilise le message approprié défini lors de la création du bot.
Le messages
champ est obligatoire s'il s'dialogAction.type
agit de ElicitIntent
ouConfirmIntent
.
Chaque élément de la liste est une structure au format suivant, contenant des informations sur un message à renvoyer à l'utilisateur. Voici un exemple :
{ "contentType": "CustomPayload | ImageResponseCard | PlainText | SSML", "content":
string
, "imageResponseCard": { "title":string
, "subtitle":string
, "imageUrl":string
, "buttons": [ { "text":string
, "value":string
}, ... ] } }
Une description de chaque champ est fournie ci-dessous :
-
contentType— Type de message à utiliser.
CustomPayload
— Chaîne de réponse que vous pouvez personnaliser pour inclure des données ou des métadonnées pour votre application.ImageResponseCard
— Une image avec des boutons que le client peut sélectionner. Voir ImageResponseCardpour plus d'informations.PlainText
— Chaîne de texte brut.SSML
— Chaîne qui inclut le langage de balisage de synthèse vocale pour personnaliser la réponse audio. -
content — Le message à envoyer à l'utilisateur. Utilisez ce champ si le type de message est
PlainText
CustomPayload
, ouSSML
. -
imageResponseCard— Contient la définition de la carte-réponse à montrer à l'utilisateur. Utilisez ce champ si le type de message est
ImageResponseCard
. Correspond à une structure contenant les champs suivants :-
title — Le titre de la carte-réponse.
-
sous-titre : invite l'utilisateur à choisir un bouton.
-
imageUrl— Un lien vers une image de la carte.
-
boutons : liste de structures contenant des informations sur un bouton. Chaque structure contient un
text
champ contenant le texte à afficher et unvalue
champ contenant la valeur à envoyer à Amazon Lex V2 si le client sélectionne ce bouton. Vous pouvez inclure jusqu'à trois boutons.
-
Structure contenant des attributs spécifiques à la demande pour la réponse au client. Pour plus d’informations, consultez Configuration des attributs de demande pour votre bot Lex V2. Ce champ est facultatif.
Champs obligatoires dans la réponse
Au minimum, la réponse Lambda doit inclure sessionState
un objet. Dans ce cadre, fournissez un dialogAction
objet et spécifiez le type
champ. En fonction type
de dialogAction
ce que vous fournissez, il se peut que d'autres champs soient obligatoires pour la réponse Lambda. Ces exigences sont décrites comme suit, accompagnées d'exemples pratiques minimaux :
Delegate permet à Amazon Lex V2 de déterminer l'étape suivante. Aucun autre champ n'est obligatoire.
{ "sessionState": { "dialogAction": { "type": "Delegate" } }
ElicitIntentinvite le client à exprimer son intention. Vous devez inclure au moins un message dans le messages
champ pour susciter une intention.
{ "sessionState": { "dialogAction": { "type": "ElicitIntent" }, "messages": [ { "contentType": PlainText, "content": "How can I help you?" } ] }
ElicitSlotinvite le client à fournir une valeur de créneau. Vous devez inclure le nom de l'emplacement dans le slotToElicit
champ de l'dialogAction
objet. Vous devez également inclure le name
de intent
dans l'sessionState
objet.
{` "sessionState": { "dialogAction": { "slotToElicit":
"OriginCity"
, "type": "ElicitSlot" }, "intent": { "name":"BookFlight"
} } }
ConfirmIntentconfirme les valeurs des créneaux du client et confirme si l'intention est prête à être réalisée. Vous devez inclure le name
du intent
dans l'sessionState
objet et le slots
à confirmer. Vous devez également inclure au moins un message dans le messages
champ pour demander à l'utilisateur de confirmer les valeurs des créneaux. Votre message doit recevoir une réponse « oui » ou « non ». Si l'utilisateur répond « oui », Amazon Lex V2 définit confirmationState
l'intention surConfirmed
. Si l'utilisateur répond « non », Amazon Lex V2 définit confirmationState
l'intention surDenied
.
{ "sessionState": { "dialogAction": { "type": "ConfirmIntent" }, "intent": { "name":
"BookFlight"
, "slots": {"DepartureDate"
: { "value": { "originalValue": "tomorrow", "interpretedValue": "2023-05-09", "resolvedValues": [ "2023-05-09" ] } },"DestinationCity"
: { "value": { "originalValue": "sf", "interpretedValue": "sf", "resolvedValues": [ "sf" ] } },"OriginCity"
: { "value": { "originalValue": "nyc", "interpretedValue": "nyc", "resolvedValues": [ "nyc" ] } } } } }, "messages": [ { "contentType": PlainText, "content": "Okay, you want to fly from {OriginCity} to \ {DestinationCity} on {DepartureDate}. Is that correct?" } ] }
La fermeture met fin au processus de réalisation de l'intention et indique qu'aucune autre réponse n'est attendue de la part de l'utilisateur. Vous devez inclure le name
et state
de intent
dans l'sessionState
objet. Les états d'intention compatibles sont Failed
Fulfilled
, etInProgress
.
"sessionState": { "dialogAction": { "type": "Close" }, "intent": { "name":
"BookFlight"
, "state": "Failed | Fulfilled | InProgress" } }