Expressions adaptatives
S'APPLIQUE À : SDK v4
Les bots utilisent des expressions adaptatives pour évaluer le résultat d’une condition en fonction des informations d’exécution disponibles en mémoire dans la boîte de dialogue ou le système de génération de langage. Ces évaluations déterminent la façon dont votre bot réagit aux entrées d’utilisateur et d’autres facteurs qui ont un impact sur la fonctionnalité du bot.
Les expressions adaptatives répondent à ce besoin principal en fournissant un langage d’expression adaptatif qui peut être utilisé avec le Kit de développement logiciel (SDK) Bot Framework et d’autres composants ia conversationnels, tels que Bot Framework Composer, La génération de langage, les dialogues adaptatifs et les modèles de cartes adaptatives.
Une expression adaptative peut contenir une ou plusieurs valeurs explicites, fonctions prédéfinies ou fonctions personnalisées. Les consommateurs d’expressions adaptatives ont également la possibilité d’injecter des fonctions supplémentaires prises en charge. Par exemple, tous les modèles de génération de langage sont disponibles en tant que fonctions, ainsi que des fonctions supplémentaires qui sont uniquement disponibles dans l’utilisation d’expressions adaptatives de ce composant.
Opérateurs
Les expressions adaptatives prennent en charge les types d’opérateurs et la syntaxe d’expression suivants :
- Opérateurs arithmétiques
- Opérateurs de comparaison
- Opérateurs logiques
- autres opérateurs et syntaxe d’expressions
Opérateur | Fonctionnalités | Équivalent de fonction prédéfinie |
---|---|---|
+ | Addition. Exemple : A + B | add |
- | Soustraction. Exemple : A - B | sub |
unaire + | Valeur positive. Exemple : +1, +A | S/O |
unaire - | Valeur négative. Exemple : -2, -B | S/O |
* | Multiplication. Exemple : A * B | mul |
/ | Division. Exemple : A / B | div |
^ | Élévation à la puissance. Exemple : A ^ B | exp |
% | Modulo. Exemple : % B | mod |
Variables
Les variables sont toujours référencées par leur nom au format ${myVariable}
. Elles peuvent être référencées par l’opérateur du sélecteur de propriété sous la forme myParent.myVariable
, à l’aide de l’opérateur de sélection d’index d’élément comme dans myParent.myList[0]
ou par la fonction getProperty().
Il existe deux variables spéciales. [] représente une liste vide et {} représente un objet vide.
Valeurs explicites
Les valeurs explicites peuvent être placées entre guillemets simples 'myExplicitValue' ou guillemets doubles "myExplicitValue".
Functions
Une expression adaptative a une ou plusieurs fonctions. Pour plus d’informations sur les fonctions prises en charge par les expressions adaptatives, consultez l’article de référence sur les fonctions prédéfinies .
Bot Framework Composer
Bot Framework Composer est un canevas de création visuelle open source destiné aux développeurs et aux équipes pluridisciplinaires pour créer des bots. Composer utilise des expressions adaptatives pour créer, calculer et modifier des valeurs. Les expressions adaptatives peuvent être utilisées dans les définitions de modèle de génération de langage et en tant que propriétés dans le canevas de création. Comme indiqué dans l’exemple ci-dessous, les propriétés en mémoire peuvent également être utilisées dans une expression adaptative.
L’expression (dialog.orderTotal + dialog.orderTax) > 50
ajoute les valeurs des propriétés dialog.orderTotal
et dialog.orderTax
évalue si la somme est supérieure à True
50 ou False
si la somme est inférieure ou inférieure à 50.
Lisez le flux de conversation et la mémoire pour plus d’informations sur la façon dont les expressions sont utilisées en mémoire.
Génération de langage
Les expressions adaptatives sont utilisées par les systèmes de génération de langage (LG) pour évaluer les conditions décrites dans les modèles LG. Dans l’exemple ci-dessous, la fonction prédéfinie de jointure est utilisée pour répertorier toutes les valeurs de la recentTasks
collection.
# RecentTasks
- IF: ${count(recentTasks) == 1}
- Your most recent task is ${recentTasks[0]}. You can let me know if you want to add or complete a task.
- ELSEIF: ${count(recentTasks) == 2}
- Your most recent tasks are ${join(recentTasks, ', ', ' and ')}. You can let me know if you want to add or complete a task.
- ELSEIF: ${count(recentTasks) > 2}
- Your most recent ${count(recentTasks)} tasks are ${join(recentTasks, ', ', ' and ')}. You can let me know if you want to add or complete a task.
- ELSE:
- You don't have any tasks.
Pour plus d’informations, lisez la fonction prédéfinie à l’aide de la section variantes de l’article de format de fichier .lg.
Création de modèles de cartes adaptatives
Les modèles de cartes adaptatives peuvent être utilisés par les développeurs de bots et d’autres technologies pour séparer les données de la disposition dans une carte adaptative. Les développeurs peuvent fournir des données inline avec la AdaptiveCard
charge utile ou l’approche plus courante de séparation des données du modèle.
Par exemple, supposons que vous disposiez des données suivantes :
{
"id": "1291525457129548",
"status": 4,
"author": "Matt Hidinger",
"message": "{\"type\":\"Deployment\",\"buildId\":\"9542982\",\"releaseId\":\"129\",\"buildNumber\":\"20180504.3\",\"releaseName\":\"Release-104\",\"repoProvider\":\"GitHub\"}",
"start_time": "2018-05-04T18:05:33.3087147Z",
"end_time": "2018-05-04T18:05:33.3087147Z"
}
La message
propriété est une chaîne sérialisée JSON. Pour accéder aux valeurs de la chaîne, la fonction prédéfinie json peut être appelée :
{
"type": "TextBlock",
"text": "${json(message).releaseName}"
}
Et aboutira à l’objet suivant :
{
"type": "TextBlock",
"text": "Release-104"
}
Pour plus d’informations et d’exemples, consultez la documentation de création de modèles de carte adaptative.
Ressources supplémentaires
- Package NuGet AdaptiveExpressions pour C#
- package npm adaptive-expressions pour JavaScript
- Fonctions prédéfinies prises en charge par la bibliothèque d’expressions adaptatives
- Informations de référence sur l’API C#
- Informations de référence sur l’API JavaScript