Partager via


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