Expressions pour les valeurs de variable
Vous pouvez utiliser des expressions FreeMarker pour les valeurs des variables dans les flux de dialogue.
Expressions pratiques
Conseil :
La saisie semi-automatique vous guide tout au long de l'écriture de ces expressions (et d'autres) Apache FreeMarker.Opération | Expression Freemarker | Type résultat |
---|---|---|
Obtenir le nom du flux parent | ${system.parentFlow} |
Chaîne |
Obtenir les données utiles de l'événement | ${skill.system.event.value.EVENT_NAME} |
Objet JSON |
Accéder au résultat du TLN | ${skill.system.nlpresult.value} |
Objet JSON |
Accéder à la variable de portée de compétence | ${skill.VAR_NAME} |
|
Variable d'étendue de flux d'accès | ${VAR_NAME} |
|
Paramètre d'entrée de flux d'accès | ${INPUT_PARAM_NAME} |
|
Accéder à la variable de portée utilisateur | ${user.VAR_NAME} |
|
Accéder à la variable de portée de profil | ${profile.VAR_NAME} |
|
Obtenir la réponse à l'intention de la réponse | ${skill.system.event.value.intent.answer} Note : Vous pouvez également utiliser |
|
Obtenir le nom d'intention |
|
Chaîne |
Obtenir le message d'erreur | ${skill.system.event.value.dialogError.errorMessage} |
Chaîne |
Accéder à l'entrée d'ensemble de ressources | ${skill.system.rb.RB_ENTRY_NAME} |
Ensemble de ressources |
Accéder à la valeur d'un paramètre personnalisé | ${skill.system.config.CUSTOM_PARAMETER_NAME} |
Chaîne |
Pour plus d'informations sur FreeMarker dans vos composants, voir Syntaxe du langage de modèle Apache FreeMarker.
Syntaxe du langage Apache FTL
${...}
. Vous pouvez inclure du code FTL dans les définitions de propriété de différents composants de flux de dialogue.
Vous pouvez également définir les expressions à l'aide de la directive if (
<#if>...</#if>
).
Pour ce faire... | ... Faire ceci |
---|---|
Lire les valeurs des variables. | Ajoutez la propriété value à l'aide de la notation avec point :
Par exemple :
|
Lire des valeurs des variables définies par des entités complexes. | Utilisez la notation avec point pour ajouter une propriété supplémentaire :
Par exemple :
Si vous utilisez une expression comme ${MyMoney} dans un composant System.Output d'une compétence avec un flux de dialogue basé sur YAML, vous verrez toutes les propriétés de l'objet JSON de devise référencé.
|
Retourner le jeu des valeurs définies pour une entité de liste de valeurs. | Utilisez la variable type et enumValues intégrée dans la syntaxe suivante :
|
Utilisez des éléments intégrés pour les chaînes, les tableaux (séquences), les nombres et les dates. Voir Informations de référence sur Apache FreeMarker. | Ajoutez un point d'interrogation (? ) et le nom de l'opération après la propriété value :
|
Concaténer des expressions FTL. | Reliez les opérations entre elles à l'aide d'un point d'interrogation (? ) :
|
Valeurs d'entité de référence dans les compétences multilingues
Lorsque vous possédez des compétences multilingues, vous devez vous assurer que Use Full Entity Matches (Utiliser les correspondances d'entité complètes) est réglé à true
dans le composant qui résout vos entités. Cela vous permet d'écrire les types d'expression suivantes :
- Expressions qui référencent la valeur de l'entité dans la langue de la conversation. Vous pouvez utiliser ces expressions pour présenter les valeurs d'entité aux utilisateurs dans des boutons, des messages de confirmation, etc.
Pour ces expressions, vous ajoutez
value
pour obtenir la valeur dans la langue de la conversation. Par exemple, si vous avez défini une variable de flux de dialogue,pizza
, et souhaitez référencer la valeur de l'entité PizzaSize dans une invite, vous utiliseriez ce qui suit dans l'expression :pizza.value.PizzaSize.value
(au lieu de simplementpizza.value.PizzaSize
). - Expressions qui référencent la valeur de l'entité dans la langue principale. La valeur de la langue principale sert en quelque sorte de clé pour les valeurs correspondantes dans toutes les langues de l'entité. Vous pouvez référencer cette valeur dans la logique applicative sans avoir à vous soucier de la langue de la conversation.
Pour ces expressions, vous ajoutez
primaryLanguageValue
(par exemple,pizza.value.PizzaSize.primaryLanguageValue
).