Gestion des messages - Amazon Lex V1

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.

Gestion des messages

Lorsque vous créez un bot, vous pouvez configurer les messages de clarification ou d'information que vous souhaitez que le bot envoie au client. Considérez les exemples suivants :

  • Vous pouvez configurer le bot avec l'invite de clarification suivante :

    I don't understand. What would you like to do?

    Amazon Lex envoie ce message au client s'il ne comprend pas l'intention de l'utilisateur.

     

  • Supposons que vous créiez un bot pour prendre en charge une intention appelée OrderPizza. Pour une commande de pizza, les utilisateurs doivent fournir des informations telles que la taille de pizza, la garniture et le type de pâte. Vous pouvez configurer les invites suivantes :

    What size pizza do you want? What toppings do you want? Do you want thick or thin crust?

    Une fois qu'Amazon Lex a déterminé l'intention de l'utilisateur de commander une pizza, il envoie ces messages au client pour obtenir des informations de la part de l'utilisateur.

Cette section explique la conception d'interactions utilisateur dans le bot de configuration.

Types de messages

Un message peut être une invite ou une déclaration.

  • Une invite est généralement une question et attend une réponse de l'utilisateur.

  • Une déclaration est informative. Elle n'attend pas de réponse.

Un message peut inclure des références à une option, à des attributs de session et à des attributs de demande. Au moment de l'exécution, Amazon Lex remplace ces références par des valeurs réelles.

Pour faire référence aux valeurs d'option qui ont été définies, utilisez la syntaxe suivante :

{SlotName}

Pour faire référence à des attributs de session, utilisez la syntaxe suivante :

[SessionAttributeName]

Pour faire référence à des attributs de demande, utilisez la syntaxe suivante :

((RequestAttributeName))

Les messages peuvent inclure à la fois des valeurs d'option, des attributs de session et des attributs de demande.

Supposons, par exemple, que vous configuriez le message suivant en fonction de l' OrderPizza intention de votre bot :

"Hey [FirstName], your {PizzaTopping} pizza will arrive in [DeliveryTime] minutes."

Ce message fait référence à une option (PizzaTopping) et à des attributs de session (FirstName et DeliveryTime). Au moment de l'exécution, Amazon Lex remplace ces espaces réservés par des valeurs et renvoie le message suivant au client :

"Hey John, your cheese pizza will arrive in 30 minutes."

Pour inclure des crochets ([]) ou des accolades ({}) dans un message, utilisez le caractère d'échappement barre oblique inversée (\). Par exemple, le message suivant inclut des accolades et des crochets :

\{Text\} \[Text\]

Le texte retourné à l'application cliente ressemble à ceci :

{Text} [Text]

Pour plus d'informations sur les attributs de session, reportez-vous aux opérations d'API d'exécution PostText et PostContent. Pour obtenir un exemple, consultez Réservez un voyage.

Les fonctions Lambda peuvent également générer des messages et les renvoyer à Amazon Lex pour qu'il les envoie à l'utilisateur. Si vous ajoutez des fonctions Lambda lorsque vous configurez votre intention, vous pouvez créer des messages de manière dynamique. En fournissant les messages lors de la configuration de votre bot, vous pouvez éviter d'avoir à créer une invite dans votre fonction Lambda.

Contextes pour la configuration des messages

Lorsque vous créez votre bot, vous pouvez créer des messages dans différents contextes, tels que des demandes de clarification dans le bot, des demandes de valeurs de créneau et des messages d'intention. Amazon Lex choisit un message approprié dans chaque contexte à renvoyer à votre utilisateur. Vous pouvez fournir un groupe de messages pour chaque contexte. Dans ce cas, Amazon Lex choisit au hasard un message du groupe. Vous pouvez aussi spécifier le format du message ou regrouper les messages. Pour de plus amples informations, veuillez consulter Formats de message pris en charge.

Si une fonction Lambda est associée à une intention, vous pouvez remplacer tous les messages que vous avez configurés au moment de la création. Cependant, aucune fonction Lambda n'est requise pour utiliser ces messages.

Messages de bot

Vous pouvez configurer votre bot avec des demandes de clarification et des messages de fin de session. Au moment de l'exécution, Amazon Lex utilise l'invite de clarification s'il ne comprend pas l'intention de l'utilisateur. Vous pouvez configurer le nombre de fois qu'Amazon Lex demande des éclaircissements avant d'envoyer le message de fin de session. Vous configurez les messages au niveau du bot dans la section Gestion des erreurs de la console Amazon Lex, comme dans l'image suivante :

