在大多數情況下,您會在設計階段 (建構代理程式時) 設定情境。舉例來說,如果訓練詞組是「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 方法。