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.
Définition des attributs de demandes
Les attributs de demandes contiennent des informations spécifiques à la demande et s'appliquent uniquement à la demande en cours. Une application cliente envoie ces informations à Amazon Lex. Utilisez les attributs de demande pour transmettre des informations qui n'ont pas besoin de persister pendant la totalité de la session. Vous pouvez utiliser vos propres attributs de demandes ou des attributs prédéfinis. Pour envoyer des attributs de demandes, utilisez l'en-tête x-amz-lex-request-attributes
dans PostContent ou le champ requestAttributes
dans une demande PostText. Dans la mesure où les attributs de demandes ne sont pas conservés entre toutes les demandes (contrairement aux attributs de session), ils ne sont pas renvoyés dans les réponses PostContent
ou PostText
.
Note
Pour envoyer des informations qui persistent entre les demandes, utilisez des attributs de session.
L'espace de noms x-amz-lex:
est réservé pour les attributs de demandes prédéfinis. Ne créez pas d'attributs de demandes avec le préfixe x-amz-lex:
.
Définition des attributs de demandes prédéfinis
Amazon Lex fournit des attributs de demande prédéfinis pour gérer la manière dont il traite les informations envoyées à votre bot. Ces attributs ne sont pas stockés pendant toute la session, vous devez envoyer les attributs prédéfinis dans chaque demande. Tous les attributs prédéfinis sont dans l'espace de noms x-amz-lex:
.
Outre les attributs prédéfinis suivants, Amazon Lex fournit des attributs prédéfinis pour les plateformes de messagerie. Pour obtenir la liste de ces attributs, consultez Déploiement d'un robot Amazon Lex sur une plateforme de messagerie.
Définir le type de réponse
Si vous avez deux applications clientes dotées de fonctionnalités différentes, il se peut que vous ayez besoin de limiter le format des messages dans une réponse. Par exemple, vous pouvez limiter les messages envoyés à un client Web au texte brut, mais permettre à un client mobile d'utiliser à la fois du texte brut et du SSML (Speech Synthesis Markup Language). Pour définir le format des messages renvoyés par les opérations PostContent et PostText, utilisez l'attribut de requête x-amz-lex:accept-content-types"
.
Vous pouvez définir l'attribut sur n'importe quelle combinaison des types de messages 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.
Amazon Lex renvoie uniquement les messages dont le type est spécifié dans le Message
champ de réponse. Vous pouvez définir plusieurs valeurs en les séparant par une virgule. Si vous utilisez des groupes de messages, chaque groupe de messages doit contenir au moins un message du type spécifié. Dans le cas contraire, vous recevrez une erreur NoUsableMessageException
. Pour de plus amples informations, veuillez consulter Groupes de messages.
Note
L'attribut de requête x-amz-lex:accept-content-types
n'a aucun effet sur le contenu du corps HTML. Le contenu d'une réponse d'opération PostText
est toujours en texte UTF-8 brut. Le corps d'une réponse d'opération PostContent
contient des données au format défini dans l'en-tête Accept
de la requête.
Définition du fuseau horaire de votre choix
Pour définir le fuseau horaire qui permet de résoudre les dates en fonction du fuseau horaire de l'utilisateur, utilisez l'attribut de demande x-amz-lex:time-zone
. Si vous ne spécifiez pas de fuseau horaire dans l'attribut x-amz-lex:time-zone
, la valeur par défaut dépend de la région que vous utilisez pour votre bot.
Région | Fuseau horaire par défaut |
---|---|
USA Est (Virginie du Nord) |
America/New_York
|
USA Ouest (Oregon) |
America/Los_Angeles
|
Asie-Pacifique (Singapour) |
Asia/Singapore
|
Asie-Pacifique (Sydney) |
Australia/Sydney
|
Asie-Pacifique (Tokyo) |
Asia/Tokyo
|
Europe (Francfort) |
Europe/Berlin
|
Europe (Irlande) |
Europe/Dublin
|
Europe (Londres) |
Europe/London
|
Par exemple, si l'utilisateur répond tomorrow
à la question « Quel jour souhaitez-vous que votre colis soit livré ? » la date réelle de livraison du colis dépend du fuseau horaire de l'utilisateur. Par exemple, lorsqu'il est 1 h le 16 septembre à New York, il est 22 h le 15 septembre à Los Angeles. Si votre service fonctionne dans la région de l'est des États-Unis (Virginie du Nord) et qu'une personne de Los Angeles commande un colis à livrer « demain » en utilisant le fuseau horaire par défaut, le colis sera livré le 17 et non le 16. Toutefois, si vous définissez l'attribut de demande x-amz-lex:time-zone
sur America/Los_Angeles
, le colis sera livré le 16.
Vous pouvez utiliser n'importe quel nom de fuseau horaire IANA (Internet Assigned Number Authority) pour définir cet attribut. Pour obtenir la liste des noms de fuseaux horaires, consultez la liste des fuseaux horaires de la tz database
Définition des attributs de demandes spécifiés par l'utilisateur
Un attribut de demande défini par l'utilisateur correspond à des données que vous envoyez au bot dans chaque demande. Vous envoyez les informations dans l'en-tête amz-lex-request-attributes
d'une demande PostContent
ou dans le champ requestAttributes
d'une demande PostText
.
Pour envoyer des attributs de demande à Amazon Lex, vous devez créer une string-to-string carte des attributs. L'exemple suivant montre comment mapper des attributs de demandes :
{ "attributeName": "attributeValue", "attributeName": "attributeValue" }
Pour l'opération PostText
, vous insérez le mappage dans le corps de la requête en utilisant le champ requestAttributes
comme suit :
"requestAttributes": { "attributeName": "attributeValue", "attributeName": "attributeValue" }
Pour l'opération PostContent
, vous codez le mappage en base64, puis l'envoyez en tant qu'en-tête x-amz-lex-request-attributes
.
Si vous envoyez des données structurées ou binaires dans un attribut de demande, vous devez tout d'abord convertir les données en chaîne simple. Pour de plus amples informations, veuillez consulter Définition d'attributs complexes.