Expressions adaptativesAdaptive expressions

s’applique à : SDK v4APPLIES TO: SDK v4

Les robots utilisent des expressions adaptatives pour évaluer le résultat d’une condition basée sur les informations d’exécution disponibles en mémoire pour la boîte de dialogue ou le système de génération de langage .Bots use adaptive expressions to evaluate the outcome of a condition based on runtime information available in memory to the dialog or the Language Generation system. Ces évaluations déterminent la façon dont votre bot réagit aux entrées utilisateur et d’autres facteurs qui ont un impact sur la fonctionnalité du bot.These evaluations determine how your bot reacts to user input and other factors that impact bot functionality.

Les expressions adaptatives répondent à ce besoin fondamental en fournissant un langage d’expression adaptatif qui peut être utilisé avec le kit de développement logiciel (SDK) de bot Framework et d’autres composants de l’IA conversationnel, tels que bot Framework composer, la génération de langage, des boîtes de dialogue adaptativeset des modèles de cartes adaptatives.Adaptive expressions address this core need by providing an adaptive expression language that can be used with the Bot Framework SDK and other conversational AI components, like Bot Framework Composer, Language Generation, Adaptive dialogs, and Adaptive Cards templating.

Une expression adaptative peut contenir une ou plusieurs valeurs explicites, fonctions prédéfinies ou fonctions personnalisées.An adaptive expression can contain one or more explicit values, prebuilt functions, or custom functions. Les consommateurs d’expressions adaptatives ont également la possibilité d’injecter des fonctions supplémentaires prises en charge.Consumers of adaptive expressions also have the capability to inject additional supported functions. Par exemple, tous les modèles de génération de langage sont disponibles sous forme de fonctions, ainsi que des fonctions supplémentaires qui sont uniquement disponibles au sein de l’utilisation d’expressions adaptatives par ce composant.For example, all language generation templates are available as functions as well as additional functions that are only available within that component's use of adaptive expressions.

OpérateursOperators

Les expressions adaptatives prennent en charge les types d’opérateurs et la syntaxe d’expression suivants :Adaptive expressions support the following operator types and expression syntax:

  • arithmétiquearithmetic
  • comparaisoncomparison
  • logicallogical
  • syntaxe d’autres opérateurs et expressionsother operators and expressions syntax
OpérateurOperator FonctionnalitésFunctionality Équivalent de fonction prédéfiniePrebuilt function equivalent
+ Addition.Addition. Exemple : A + BExample: A + B addadd
- Soustraction.Subtraction. Exemple : A-BExample: A - B subsub
unaire +unary + Valeur positive.Positive value. Exemple : +1, +AExample: +1, +A N/AN/A
unaire -unary - Valeur négative.Negative value. Exemple :-2,-BExample: -2, -B N/AN/A
* Multiplication.Multiplication. Exemple : A * BExample: A * B mulmul
/ Division.Division. Exemple : A / BExample: A / B divdiv
^ Élévation à la puissance.Exponentiation. Exemple : A ^ BExample: A ^ B expexp
% Modulo.Modulus. Exemple : A % BExample: A % B modmod

VariablesVariables

Les variables sont toujours référencées par leur nom au format ${myVariable}.Variables are always referenced by their name in the 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().They can be referenced either by the property selector operator in the form of myParent.myVariable, using the item index selection operator like in myParent.myList[0], or by the getProperty() function.

Il existe deux variables spéciales.There are two special variables. [] représente une liste vide et {} représente un objet vide.[] represents an empty list, and {} represents a empty object.

Valeurs explicitesExplicit values

Les valeurs explicites peuvent être placées entre guillemets simples 'myExplicitValue' ou guillemets doubles "myExplicitValue".Explicit values can be enclosed in either single quotes 'myExplicitValue' or double quotes "myExplicitValue".

FonctionsFunctions

Une expression adaptative a une ou plusieurs fonctions.An adaptive expression has one or more functions. 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 .For more information about functions supported by adaptive expressions, see the prebuilt functions reference article.

Bot Framework ComposerBot Framework Composer

Bot Framework composer est un canevas de création visuelle Open source qui permet aux développeurs et aux équipes pluridisciplinaires de créer des robots.Bot Framework Composer is an open-source visual authoring canvas for developers and multidisciplinary teams to build bots. Composer utilise des expressions adaptatives pour créer, calculer et modifier des valeurs.Composer uses adaptive expressions to create, calculate, and modify values. 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.Adaptive expressions can be used in language generation template definitions and as properties in the authoring canvas. Comme indiqué dans l’exemple ci-dessous, les propriétés en mémoire peuvent également être utilisées dans une expression adaptative.As seen in the example below, properties in memory can also be used in an adaptive expression.

L’expression (dialog.orderTotal + dialog.orderTax) > 50 ajoute les valeurs des propriétés dialog.orderTotal et dialog.orderTax , et prend la valeur True si la somme est supérieure à 50 ou False si la somme est inférieure à 50.The expression (dialog.orderTotal + dialog.orderTax) > 50 adds the values of the properties dialog.orderTotal and dialog.orderTax, and evaluates to True if the sum is greater than 50 or False if the sum is less than 50.

Pour plus d’informations sur la façon dont les expressions sont utilisées dans la mémoire, consultez le Flow et la mémoire de conversation .Read Conversation flow and memory for more information about how expressions are used in memory.

Génération de langageLanguage generation

Les expressions adaptatives sont utilisées par les systèmes de génération de langage (GL) pour évaluer les conditions décrites dans modèles LG.Adaptive expressions are used by language generation (LG) systems to evaluate conditions described in LG templates. 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.In the example below, the join prebuilt function is used to list all values in the 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, consultez la section utilisation de la fonction prégénérée dans les variantes de l’article format de fichier. LG .Read the using prebuilt function in variations section of the .lg file format article for more information.

Modèles de cartes adaptativesAdaptive Cards templating

Les modèles de cartes adaptatives peuvent être utilisés par les développeurs de robots et d’autres technologies pour séparer les données de la disposition dans une carte adaptative.Adaptive Cards templating can be used by developers of bots and other technologies to separate data from the layout in an Adaptive Card. Les développeurs peuvent fournir des données Inline avec la AdaptiveCard charge utile, ou l’approche la plus courante pour séparer les données du modèle.Developers can provide data inline with the AdaptiveCard payload, or the more common approach of separating the data from the template.

Par exemple, imaginons que vous disposiez des données suivantes :For example, say you have the following data:

{
    "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 au format JSON.The message property is a JSON-serialized string. Pour accéder aux valeurs dans la chaîne, la fonction JSON prégénérée peut être appelée :To access the values within the string, the json prebuilt function can be called:

{
    "type": "TextBlock",
    "text": "${json(message).releaseName}"
}

Et aboutiront à l’objet suivant :And will result to the following object:

{
    "type": "TextBlock",
    "text": "Release-104"
}

Pour plus d’informations et des exemples, consultez la documentation sur les modèles de cartes adaptatives.For more information and examples see the adaptive cards templating documentation.

Ressources supplémentairesAdditional resources