Préparation du format de réponse - Amazon Lex

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.

Préparation du format de réponse

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'objet JSON 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 PlainTextCustomPayload, 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.typeagit 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 PlainTextCustomPayload, ouSSML.

  • imageResponseCard— Contient la définition de la carte-réponse à montrer à l'utilisateur. Utilisez ce champ si le type de message estImageResponseCard. Correspond à une structure contenant les champs suivants :

    • title — Le titre de la carte-réponse.

    • sous-titre : invite l'utilisateur à choisir un bouton.

    • imageURL — Lien vers l'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 un value 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'informatons, consultez Définition des attributs de demande. 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 obtenir une indication d'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'dialogActionobjet. Vous devez également inclure le name de intent dans l'sessionStateobjet.

{` "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'sessionStateobjet 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'sessionStateobjet. Les états d'intention compatibles sont FailedFulfilled, etInProgress.

"sessionState": { "dialogAction": { "type": "Close" }, "intent": { "name": "BookFlight", "state": "Failed | Fulfilled | InProgress" } }