Options dynamiques
Une réponse options présente aux clients une liste de choix parmi lesquels choisir. Vous pouvez utiliser le paramètre dynamique pour générer la liste à partir d'options qui peuvent être différentes à chaque fois.
Les options dynamiques sont générées en fonction des données stockées dans une variable, qui doit être disponible pour l'étape posant la question. La variable source doit contenir un tableau de valeurs représentant chacune l'une des options qui
seront présentées au client. Les éléments du tableau peuvent être des valeurs simples telles que des chaînes ou des nombres (par exemple, [ "Raleigh", "Boston", "New York" ]) ou des objets JSON composés.
Un scénario courant pour les options dynamiques est lorsqu'un tableau est renvoyé à partir d'une API externe que vous appelez à l'aide d'une extension personnalisée. Par exemple, vous pouvez utiliser une extension personnalisée pour extraire une liste de cartes de crédit associées au compte d'un client. Vous pouvez ensuite utiliser des options dynamiques pour demander au client quelle carte utiliser lors de la conversation. (Pour plus d'informations sur les extensions personnalisées, voir Appel d'une extension personnalisée.)
Vos actions peuvent également remplir la variable source à l'aide d'expressions. Par exemple, vous pouvez utiliser une variable de session pour créer un panier contenant des articles que le client a décidé d'acheter. Une action de suppression d'un article du panier peut alors utiliser des options dynamiques pour afficher les articles du panier afin que le client puisse sélectionner celui à supprimer. (Pour plus d'informations sur l'utilisation d'expressions pour des valeurs de variable, voir Utilisation d'une expression pour affecter une valeur à une variable de session.)
Définition des options dynamiques
Pour définir une réponse client d'options dynamiques:
-
Dans une étape, cliquez sur Définir la réponse du client.
-
Choisissez le type de réponse Options.
-
Cliquez sur le bouton à bascule Dynamique.
-
Dans la zone Variable source, choisissez la variable qui contient le tableau qui définit les options dynamiques (par exemple, la variable contenant la réponse d'une extension personnalisée que vous avez appelée à l'étape précédente).
-
Facultatif: Dans la zone Option, écrivez une expression qui mappe les éléments du tableau source aux options qui seront répertoriées. Cette expression sert de modèle qui convertit chaque élément du tableau en une valeur significative qui sera affichée pour le client. Dans cette expression, utilisez la variable dynamique
${item}pour représenter l'élément.Dans certains cas, il n'est pas nécessaire de spécifier une expression:
-
Si les éléments du tableau sont des valeurs simples telles que des chaînes ou des entiers, la valeur de chaque élément est automatiquement affichée en tant qu'option. Toutefois, vous pouvez définir un mappage si vous souhaitez manipuler ou reformater les éléments pour les rendre plus significatifs. Par exemple, vous pouvez utiliser l'expression
"Part #" + ${item}pour afficher les numéros de référence au formatPart #12345. -
Si les éléments du tableau sont des objets JSON, le mappage par défaut recherche une propriété appelée
labelet utilise sa valeur (si elle est présente) comme option. Si l'élément n'inclut pas de propriétélabelou si vous ne souhaitez pas utiliser la valeur de la propriétélabelcomme option, vous devez écrire une expression pour spécifier un mappage. Vous pouvez utiliser la notation décimale pour faire référence à une propriété dans l'objet à l'aide de son chemin JSON (par exemple,${item}.name).
-
-
Facultatif: Cliquez sur Ajouter une option de rétromigration pour inclure un choix statique, tel que
None of the above, si les options ne sont pas celles souhaitées par le client. Vous pouvez ensuite ajouter une étape qui est conditionnée à cette option statique pour fournir une assistance supplémentaire. Pour ajouter la condition, écrivez une expression telle que${step_id}.value == "None of the above".
Exemples de mappage
Supposons que vous souhaitiez générer une action qui affiche une liste des animaux de compagnie disponibles pour adoption et qui invite le client à sélectionner un animal de compagnie pour afficher plus d'informations. La variable source contient un tableau provenant d'une extension personnalisée au format suivant:
[
{
"id": "123",
"name": "Casey",
"breed": "Shetland sheepdog",
"age": 3
},
{
"id": "987",
"name": "Phoebe",
"breed": "chihuahua",
"age": 7
}
]
Le schéma des éléments n'incluant pas de propriété label, le mappage par défaut n'est pas disponible. A la place, vous pouvez utiliser une expression pour générer un libellé complexe qui inclut des données provenant de plusieurs
propriétés différentes. Par exemple, vous pouvez utiliser l'expression ${item}.name + " (" + ${item}.breed + ", age " + ${item}.age + ")" pour définir les libellés d'option:

N'oubliez pas que vous pouvez utiliser des méthodes d'expression pour manipuler les valeurs de la variable source de différentes manières. Par exemple, vous pouvez avoir une action que les clients utilisent pour sélectionner une carte de crédit
pour le paiement, mais pour des raisons de sécurité, vous ne souhaitez pas afficher la totalité du numéro de carte. Vous pouvez écrire une expression qui utilise la méthode substring() pour n'inclure que les quatre derniers chiffres
de chaque numéro de carte (par exemple, "Card ending in " + ${item}.card_number.substring(16, 20)).
Référencement de l'élément sélectionné
Une fois que le client a sélectionné l'une des options générées dynamiquement, vous devrez probablement référencer l'élément sélectionné dans une étape ultérieure.
Si vous référencez la variable d'action représentant la réponse du client, la valeur par défaut est d'utiliser la valeur de l'option sélectionnée. Toutefois, dans certaines situations, vous ne souhaiterez peut-être pas utiliser la même valeur que celle utilisée pour afficher l'option au client. A la place, vous devrez peut-être utiliser un identificateur unique ou une autre propriété qui identifie sans ambiguïté l'option sélectionnée.
Par exemple, si le client sélectionne un animal de compagnie pour afficher plus d'informations, vous devrez probablement utiliser un identificateur unique (la propriété id dans notre exemple) pour interroger la base de données,
car le nom, l'âge et la race de l'animal de compagnie peuvent ne pas être uniques. Ou si le client sélectionne une carte de crédit parmi des options qui n'affichent que les quatre derniers chiffres, vous devrez utiliser le numéro de carte
de crédit complet pour accéder aux détails du compte ou effectuer une transaction.
Dans cette situation, vous pouvez écrire une expression pour accéder aux propriétés d'origine de l'élément sélectionné:
-
Créez ou éditez une étape qui suit l'étape dans laquelle le client effectue une sélection parmi les options dynamiques.
-
Dans la section Valeurs de variable, écrivez une expression pour affecter une valeur à une variable de session. (Pour plus d'informations, voir Utilisation d'une expression pour affecter une valeur à une variable de session.)
-
Dans l'éditeur d'expression, entrez un signe dollar (
$), puis sélectionnez l'étape dans laquelle le client a sélectionné l'option dynamique. -
Utilisez le nom de propriété
itempour représenter l'élément sélectionné et la notation à points pour accéder à ses propriétés. Par exemple, l'expression suivante accède à la propriétéidde l'élément sélectionné à l'étape précédente:${step_331}.item.idVous pouvez utiliser une expression complexe pour construire une valeur à l'aide de plusieurs propriétés de l'élément sélectionné. Par exemple, vous pouvez utiliser une expression telle que
${step_123}.item.firstname + " " + ${step_123}.item.lastnamepour construire le nom complet d'une personne. Utilisez l'expression pour définir la valeur dans le format dont vous avez besoin pour effectuer l'action requise.