Section de gestion des erreurs dans l'onglet éditeur de la console. Des instructions de clarification et une phrase de raccrochage peuvent être spécifiées.

Avec l'API, vous configurez des messages en définissant les champs clarificationPrompt et abortStatement dans l'opération PutBot.

Si vous utilisez une fonction Lambda avec une intention, la fonction Lambda peut renvoyer une réponse demandant à Amazon Lex de demander l'intention d'un utilisateur. Si la fonction Lambda ne fournit pas ce message, Amazon Lex utilise l'invite de clarification.

Invites d'option

Vous devez spécifier au moins un message d'invite pour chacune des options requises dans une intention. Au moment de l'exécution, Amazon Lex utilise l'un de ces messages pour inviter l'utilisateur à fournir une valeur pour l'emplacement. Par exemple, pour une option cityName, ce qui suit est une invite valide :

Which city would you like to fly to?

Vous pouvez définir une ou plusieurs invites pour chaque option en utilisant la console. Vous pouvez également créer des groupes d'invites à l'aide de l'opération PutIntent. Pour de plus amples informations, veuillez consulter Groupes de messages.

Réponses

Dans la console, utilisez la section Responses (Réponses) pour créer des conversations dynamiques et engageantes pour votre bot. Vous pouvez créer un ou plusieurs groupes de messages pour une réponse. Au moment de l'exécution, Amazon Lex crée une réponse en sélectionnant un message dans chaque groupe de messages. Pour plus d'informations sur les groupes de messages, consultez Groupes de messages.

Par exemple, votre premier groupe de messages peut contenir différentes salutations : « Bonjour », « Bonsoir » et « Salut ». Le second groupe de messages peut contenir différentes formes de présentation : « Je suis le bot de réservation » et « C'est le bot de réservation ». Un troisième groupe de messages pourrait communiquer les capacités du bot : « Je peux vous aider avec la location de voitures et les réservations d'hôtel », « Vous pouvez louer des voitures et effectuer des réservations d'hôtel » et « Je peux vous aider à louer une voiture et réserver un hôtel ».

Lex utilise un message de chacun de ces groupes de messages pour construire de façon dynamique les réponses dans une conversation. Par exemple, une interaction peut être la suivante :

Une conversation possible avec un bot.

Une autre pourrait être la suivante :

Une autre conversation possible avec un bot.

Dans les deux cas, l'utilisateur peut répondre avec une nouvelle intention, comme l'intention BookCar ou BookHotel.

Vous pouvez configurer le bot pour demander des précisions dans la réponse. Par exemple, pour les interactions précédentes, vous pouvez créer un quatrième groupe de messages avec les questions suivantes : « Puis-je vous aider à réserver une voiture ou un hôtel ? », « Souhaitez-vous effectuer une réservation maintenant ? » et « Puis-je faire quelque chose pour vous ? ». Pour les messages qui incluent « Non » comme réponse, vous pouvez créer une invite de suivi. L'image suivante fournit un exemple :

Demande de suivi lors d'une conversation avec un bot.

Pour créer une invite de suivi, choisissez Wait for user reply. Tapez ensuite le ou les messages que vous voulez envoyer lorsque l'utilisateur dit « Non ». Lorsque vous créez une réponse à utiliser comme invite de suivi, vous devez également spécifier une déclaration appropriée lorsque la réponse à la déclaration est « Non ». Reportez-vous à l'image suivante pour un exemple :

Configuration des messages lorsqu'un utilisateur dit « non ».

Pour ajouter des réponses à une intention avec l'API, utilisez l'opération PutIntent. Pour spécifier une réponse, définissez le champ conclusionStatement dans la requête PutIntent. Pour configurer une invite de suivi, définissez le champ followUpPrompt et incluez la déclaration à envoyer lorsque l'utilisateur dit « Non ». Vous ne pouvez pas définir à la fois le champ conclusionStatement et le champ followUpPrompt pour la même intention.

Formats de message pris en charge

Lorsque vous utilisez l'PostTextopération, ou lorsque vous utilisez l'PostContentopération avec l'Accepten-tête défini surtext/plain;charset=utf8, Amazon Lex prend en charge les messages dans les formats suivants :

  • PlainText: le message contient du texte UTF-8 brut.

  • SSML—Le message contient du texte formaté pour la sortie vocale.

  • CustomPayload—Le message contient un format personnalisé que vous avez créé pour votre client. Vous pouvez définir la charge utile pour répondre aux besoins de votre application.

  • Composite—Le message est un ensemble de messages, un pour chaque groupe de messages. Pour plus d'informations sur les groupes de messages, consultez Groupes de messages.

