アダプティブ式Adaptive expressions

適用対象: SDK v4APPLIES TO: SDK v4

Bot は、アダプティブ式を使用して、ダイアログまたは 言語生成 システムに対してメモリで使用可能なランタイム情報に基づいて条件の結果を評価します。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. これらの評価によって、ボットがユーザー入力やボットの機能に影響するその他の要因にどのように反応するかが決まります。These evaluations determine how your bot reacts to user input and other factors that impact bot functionality.

アダプティブ式は、bot framework SDK や、 Bot Framework Composer言語生成アダプティブダイアログアダプティブカードテンプレートなどの他の会話 AI コンポーネントで使用できるアダプティブ式言語を提供することで、このコアニーズに対処します。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.

アダプティブ式には、明示的な値、事前構築済みの関数、またはカスタム関数を 1 つ以上含めることができます。An adaptive expression can contain one or more explicit values, prebuilt functions, or custom functions. アダプティブ式のコンシューマーでは、サポートされる追加の関数を挿入する機能も利用できます。Consumers of adaptive expressions also have the capability to inject additional supported functions. たとえば、すべての言語生成テンプレートは、関数として使用できます。また、そのコンポーネントがアダプティブ式を使用する場合にのみ使用できます。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.

オペレーターOperators

アダプティブ式では、以下の種類の演算子と式の構文がサポートされています。Adaptive expressions support the following operator types and expression syntax:

  • 算術arithmetic
  • 比較comparison
  • logicallogical
  • その他の演算子と式の構文other operators and expressions syntax
演算子Operator 機能Functionality 同等の事前構築済み関数Prebuilt function equivalent
+ 加算。Addition. 例:A + BExample: A + B addadd
- 減算。Subtraction. 例: A-BExample: A - B subsub
単項演算子 +unary + 正の値。Positive value. 例: +1、+AExample: +1, +A 該当なしN/A
単項演算子 -unary - 負の値。Negative value. 例:-2、-BExample: -2, -B 該当なしN/A
* 乗算。Multiplication. 例: A * BExample: A * B mulmul
/ 除算。Division. 例:A / BExample: A / B divdiv
^ 累乗。Exponentiation. 例:A ^ BExample: A ^ B expexp
% 剰余。Modulus. 例:A % BExample: A % B modmod

変数Variables

変数は常に、${myVariable} の形式の名前で参照されます。Variables are always referenced by their name in the format ${myVariable}. これらは、myParent.myVariable の形式のプロパティ セレクター演算子、myParent.myList[0] のような項目インデックス選択演算子の使用、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.

特殊な変数が 2 つあります。There are two special variables. [] は空のリストを表していて、 {} は空のオブジェクトを表しています。[] represents an empty list, and {} represents a empty object.

明示的な値Explicit values

明示的な値は、単一引用符 ' myExplicitValue ' または二重引用符 "myExplicitValue" のいずれかで囲むことができます。Explicit values can be enclosed in either single quotes 'myExplicitValue' or double quotes "myExplicitValue".

関数Functions

アダプティブ式には1つ以上の関数があります。An adaptive expression has one or more functions. アダプティブ式でサポートされている関数の詳細については、「構築済み 関数 のリファレンス」を参照してください。For more information about functions supported by adaptive expressions, see the prebuilt functions reference article.

Bot Framework ComposerBot Framework Composer

Bot Framework Composer は、開発者や分野横断的なチームがボットを構築するためのオープンソースのビジュアル作成キャンバスです。Bot Framework Composer is an open-source visual authoring canvas for developers and multidisciplinary teams to build bots. Composer では、アダプティブ式を使用して値を作成、計算、および変更します。Composer uses adaptive expressions to create, calculate, and modify values. アダプティブ式は、言語生成テンプレートの定義、および作成キャンバスのプロパティとして使用できます。Adaptive expressions can be used in language generation template definitions and as properties in the authoring canvas. 次の例に示すように、メモリ内のプロパティは、アダプティブ式でも使用できます。As seen in the example below, properties in memory can also be used in an adaptive expression.

式は、 (dialog.orderTotal + dialog.orderTax) > 50 プロパティとの値を dialog.orderTotal 加算 dialog.orderTax し、 True 合計が50より大きいか、または合計が50以下の場合はに評価し False ます。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 50 or less.

メモリでの式の使用方法の詳細については 、「メッセージ交換のフローとメモリ 」を参照してください。Read Conversation flow and memory for more information about how expressions are used in memory.

言語の生成Language generation

アダプティブ式は、「LG templates」で説明されている条件を評価するために、言語生成 (LG) システムによって使用されます。Adaptive expressions are used by language generation (LG) systems to evaluate conditions described in LG templates. 次の例では、 join 構築関数を使用して、コレクション内のすべての値を一覧表示し recentTasks ます。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.

詳細については、 lg ファイル形式に関する記事の「バリエーションで構築済みの関数を使用する」を参照してください。Read the using prebuilt function in variations section of the .lg file format article for more information.

アダプティブ カード テンプレートAdaptive Cards templating

アダプティブ カードテンプレートは 、ボットや他のテクノロジの開発者がアダプティブ カードのレイアウトからデータを分離するために使用できます。Adaptive Cards templating can be used by developers of bots and other technologies to separate data from the layout in an Adaptive Card. 開発者は、ペイロード をインラインで データを提供するか、テンプレート からデータを分離するより一般的 AdaptiveCard な方法を提供できますDevelopers can provide data inline with the AdaptiveCard payload, or the more common approach of separating the data from the template.

たとえば、次のデータがある場合です。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"
}

プロパティ message は、JSON でシリアル化された文字列です。The message property is a JSON-serialized string. 文字列内の値にアクセスするには 、json 事前構築済み関数を呼び出します。To access the values within the string, the json prebuilt function can be called:

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

そして、次のオブジェクトが返されます。And will result to the following object:

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

詳細と例については、アダプティブ カードテンプレート に関するドキュメントを参照してくださいFor more information and examples see the adaptive cards templating documentation.

その他のリソースAdditional resources