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.
Étape 2a (facultatif) : Vérification des détails du flux d'informations vocales (console)
Cette section explique le flux d'informations entre le client et Amazon Lex lorsque le client utilise la parole pour envoyer des demandes. Pour de plus amples informations, veuillez consulter PostContent.
-
L'utilisateur dit : I would like to order some flowers.
-
Le client (console) envoie la demande PostContent suivante à Amazon Lex :
POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1" Accept: "audio/mpeg" Request bodyinput stream
L'URI et le corps de la demande fournissent des informations à Amazon Lex :
-
URI de demande — Fournit le nom du bot (
$LATEST
), son alias () et le nom d'utilisateur (chaîne aléatoire identifiant l'utilisateur).OrderFlowers
content
indique qu'il s'agit d'une demande d'PostContent
API (et non d'unePostText
demande). -
En-têtes de demandes
-
x-amz-lex-session-attributes
— La valeur codée en base64 représente « {} ». Lorsque le client effectue la première demande, il n'existe aucun attribut de session. -
Content-Type
– Reflète le format audio.
-
-
Corps de la demande – Le flux audio d'entrée utilisateur (« I would like to order some flowers. »).
Note
Si l'utilisateur choisit d'envoyer un texte (« I would like to order some flowers ») à l'API
PostContent
au lieu de parler, le corps de la demande est l'entrée utilisateur. L'en-têteContent-Type
est défini en conséquence :POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "text/plain; charset=utf-8" Accept: accept Request bodyinput stream
-
-
À partir du flux d'entrée, Amazon Lex détecte l'intention (
OrderFlowers
). Il choisit alors l'une des options de l'intention (dans ce cas,FlowerType
) et l'une de ses invites d'obtention de valeur, puis il envoie une réponse avec les en-têtes suivants :x-amz-lex-dialog-state:ElicitSlot x-amz-lex-input-transcript:I would like to order some flowers. x-amz-lex-intent-name:OrderFlowers x-amz-lex-message:What type of flowers would you like to order? x-amz-lex-session-attributes:e30= x-amz-lex-slot-to-elicit:FlowerType x-amz-lex-slots:eyJQaWNrdXBUaW1lIjpudWxsLCJGbG93ZXJUeXBlIjpudWxsLCJQaWNrdXBEYXRlIjpudWxsfQ==
Les valeurs d'en-tête fournissent les informations suivantes :
-
x-amz-lex-input-transcript
– Fournit la transcription du message audio (entrée utilisateur) à partir de la demande -
x-amz-lex-message
— Fournit la transcription de l'audio renvoyé par Amazon Lex dans la réponse -
x-amz-lex-slots
– La version encodée en base 64 des options et valeurs :{"PickupTime":null,"FlowerType":null,"PickupDate":null}
-
x-amz-lex-session-attributes
– La version encodée en base 64 des attributs de session ({})
Le client lit le message audio dans le corps de réponse.
-
-
-
L'utilisateur dit : roses
-
Le client (console) envoie la demande PostContent suivante à Amazon Lex :
POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1" Accept: "audio/mpeg" Request bodyinput stream ("roses")
Le corps de la demande est le flux audio de l'entrée utilisateur (roses).
sessionAttributes
reste vide. -
Amazon Lex interprète le flux d'entrée dans le contexte de l'intention actuelle (il se souvient qu'il a demandé à cet utilisateur des informations relatives au
FlowerType
slot). Amazon Lex met d'abord à jour la valeur de l'emplacement en fonction de l'intention actuelle. Il choisit ensuite un autre emplacement (PickupDate
), ainsi que l'un de ses messages invite (When do you want to pick up the roses?), puis renvoie une réponse avec les en-têtes suivants :x-amz-lex-dialog-state:ElicitSlot x-amz-lex-input-transcript:roses x-amz-lex-intent-name:OrderFlowers x-amz-lex-message:When do you want to pick up the roses? x-amz-lex-session-attributes:e30= x-amz-lex-slot-to-elicit:PickupDate x-amz-lex-slots:eyJQaWNrdXBUaW1lIjpudWxsLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6bnVsbH0=
Les valeurs d'en-tête fournissent les informations suivantes :
-
x-amz-lex-slots
– La version encodée en base 64 des options et valeurs :{"PickupTime":null,"FlowerType":"roses","PickupDate":null}
-
x-amz-lex-session-attributes
– La version encodée en base 64 des attributs de session ({})
Le client lit le message audio dans le corps de réponse.
-
-
-
L'utilisateur dit : tomorrow
-
Le client (console) envoie la demande PostContent suivante à Amazon Lex :
POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1" Accept: "audio/mpeg" Request bodyinput stream ("tomorrow")
Le corps de la demande est le flux audio de l'entrée utilisateur (« tomorrow »).
sessionAttributes
reste vide. -
Amazon Lex interprète le flux d'entrée dans le contexte de l'intention actuelle (il se souvient qu'il a demandé à cet utilisateur des informations relatives au
PickupDate
slot). Amazon Lex met à jour la valeur de slot (PickupDate
) en fonction de l'intention actuelle. Il choisit ensuite une autre option pour laquelle obtenir une valeur (PickupTime
) et l'une de ses invites d'obtention de valeur (When do you want to pick up the roses on 2017-03-18?), puis il renvoie une réponse avec les en-têtes suivants :x-amz-lex-dialog-state:ElicitSlot x-amz-lex-input-transcript:tomorrow x-amz-lex-intent-name:OrderFlowers x-amz-lex-message:When do you want to pick up the roses on 2017-03-18? x-amz-lex-session-attributes:e30= x-amz-lex-slot-to-elicit:PickupTime x-amz-lex-slots:eyJQaWNrdXBUaW1lIjpudWxsLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6IjIwMTctMDMtMTgifQ== x-amzn-RequestId:3a205b70-0b69-11e7-b447-eb69face3e6f
Les valeurs d'en-tête fournissent les informations suivantes :
-
x-amz-lex-slots
– La version encodée en base 64 des options et valeurs :{"PickupTime":null,"FlowerType":"roses","PickupDate":"2017-03-18"}
-
x-amz-lex-session-attributes
– La version encodée en base 64 des attributs de session ({})
Le client lit le message audio dans le corps de réponse.
-
-
-
L'utilisateur dit : 6 pm
-
Le client (console) envoie la demande PostContent suivante à Amazon Lex :
POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "text/plain; charset=utf-8" Accept: "audio/mpeg" Request bodyinput stream ("6 pm")
Le corps de la demande est le flux audio de l'entrée utilisateur (« 6 pm »).
sessionAttributes
reste vide. -
Amazon Lex interprète le flux d'entrée dans le contexte de l'intention actuelle (il se souvient qu'il a demandé à cet utilisateur des informations relatives au
PickupTime
slot). Il met d'abord à jour la valeur d'option pour l'intention actuelle.Amazon Lex détecte désormais qu'il possède des informations pour tous les emplacements. Cependant, l'intention
OrderFlowers
est configurée avec un message de confirmation. Amazon Lex a donc besoin d'une confirmation explicite de la part de l'utilisateur avant de pouvoir réaliser son intention. Il envoie une réponse avec les en-têtes suivants, demandant une confirmation avant de commander les fleurs :x-amz-lex-dialog-state:ConfirmIntent x-amz-lex-input-transcript:six p. m. x-amz-lex-intent-name:OrderFlowers x-amz-lex-message:Okay, your roses will be ready for pickup by 18:00 on 2017-03-18. Does this sound okay? x-amz-lex-session-attributes:e30= x-amz-lex-slots:eyJQaWNrdXBUaW1lIjoiMTg6MDAiLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6IjIwMTctMDMtMTgifQ== x-amzn-RequestId:083ca360-0b6a-11e7-b447-eb69face3e6f
Les valeurs d'en-tête fournissent les informations suivantes :
-
x-amz-lex-slots
– La version encodée en base 64 des options et valeurs :{"PickupTime":"18:00","FlowerType":"roses","PickupDate":"2017-03-18"}
-
x-amz-lex-session-attributes
– La version encodée en base 64 des attributs de session ({})
Le client lit le message audio dans le corps de réponse.
-
-
-
L'utilisateur dit : Yes
-
Le client (console) envoie la demande PostContent suivante à Amazon Lex :
POST /bot/
OrderFlowers
/alias/$LATEST
/user/4o9wwdhx6nlheferh6a73fujd3118f5w
/content HTTP/1.1 x-amz-lex-session-attributes: "e30=" Content-Type: "audio/x-l16; sample-rate=16000; channel-count=1" Accept: "audio/mpeg" Request bodyinput stream ("Yes")
Le corps de la demande est le flux audio de l'entrée utilisateur (« Yes »).
sessionAttributes
reste vide. -
Amazon Lex interprète le flux d'entrée et comprend que l'utilisateur souhaite poursuivre la commande. L'intention
OrderFlowers
est configurée avecReturnIntent
comme activité d'exécution. Cela demande à Amazon Lex de renvoyer toutes les données d'intention au client. Amazon Lex renvoie une réponse contenant les informations suivantes :x-amz-lex-dialog-state:ReadyForFulfillment x-amz-lex-input-transcript:yes x-amz-lex-intent-name:OrderFlowers x-amz-lex-session-attributes:e30= x-amz-lex-slots:eyJQaWNrdXBUaW1lIjoiMTg6MDAiLCJGbG93ZXJUeXBlIjoicm9zaSdzIiwiUGlja3VwRGF0ZSI6IjIwMTctMDMtMTgifQ==
L'en-tête de réponse
x-amz-lex-dialog-state
est défini surReadyForFulfillment
. Le client peut alors traiter l'intention.
-
-
A présent, retestez le bot. Pour établir un nouveau contexte (nouvel utilisateur), choisissez le lien Effacer dans la console. Fournissez des données pour l'intention
OrderFlowers
et incluez des données non valides. Par exemple :-
Jasmine comme type de fleur (ce n'est pas l'un des types de fleur pris en charge)
-
Yesterday comme jour pendant lequel vous souhaitez récupérer les fleurs
Notez que le bot accepte ces valeurs parce que vous n'avez pas de code pour initialiser et valider les données utilisateur. Dans la section suivante, vous allez ajouter une fonction Lambda à cet effet. Notez ce qui suit à propos de la fonction Lambda :
-
Elle valide les données d'option après chaque entrée utilisateur. Elle traite l'intention à la fin. Autrement dit, le bot traite la commande de fleurs et renvoie un message à l'utilisateur au lieu de simplement renvoyer les données d'option au client. Pour de plus amples informations, veuillez consulter Utilisation des fonctions Lambda.
-
Elle définit également les attributs de session. Pour en savoir plus sur les attributs de session, consultez PostText.
Une fois que vous avez terminé la section de mise en route, vous pouvez faire les exercices suivants (Exemples supplémentaires : création de robots Amazon Lex ). Réservez un voyage utilise des attributs de session pour partager des informations entre les intentions afin d'engager une conversation dynamique avec l'utilisateur.
-
Étape suivante
Étape 3 : Création d'une fonction Lambda (console)