Par défaut, Amazon Lex renvoie l'un des messages définis pour une invite spécifique. Par exemple, si vous définissez cinq messages pour obtenir une valeur d'intervalle, Amazon Lex choisit l'un des messages au hasard et le renvoie au client.

Si vous souhaitez qu'Amazon Lex renvoie un type de message spécifique au client dans le cadre d'une demande d'exécution, définissez le paramètre de x-amzn-lex:accept-content-types demande. La réponse est limitée pour le ou les types demandés. S'il existe plusieurs messages du type spécifié, Amazon Lex en renvoie un au hasard. Pour plus d'informations sur l'en-tête x-amz-lex:accept-content-types, consultez Définir le type de réponse.

Groupes de messages

Un groupe de messages est un ensemble de réponses appropriées pour une invite spécifique. Utilisez les groupes de messages lorsque vous souhaitez que votre bot construise de façon dynamique les réponses lors d'une conversation. Lorsqu'Amazon Lex renvoie une réponse à l'application cliente, il choisit au hasard un message dans chaque groupe. Vous pouvez créer un maximum de cinq groupes de messages pour chaque réponse. Chaque groupe peut contenir un maximum de cinq messages. Pour obtenir des exemples de création de groupes de messages dans la console, consultez Réponses.

Pour créer un groupe de messages, vous pouvez utiliser la console ou utiliser les opérations PutBot, PutIntent ou PutSlotType pour attribuer un numéro de groupe à un message. Si vous ne créez pas de groupe de messages, ou si vous créez un seul groupe de messages, Amazon Lex envoie un seul message Message sur le terrain. Les applications clientes reçoivent uniquement plusieurs messages dans une réponse si vous avez créé plus d'un groupe de messages dans la console, ou si vous créez plus d'un groupe de messages lorsque vous créez ou mettez à jour une intention avec l'opération PutIntent.

Lorsqu'Amazon Lex envoie un message depuis un groupe, le Message champ de réponse contient un objet JSON échappé qui contient les messages. L'exemple suivant montre le contenu du champ Message lorsqu'il contient plusieurs messages.

Note

L'exemple est mis en forme pour des raisons de lisibilité. Une réponse ne contient pas de retours chariot.

