在大多數情況下,您會在設計階段 (建構代理程式時) 設定情境。舉例來說,如果訓練詞組是「I would like to add pizza to my shopping cart」(我想將披薩加入購物車)。
在某些進階情境中,您可能也需要編寫程式碼,以便在執行階段 (即在即時對話期間) 取得及設定某些情境。舉例來說,您偵測到裝置位置,並將該位置新增至情境,以便日後參照該位置。
本文說明如何使用 Dialogflow 主控台、API 或執行單元,在設計和執行階段取得及設定情境。
命名結構定義
命名慣例適用下列規則:
| 規則 | 範例 |
|---|---|
| 使用英數字元組合的名稱。 | mycontext1 |
使用 - 或 _ 代替空格。 |
my-context-1 |
| 名稱不區分大小寫。 | Abc123 和 abc123 視為相等。 |
| 使用 API 時,所有背景資訊名稱均為小寫。 | abc123 |
在設計階段設定情境
控制台
- 前往 Dialogflow ES 主控台。
- 選取代理程式。
- 選取左側欄選單中的 [Intents] (意圖)。
- 展開意圖資料的「Contexts」部分。
- 按一下意圖資料中的「Add output context」或「Add input context」欄位。
- 為背景資訊輸入名稱,然後按下 Return 鍵。
- 針對輸出內容,您可以選擇按一下效期圓圈,然後變更效期。

- 視需要加入更多內容。
- 按一下 [儲存]。
API
請參閱意圖參考資料。
在執行階段設定情境
Fulfillment
當 Webhook 服務傳送 WebhookResponse 時,請將 outputContexts 欄位設為所需的有效結構定義。
API
Sessions 類型 detectIntent 呼叫的要求包含 queryParameters.contexts 欄位,用於設定有效的背景資訊。
以下是 detectIntent 要求的 REST JSON 範例:
POST https://dialogflow.googleapis.com/v2/{session=projects/*/agent/sessions/*}:detectIntent
{
"queryInput": {
"text": {
"languageCode": "en-US",
"text": "I would like to add pizza to my shopping cart."
}
},
"queryParams": {
"contexts": [{
"name": "projects/project-id/agent/sessions/session-id/contexts/product-chosen",
"lifespanCount": 5,
"parameters": {
"product": "Pizza",
"device-location" "@52.3377871,4.8698096,17z"
}
}]
}
}
您隨時也可以在 Contexts 類型上呼叫建立、刪除和更新方法。
在執行階段取得背景資訊
Fulfillment
當 Webhook 服務收到 WebhookRequest 時,queryResult.outputContexts 欄位會包含有效的背景資訊。
API
對 Sessions 類型 detectIntent 呼叫的回應會包含 queryResult.outputContexts 欄位,其中提供有效背景資訊清單。
以下是 detectIntent 回應的 REST JSON 範例:
{
"responseId": "response-id",
"queryResult": {
"queryText": "I would like to add pizza to my shopping cart.",
"parameters": {
"product": "pizza"
},
"allRequiredParamsPresent": true,
"fulfillmentText": "The product has been added.",
"fulfillmentMessages": [
{
"text": {
"text": [
"The product has been added."
]
}
}
],
"outputContexts": [
{
"name": "projects/project-id/agent/sessions/session-id/contexts/product-chosen",
"lifespanCount": 5,
"parameters": {
"product": "Pizza",
"device-location" "@52.3377871,4.8698096,17z"
}
}
],
"intent": {
"name": "projects/project-id/agent/intents/intent-id",
"displayName": "buy-product"
},
"intentDetectionConfidence": 0.8057143,
"languageCode": "en",
}
}
您隨時也可以對 Contexts 類型呼叫 get 和 list 方法。