自適性表達式
適用於: SDK v4
Bot 會使用自適性表達式,根據對話或 語言產生 系統記憶體中可用的運行時間資訊來評估條件的結果。 這些評估會決定 Bot 如何回應使用者輸入,以及影響 Bot 功能的其他因素。
調適型表達式藉由提供可搭配 Bot Framework SDK 和其他交談式 AI 元件使用的調適型表達式語言,例如 Bot Framework Composer、 語言產生、 調適型對話和 調適型卡片範本,來解決此核心需求。
調適型表達式可以包含一或多個明確值、 預先建置的函式或自定義函式。 調適型表達式的取用者也能夠插入其他支援的函式。 例如,所有語言產生範本都可以做為函式,以及只能在該元件使用調適型表達式內的其他函式。
操作員
自適性表示式支援下列運算元類型和表示式語法:
- 演算法
- 比較
- 邏輯
- 其他運算子和表達式語法
運算子 | 功能 | 預先建置的函式對等 |
---|---|---|
+ | 加法。 範例:A + B | add |
- | 減法。 範例:A - B | 子 |
一元 + | 正值。 範例:+1、+A | N/A |
元- | 負值。 範例:-2、-B | N/A |
* | 乘法。 範例:A * B | mul |
/ | 除法。 範例:A/ B | div |
^ | 指數。 範例:A ^ B | exp |
% | 模數。 範例:A % B | 國防部 |
變數
變數的名稱一律會以 格式 ${myVariable}
參考。 屬性選取器運算符可以使用 中的專案索引選取運算符 myParent.myVariable
,例如 in myParent.myList[0]
或 getProperty() 函式來參考它們。
有兩個特殊變數。 [] 代表空的清單,並 {} 代表空的 物件。
明確值
明確值可以括在單引號 'myExplicitValue' 或雙引號 “myExplicitValue” 中。
函式
調適型表達式具有一或多個函式。 如需自適性表示式所支援函式的詳細資訊,請參閱預先建置的 函 式參考文章。
Bot Framework 編輯器
Bot Framework Composer 是開放原始碼視覺撰寫畫布,供開發人員和多重專業小組用來建立 Bot。 Composer 會使用自適性表達式來建立、計算和修改值。 調適型表示式可用於語言產生範本定義,並在撰寫畫布中做為屬性。 如下列範例所示,記憶體中的屬性也可以在調適型表達式中使用。
表示式(dialog.orderTotal + dialog.orderTax) > 50
會新增 屬性dialog.orderTotal
和 dialog.orderTax
的值,如果總和大於 50 或False
總和小於 50,則評估True
為 。
如需如何在記憶體中使用表達式的詳細資訊,請參閱 交談流程和記憶體 。
語言產生
自適性表達式是由語言產生 (LG) 系統用來評估 LG 範本中所述的條件。 在下列範例中, 聯 結預先建置函式用來列出集合中的所有 recentTasks
值。
# 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 檔案格式文章的變化一節中使用預建函式。
調適型卡片範本化
Bot 和其他技術的開發人員可以使用調適型卡片範本化 ,將數據與調適型卡片中的版面配置分開。 開發人員可以提供 內嵌 數據與 AdaptiveCard
承載,或比較常見的方法 ,將數據與範本分開。
例如,假設您有下列資料:
{
"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 串行化的字串。 若要存取字串中的值, 可以呼叫 json 預先建置函式:
{
"type": "TextBlock",
"text": "${json(message).releaseName}"
}
並會產生下列物件:
{
"type": "TextBlock",
"text": "Release-104"
}
如需詳細資訊和範例, 請參閱調適型卡片範本化檔。