{\"messages\":[ {\"type\":\"PlainText\",\"group\":0,\"value\":\"Plain text\"}, {\"type\":\"SSML\",\"group\":1,\"value\":\"SSML text\"}, {\"type\":\"CustomPayload\",\"group\":2,\"value\":\"Custom payload\"} ]}

Vous pouvez définir le format des messages. Il peut s'agit de l'un des formats suivants :

  • PlainText: le message est en texte UTF-8 brut.

  • SSML : le message est en langage SSML (Speech Synthesis Markup Language).

  • CustomPayload: le message est dans un format personnalisé que vous avez spécifié.

Pour contrôler le format des messages que les opérations PostContent et PostText renvoient dans le champ Message, définissez l'attribut de requête x-amz-lex:accept-content-types. Par exemple, si vous définissez l'en-tête comme suit, vous recevrez uniquement des messages en texte brut et en SSML dans la réponse :

x-amz-lex:accept-content-types: PlainText,SSML

Si vous demandez un format de message spécifique et qu'un groupe de message ne contient aucun message dans ce format, vous recevrez une exception NoUsableMessageException. Si vous utilisez un groupe de messages pour regrouper les messages par type, n'utilisez pas l'en-tête x-amz-lex:accept-content-types.

Pour plus d'informations sur l'en-tête x-amz-lex:accept-content-types, consultez Définir le type de réponse.

Cartes de réponse

Note

Les cartes de réponse ne fonctionnent pas avec le chat Amazon Connect. Toutefois, voir Ajouter des messages interactifs au chat pour des fonctionnalités similaires.

Une carte de réponse contient un ensemble de réponses appropriées pour une invite. Utilisez les cartes de réponse pour simplifier les interactions pour vos utilisateurs et augmenter la précision de votre bot en réduisant les erreurs typographiques dans les interactions textuelles. Vous pouvez envoyer une carte-réponse pour chaque demande envoyée par Amazon Lex à votre application cliente. Vous pouvez utiliser des cartes de réponse avec Facebook Messenger, Slack, Twilio et vos propres applications clientes.

Par exemple, dans une application de taxi, vous pouvez configurer une option « Domicile » dans la carte de réponse et y indiquer l'adresse du domicile de l'utilisateur comme valeur. Lorsque l'utilisateur sélectionne cette option, Amazon Lex reçoit l'adresse complète sous forme de texte d'entrée. Voir l'image suivante :

Exemple de carte de réponse.

Vous pouvez définir une carte de réponse pour les invites suivantes :

  • Déclaration de conclusion

  • Invite de confirmation

  • Invite de suivi

  • Déclaration de refus

  • Enoncés de types d'options

Vous pouvez définir une seule carte de réponse pour chaque invite.

Vous configurez les cartes de réponse lorsque vous créez une intention. Vous pouvez définir une carte de réponse statique au moment de la génération à l'aide de la console ou de l'opération PutIntent. Vous pouvez également définir une carte de réponse dynamique lors de l'exécution dans une fonction Lambda. Si vous définissez à la fois des cartes de réponse statiques et dynamiques, la carte de réponse dynamique est prioritaire.

Amazon Lex envoie des cartes-réponses dans un format que le client comprend. Il convertit les cartes de réponse pour Facebook Messenger, Slack et Twilio. Pour les autres clients, Amazon Lex envoie une structure JSON dans la PostText réponse. Par exemple, si le client est Facebook Messenger, Amazon Lex transforme la carte de réponse en un modèle générique. Pour plus d'informations sur les modèles génériques Facebook Messenger, consultez Generic Template sur le site web Facebook. Pour obtenir un exemple de structure JSON, consultez Création dynamique des cartes de réponse.

Vous pouvez utiliser des cartes de réponse uniquement avec l'opération PostText. Vous ne pouvez pas utiliser de cartes de réponse avec l'opération PostContent.

Définition de cartes de réponse statiques

Définissez des cartes de réponse statiques avec l'PutBotopération ou la console Amazon Lex lorsque vous créez une intention. Une carte de réponse statique est définie en même temps que l'intention. Utilisez une carte de réponse statique lorsque les réponses sont fixes. Supposons que vous créiez un bot avec une intention dont l'une des options porte sur la saveur. Lorsque vous définissez l'option de saveur, vous spécifiez des invites, comme illustré dans l'exemple suivant :

Editeur d'intention dans la console.

Lorsque vous définissez des invites, vous pouvez éventuellement associer une carte de réponse et définir les détails de l'PutBotopération, ou, dans la console Amazon Lex, comme illustré dans l'exemple suivant :

Console affichant l'éditeur de cartes de réponse.

Supposons maintenant que vous ayez intégré votre bot dans Facebook Messenger. L'utilisateur peut cliquer sur les boutons pour choisir une saveur, comme indiqué dans l'illustration suivante :

Carte de réponse dans Facebook Messenger.

Pour personnaliser le contenu d'une carte de réponse, vous pouvez vous rapporter aux attributs de session. Au moment de l'exécution, Amazon Lex remplace ces références par des valeurs appropriées issues des attributs de session. Pour de plus amples informations, veuillez consulter Définition des attributs de session. Pour obtenir un exemple, consultez Utilisation d'une carte-réponse.

Création dynamique des cartes de réponse

Pour générer des cartes de réponse de manière dynamique lors de l'exécution, utilisez la fonction Lambda d'initialisation et de validation pour l'intention. Utilisez une carte de réponse dynamique lorsque les réponses sont déterminées lors de l'exécution dans la fonction Lambda. En réponse aux entrées de l'utilisateur, la fonction Lambda génère une carte de réponse et la renvoie dans la dialogAction section de la réponse. Pour de plus amples informations, veuillez consulter Format de la réponse.

Ce qui suit est une réponse partielle d'une fonction Lambda qui montre l'responseCardélément. Elle crée une expérience utilisateur semblable à celle illustrée dans la section précédente.

responseCard: { "version": 1, "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title": "What Flavor?", "subtitle": "What flavor do you want?", "imageUrl": "Link to image", "attachmentLinkUrl": "Link to attachment", "buttons": [ { "text": "Lemon", "value": "lemon" }, { "text": "Raspberry", "value": "raspberry" }, { "text": "Plain", "value": "plain" } ] } ] }

Pour obtenir un exemple, consultez Planifier un rendez-vous.