管理背景資訊

在大多數情況下,您會在設計階段 (建構代理程式時) 設定情境。舉例來說,如果訓練詞組是「I would like to add pizza to my shopping cart」(我想將披薩加入購物車)。

在某些進階情境中,您可能也需要編寫程式碼,以便在執行階段 (即在即時對話期間) 取得及設定某些情境。舉例來說,您偵測到裝置位置,並將該位置新增至情境,以便日後參照該位置。

本文說明如何使用 Dialogflow 主控台API執行單元,在設計和執行階段取得及設定情境。

命名結構定義

命名慣例適用下列規則:

規則 範例
使用英數字元組合的名稱。 mycontext1
使用 -_ 代替空格。 my-context-1
名稱不區分大小寫。 Abc123abc123 視為相等。
使用 API 時,所有背景資訊名稱均為小寫。 abc123

在設計階段設定情境

控制台

  1. 前往 Dialogflow ES 主控台
  2. 選取代理程式。
  3. 選取左側欄選單中的 [Intents] (意圖)
  4. 展開意圖資料的「Contexts」部分。
  5. 按一下意圖資料中的「Add output context」或「Add input context」欄位。
  6. 為背景資訊輸入名稱,然後按下 Return 鍵。
  7. 針對輸出內容,您可以選擇按一下效期圓圈,然後變更效期。 壽命 UI 快照
  8. 視需要加入更多內容。
  9. 按一下 [儲存]

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 方法。