管理背景資訊

在大多數情況下,您會在設計階段 (建構代理程式時) 設定情境。舉例來說,假設您有以下訓練詞組:「我想將披薩加入購物車。」

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

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

脈絡命名

命名環境適用下列規則:

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

在設計階段設定情境

控制台

  1. 前往 Dialogflow ES 主控台
  2. 選取代理程式。
  3. 選取左側欄選單中的「意圖」
  4. 展開意圖資料的「Contexts」部分。
  5. 在意圖資料中,按一下「新增輸出背景資訊」或「新增輸入背景資訊」欄位。
  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 方法。