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 sessions avec l'API Amazon Lex
Lorsqu'un utilisateur entame une conversation avec votre bot, Amazon Lex crée une session. Les informations échangées entre votre application et Amazon Lex constituent l'état de session de la conversation. Lorsque vous effectuez une demande, la session est identifiée par une combinaison du nom de bot et d'un identifiant d'utilisateur que vous spécifiez. Pour plus d'informations sur l'identifiant d'utilisateur, consultez le champ userId
dans l'opération PostContent ou PostText.
La réponse d'une opération de session inclut un identifiant de de session unique qui identifie une session spécifique avec un utilisateur. Vous pouvez utiliser cet identifiant pendant des tests ou pour vous aider à dépanner votre bot.
Vous pouvez modifier l'état de session envoyé entre votre application et votre bot. Par exemple, vous pouvez créer et modifier des attributs de session qui contiennent des informations personnalisées sur la session, et vous pouvez modifier le flux de la conversation en définissant le contexte de dialogue pour interpréter le prochain énoncé.
Il existe deux manières de mettre à jour l'état de session. La première consiste à utiliser une fonction Lambda avec l'PostText
opération PostContent
or appelée après chaque tour de conversation. Pour de plus amples informations, veuillez consulter Utilisation des fonctions Lambda. L'autre consiste à utiliser l'API d'exécution Amazon Lex dans votre application pour modifier l'état de la session.
L'API d'exécution Amazon Lex fournit des opérations qui vous permettent de gérer les informations de session pour une conversation avec votre bot. Il s'agit des opérations PutSession, GetSession et DeleteSession. Vous utilisez ces opérations pour obtenir des informations sur l'état de session de votre utilisateur dans votre bot et avoir un contrôle précis sur l'état.
Utilisez l'opération GetSession
lorsque vous souhaitez obtenir l'état actuel de la session. L'opération renvoie l'état actuel de la session, y compris l'état du dialogue avec votre utilisateur, les attributs de session qui ont été définis et les valeurs d'options pour les trois dernières intentions avec lesquelles l'utilisateur a interagi.
L'opération PutSession
vous permet de manipuler directement l'état de session en cours. Vous pouvez définir le type d'action de dialogue exécuté ensuite par le bot. Cela vous permet de contrôler le flux de la conversation avec le bot. Définissez le type
champ d'action de la boîte de dialogue Delegate
pour qu'Amazon Lex détermine la prochaine action du bot.
Vous pouvez utiliser l'opération PutSession
pour créer une nouvelle session avec un bot et définir l'intention avec laquelle le bot doit démarrer. Vous pouvez également utiliser l'opération PutSession
pour passer d'une intention à une autre. Lorsque vous créez une session ou modifiez l'intention, vous pouvez également définir un état de session, comme des valeurs d'options et des attributs de session. Lorsque la nouvelle intention est terminée, vous avez la possibilité de redémarrer l'intention précédente. Vous pouvez utiliser cette GetSession
opération pour obtenir l'état du dialogue de l'intention précédente auprès d'Amazon Lex et utiliser les informations pour définir l'état du dialogue de l'intention.
La réponse générée depuis l'opération PutSession
contient les mêmes informations que l'opération PostContent
. Vous pouvez utiliser ces informations pour demander à l'utilisateur l'élément d'information suivant, comme vous le feriez avec la réponse de l'opération PostContent
.
Utilisez l'opération DeleteSession
pour supprimer une session existante et démarrer avec une nouvelle session. Par exemple, lorsque vous testez le bot, vous pouvez utiliser l'opération DeleteSession
pour supprimer des sessions de test de votre bot.
Les opérations de session fonctionnent avec vos fonctions Lambda d'exécution. Par exemple, si votre fonction Lambda renvoie l'état Failed
d'exécution, vous pouvez utiliser l'PutSession
opération pour définir le type d'action de dialogue close
et pour fulfillmentState
ReadyForFulfillment
réessayer l'étape d'exécution.
Voici quelques actions que vous pouvez effectuer avec les opérations de session :
-
Demander au bot de démarrer une conversation au lieu d'attendre l'utilisateur.
-
Changer d'intention au cours d'une conversation.
-
Revenir à une intention précédente.
-
Démarrer ou redémarrer une conversation au milieu de l'interaction.
-
Valider des valeurs d'option et demander au bot d'entrer à nouveau des valeurs en cas de valeurs non valides.
Chacune de ces actions sont décrites plus en détail ci-dessous.
Changement d'intention
Vous pouvez utiliser l'opération PutSession
pour passer d'une intention à une autre. Vous pouvez également l'utiliser pour revenir à une intention précédente. Vous pouvez utiliser l'opération PutSession
pour définir des attributs de session ou des valeurs d'option pour la nouvelle intention.
-
Appelez l’opération
PutSession
. Définissez le nom sur le nom de la nouvelle intention et définissez l'action de dialogue surDelegate
. Vous pouvez également définir les valeurs d'options ou les attributs de session requis pour la nouvelle intention. -
Amazon Lex entamera une conversation avec l'utilisateur en utilisant la nouvelle intention.
Reprise d'une intention précédente
Pour reprendre une intention précédente, vous utilisez l'opération GetSession
pour obtenir le récapitulatif de l'intention, puis l'opération PutSession
pour définir l'intention à son état de dialogue précédent.
-
Appelez l’opération
GetSession
. La réponse de l'opération inclut un récapitulatif de l'état de dialogue des trois dernières intentions avec lesquelles l'utilisateur a interagi. -
À l'aide des informations du récapitulatif de l'intention, appelez l'opération
PutSession
. Cela renverra à l'utilisateur vers l'intention précédente au même endroit dans la conversation.
Dans certains cas, il peut être nécessaire de reprendre la conversation de votre utilisateur avec votre bot. Par exemple, imaginons que vous avez créé un bot de service client. Votre application détermine que l'utilisateur a besoin de parler à un représentant du service client. Après avoir parlé avec l'utilisateur, le représentant peut rediriger la conversation vers le bot avec les informations qu'il a collectées.
Pour reprendre une session, utilisez des étapes similaires aux étapes suivantes :
-
Votre application détermine que l'utilisateur a besoin de parler à un représentant du service client.
-
Utilisez l'opération
GetSession
pour obtenir l'état de dialogue actuel de l'intention. -
Le représentant service client parle à l'utilisateur et résout le problème.
-
Utilisez l'opération
PutSession
pour définir l'état de dialogue de l'intention. Cela peut inclure la définition de valeurs d'option et d'attributs de session, ou la modification de l'intention. -
Le bot reprend la conversation avec l'utilisateur.
Vous pouvez utiliser le paramètre checkpointLabel
de l’opération PutSession
pour étiqueter une intention afin de la retrouver ultérieurement. Par exemple, un bot qui demande des informations à un client peut entrer dans une intention Waiting
pendant que le client collecte les informations. Le bot crée une étiquette de point de contrôle pour l'intention actuelle, puis démarre l'intention Waiting
. Lorsque le client revient, le bot peut rechercher l'intention précédente en utilisant l'étiquette de point de contrôle et revenir en arrière.
L'intention doit être présente dans la structure recentIntentSummaryView
renvoyée par l'opération GetSession
. Si vous spécifiez une étiquette de point de contrôle dans la demande d'opération GetSession
, trois intentions au maximum sont renvoyées avec cette étiquette de point de contrôle.
-
Utilisez l'opération
GetSession
pour obtenir l'état actuel de la session. -
Utilisez l'opération
PutSession
pour ajouter une étiquette de point de contrôle à la dernière intention. Si nécessaire, vous pouvez utiliser cet appelPutSession
pour basculer vers une intention différente. -
Lorsqu'il est temps de revenir à l'intention étiquetée, appelez l'opération
GetSession
pour renvoyer une liste d'intention récente. Vous pouvez utiliser lecheckpointLabelFilter
paramètre pour qu'Amazon Lex renvoie uniquement les intentions portant l'étiquette de point de contrôle spécifiée.
Démarrage d'une nouvelle session
Si vous souhaitez que le bot démarre la conversation avec votre utilisateur, vous pouvez utiliser l'opération PutSession
.
-
Créez une intention de bienvenue sans options et un message de conclusion qui invite l'utilisateur à indiquer une intention. Par exemple, « Que souhaitez-vous commander ? Vous pouvez dire « Commander une boisson » ou « Commander une pizza ». »
-
Appelez l’opération
PutSession
. Définissez nom de l'intention sur le nom de votre intention de bienvenue et définissez l'action de dialogue surDelegate
. -
Amazon Lex répondra en vous demandant d'entamer la conversation avec votre utilisateur dans le cadre de votre message de bienvenue.
Validation de valeurs d'option
Vous pouvez valider les réponses adressées à votre bot à l'aide de votre application cliente. Si la réponse n'est pas valide, vous pouvez utiliser l'opération PutSession
pour obtenir une nouvelle réponse de votre utilisateur. Par exemple, supposons que votre bot de commande de fleurs ne peut vendre que des tulipes, des roses et des lys. Si l'utilisateur commande des œillets, votre application peut effectuer les opérations suivantes :
-
Examiner la valeur d'option renvoyée à partir de la réponse
PostText
ouPostContent
. -
Si la valeur d'option n'est pas valide, appeler l'opération
PutSession
. Votre application doit effacer la valeur d'option, définir le champslotToElicit
et définir la valeur dedialogAction.type
surelicitSlot
. Vous pouvez éventuellement définir lesmessageFormat
champsmessage
et si vous souhaitez modifier le message utilisé par Amazon Lex pour obtenir la valeur de l'emplacement.