コンテキストの管理

ほとんどの場合、設計時(エージェントの作成時)にコンテキストを構成します。 たとえば、「ショッピング カートにピザを追加したい」というトレーニング フレーズがあるとします。

高度なシナリオでは、実行時(実際の会話中)にコンテキストを取得したり設定したりするコードの作成が必要になる場合もあります。 たとえば、デバイスの位置を検出してコンテキストに追加した場合、後でそのロケーションを参照できます。

このドキュメントでは、Dialogflow コンソールAPI またはフルフィルメントを使用して、設計時または実行時にコンテキストの取得と設定を行う方法について説明します。

コンテキストの命名

コンテキストの命名には次のルールが適用されます。

ルール
英数字からなる名前を使用します。 mycontext1
スペースの代わりに - または _ を使用してください。 my-context-1
大文字と小文字は区別されません。 Abc123abc123 は同じと見なされます。
API を使用した場合、コンテキスト名がすべて小文字になります。 abc123

コンテキストを設計時に設定する

コンソール

  1. Dialogflow コンソールに移動します。
  2. エージェントを選択します。
  3. 左側のサイドバーのメニューで [Intents] を選択します。
  4. インテント データの [Contexts] セクションを展開します。
  5. インテント データの [Add output context] または [Add input context] フィールドをクリックします。
  6. コンテキストの名前を入力して [Return] を押します。
  7. 出力のコンテキストで、必要に応じて有効期間の円をクリックし、有効期間を変更します。 ライフサイクル UI のスナップショット
  8. 必要に応じてコンテキストを追加します。
  9. [Save] をクリックします。

API

インテントのリファレンスをご覧ください。

コンテキストを実行時に設定する

フルフィルメント

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 タイプに対する create、delete、update メソッドをいつでも呼び出すことができます。

コンテキストを実行時に取得する

フルフィルメント

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 メソッドをいつでも呼び出すことができます。