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.
Ajouter des conditions aux conversations dans les succursales
Vous pouvez utiliser le branchement conditionnel pour contrôler le chemin emprunté par votre client tout au long de la conversation avec votre bot. Vous pouvez diviser la conversation en fonction des valeurs des créneaux, des attributs de session, du contenu du mode de saisie et des champs de transcription d'entrée, ou d'une réponse d'Amazon Kendra.
Vous pouvez définir jusqu'à quatre branches. Chaque succursale a une condition qui doit être remplie pour qu'Amazon Lex V2 suive cette branche. Si aucune des branches n'a sa condition satisfaite, une branche par défaut est utilisée.
Lorsque vous définissez une branche, vous définissez l'action qu'Amazon Lex V2 doit entreprendre si les conditions correspondant à cette branche s'avèrent vraies. Vous pouvez définir l'une des actions suivantes :
-
Réponse envoyée à l'utilisateur.
-
Valeurs des emplacements à appliquer aux emplacements.
-
Valeurs des attributs de session pour la session en cours.
-
La prochaine étape de la conversation. Pour plus d’informations, consultez Création de parcours de conversation.
Chaque branche conditionnelle possède une expression booléenne qui doit être satisfaite pour qu'Amazon Lex V2 suive la branche. Il existe des opérateurs de comparaison et booléens, des fonctions et des opérateurs de quantification que vous pouvez utiliser pour vos conditions. Par exemple, la condition suivante renvoie true si le créneau {age} est inférieur à 24.
{age} < 24
La condition suivante renvoie true si le slot à valeurs multiples {toppings} contient le mot « ananas ».
{toppings} CONTAINS "pineapple"
Vous pouvez combiner plusieurs opérateurs de comparaison avec un opérateur booléen pour des conditions plus complexes. Par exemple, la condition suivante renvoie true si la valeur du slot {make} est « Honda » et que la valeur du slot {model} est « Civic ». Utilisez des parenthèses pour définir l'ordre d'évaluation.
({make} = "Honda") AND ({model} = "Civic")
Les rubriques suivantes fournissent des informations détaillées sur les opérateurs et les fonctions de branche conditionnels.
Note
Le 17 août 2022, Amazon Lex V2 a publié une modification de la façon dont les conversations sont gérées avec l'utilisateur. Cette modification vous permet de mieux contrôler le chemin emprunté par l'utilisateur tout au long de la conversation. Pour plus d’informations, consultez Modifications apportées aux flux de conversation dans Amazon Lex V2. Les robots créés avant le 17 août 2022 ne prennent pas en charge les messages d'accrochage par code de dialogue, la définition de valeurs, la configuration des étapes suivantes et l'ajout de conditions.
Rubriques
Opérateurs de comparaison
Amazon Lex V2 prend en charge les opérateurs de comparaison suivants pour les conditions :
-
Est égal à (=)
-
Pas égal à (! =)
-
Inférieur à (<)
-
Inférieur ou égal à (<=)
-
supérieure à (>)
-
Supérieur ou égal à (>=)
Lorsqu'un opérateur de comparaison est utilisé, il applique les règles suivantes.
-
Le côté gauche doit être une référence. Par exemple, pour référencer une valeur d'emplacement, vous utilisez
{slotName}
. Pour référencer une valeur d'attribut de session, vous utilisez[attribute]
. Pour le mode de saisie et la transcription d'entrée, vous utilisez$.inputMode
et$.inputTranscript
. -
Le côté droit doit être une constante et du même type que le côté gauche.
-
Toute expression faisant référence à un attribut qui n'a pas été défini est considérée comme non valide et n'est pas évaluée.
-
Lorsque vous comparez un emplacement à valeurs multiples, la valeur utilisée est une liste séparée par des virgules de toutes les valeurs interprétées.
Les comparaisons sont basées sur le type de slot de la référence. Elles sont résolues comme suit :
-
Chaînes : les chaînes sont comparées en fonction de leur représentation ASCII. Cette comparaison n'est pas sensible à la casse.
-
Nombres : les emplacements basés sur des nombres sont convertis de la représentation sous forme de chaîne en un nombre, puis comparés.
-
Date/heure : les créneaux temporels sont comparés en fonction de la série chronologique. La date ou l'heure antérieure est considérée comme inférieure. Pour les durées, les périodes plus courtes sont considérées comme plus courtes.
Opérateurs booléens
Amazon Lex V2 prend en charge les opérateurs booléens pour combiner les opérateurs de comparaison. Ils vous permettent de créer des instructions similaires aux suivantes :
({number} >= 5) AND ({number} <= 10)
Vous pouvez utiliser les opérateurs booléens suivants :
-
ET (&&)
-
OU (||)
-
PAS (!)
Opérateurs de quantification
Les opérateurs de quantification évaluent les éléments d'une séquence et déterminent si un ou plusieurs éléments satisfont à la condition.
-
CONTAINS — détermine si la valeur spécifiée est contenue dans un emplacement à valeurs multiples et renvoie la valeur true si c'est le cas. Par exemple,
{toppings} CONTAINS "pineapple"
renvoie true si l'utilisateur a commandé de l'ananas sur sa pizza.
Fonctions
Les fonctions doivent être préfixées par la chaînefn.
. L'argument de la fonction est une référence à un emplacement, à un attribut de session ou à un attribut de demande. Amazon Lex V2 fournit deux fonctions permettant d'obtenir des informations à partir des valeurs des slots, de SessionAttribute ou de RequestAttribute.
-
fn.Count () — compte le nombre de valeurs dans un emplacement à valeurs multiples.
Par exemple, si le slot
{toppings}
contient la valeur « pepperoni, ananas » :fn.COUNT({toppings}) = 2
-
fn.is_set () — la valeur est vraie si un emplacement, un attribut de session ou un attribut de demande est défini dans la session en cours.
Sur la base de l'exemple précédent :
fn.IS_SET({toppings})
-
fn.length () — la valeur est la longueur de la valeur de l'attribut de session, de la valeur du slot ou de l'attribut de slot défini dans la session en cours. Cette fonction ne prend pas en charge les emplacements à valeurs multiples ni les emplacements composites.
Exemple :
Si le slot
{credit-card-number}
contient la valeur « 123456781234 » :fn.LENGTH({credit-card-number}) = 12
Exemples d'expressions conditionnelles
Voici quelques exemples d'expressions conditionnelles. REMARQUE : $.
représente le point d'entrée de la réponse JSON Amazon Lex. La valeur suivante $.
sera analysée dans la réponse Amazon Lex pour récupérer la valeur. Les expressions conditionnelles utilisant le chemin JSON faisant référence au bloc de transcriptions dans la réponse Amazon Lex ne seront prises en charge que dans les mêmes paramètres régionaux qui prennent en charge les scores de transcription ASR.
Type de la valeur | Cas d’utilisation | Expression conditionnelle |
---|---|---|
Emplacement personnalisé | pizzaSize la valeur de l'emplacement est égale à grande |
{pizzaSize} = "large" |
Emplacement personnalisé | pizzaSize est égal à grand ou moyen |
{pizzaSize} = "large" OU {pizzaSize} = "medium" |
Emplacement personnalisé | Expressions avec () et AND/OR |
{pizzaType} = "pepperoni" OU {pizzaSize} = "medium" OU {pizzaSize} = "small" |
Emplacement personnalisé (emplacement à valeurs multiples) | Vérifiez si l'une des garnitures est de l'oignon | {toppings} CONTAINS "Onion" |
Emplacement personnalisé (emplacement à valeurs multiples) | Le nombre de garnitures est supérieur à 3 | fn.COUNT({topping}) > 2 |
AMAZON.AlphaNumeric |
bookingID est ABC123 |
{bookingID} = "ABC123" |
AMAZON.Number |
la valeur de la tranche d'âge est supérieure à 30 | {age} > 30 |
AMAZON.Number |
la valeur de la tranche d'âge est égale à 10 | {age} = 10 |
AMAZON.Date |
dateOfBirth valeur du créneau avant 1990 |
{dateOfBirth} < "1990-10-01" |
AMAZON.State |
destinationState la valeur du slot est égale à Washington |
{destinationState} = "washington" |
AMAZON.Country |
destinationCountry la valeur du slot n'est pas celle des États-Unis |
{destinationCountry} != "united states" |
AMAZON.FirstName |
firstName la valeur du slot est John |
{firstName} = "John" |
AMAZON.PhoneNumber |
phoneNumber la valeur du slot est 716767891932 |
{phoneNumer} = 716767891932 |
AMAZON.Percentage |
Vérifiez si la valeur du créneau en pourcentage est supérieure ou égale à 78 | {percentage} >= 78 |
AMAZON.EmailAddress |
emailAddress la valeur du slot est userA@hmail.com |
{emailAddress} = "userA@hmail.com" |
AMAZON.LastName |
lastName la valeur du slot est Doe |
{lastName} = "Doe" |
AMAZON.City |
La valeur du slot City est égale à Seattle | {city} = "Seattle" |
AMAZON.Time |
Il est après 20 heures | {time} > "20:00" |
AMAZON.StreetName |
streetName la valeur du slot est Boren Avenue |
{streetName} = "boren avenue" |
AMAZON.Duration |
travelDuration la valeur du slot est inférieure à 2 heures |
{travelDuration} < P2H |
Mode de saisie | Le mode de saisie est vocal | $.inputMode = "Speech" |
Transcription d'entrée | La transcription d'entrée est égale à « Je veux une grosse pizza » | $.inputTranscript = "I want a large pizza" |
Attribut de session | vérifier l'attribut customer_subscription_type | [customer_subcription_type] = "yearly" |
Attribut de demande | vérifier l'indicateur retry_enabled | ((retry_enabled)) = "TRUE" |
Réponse de Kendra | La réponse de Kendra contient une FAQ | fn.IS_SET(((x-amz-lex:kendra-search-response-question_answer-question-1))) |
Expression conditionnelle avec transcriptions | Expressions conditionnelles utilisant le chemin JSON des transcriptions | $.transcriptions[0].transcriptionConfidence < 0.8 AND $.transcriptions[1].transcriptionConfidence
> 0.5 |
Définir les attributs de session | Définissez les attributs de session à l'aide des transcriptions, du chemin JSON et des valeurs d'emplacement | [sessionAttribute] = "$.transcriptions..." AND
[sessionAttribute] = "{<slotName>}" |
Définir les valeurs des emplacements | Définissez les valeurs des emplacements à l'aide des attributs de session et des transcriptions (chemin JSON) | {slotName} = [<sessionAttribute>] AND
{slotName} = "$.transcriptions..." |
Note
slotName
fait référence au nom d'un emplacement dans le bot Amazon Lex. Si le slot n'est pas résolu (null), ou s'il n'existe pas, les assignations sont ignorées lors de l'exécution. sessionAttribute
fait référence au nom de l'attribut de session défini par le client au moment de la création.