在大多數情況下,您會在設計階段 (建構代理程式時) 設定情境。舉例來說,假設您有以下訓練詞組:「我想將披薩加入購物車。」
在某些進階情境中,您可能也想編寫程式碼,在執行階段 (即進行即時對話時) 取得及設定某些情境。舉例來說,您偵測到裝置位置並已新增至環境,因此稍後可以參照該位置。
本文說明如何使用 Dialogflow 控制台、API 或實現,在設計階段和執行階段取得及設定情境。
脈絡命名
命名環境適用下列規則:
| 規則 | 範例 |
|---|---|
| 使用英數字元組合的名稱。 | mycontext1 |
請使用 - 或 _,不要使用空格。 |
my-context-1 |
| 名稱不區分大小寫。 | Abc123 和 abc123 視為同等。 |
| 使用 API 時,所有背景資訊名稱都會是小寫。 | abc123 |
在設計階段設定情境
控制台
- 前往 Dialogflow ES 主控台。
- 選取代理程式。
- 選取左側欄選單中的「意圖」。
- 展開意圖資料的「Contexts」部分。
- 在意圖資料中,按一下「新增輸出背景資訊」或「新增輸入背景資訊」欄位。
- 為背景資訊輸入名稱,然後按下 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 方法。