Ajouter des conditions aux conversations dans les succursales - Amazon Lex

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.

Vous pouvez choisir différentes options pour le branchement conditionnel.

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.

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é pizzaSizela valeur de l'emplacement est égale à grande {pizzaSize} = "large"
Emplacement personnalisé pizzaSizeest é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 bookingIDest 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 dateOfBirthvaleur du créneau avant 1990 {dateOfBirth} < "1990-10-01"
AMAZON.State destinationStatela valeur du slot est égale à Washington {destinationState} = "washington"
AMAZON.Country destinationCountryla valeur du slot n'est pas celle des États-Unis {destinationCountry} != "united states"
AMAZON.FirstName firstNamela valeur du slot est John {firstName} = "John"
AMAZON.PhoneNumber phoneNumberla 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 emailAddressla valeur du slot est userA@hmail.com {emailAddress} = "userA@hmail.com"
AMAZON.LastName lastNamela 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 streetNamela valeur du slot est Boren Avenue {streetName} = "boren avenue"
AMAZON.Duration travelDurationla 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

slotNamefait 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. sessionAttributefait référence au nom de l'attribut de session défini par le client au moment de la création.