自適性表達式

適用於: 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.orderTotaldialog.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"
}

如需詳細資訊和範例, 請參閱調適型卡片範本化檔

其他資源