ほとんどの場合、設計時(エージェントの作成時)にコンテキストを構成します。 たとえば、「ショッピング カートにピザを追加したい」というトレーニング フレーズがあるとします。
高度なシナリオでは、実行時(実際の会話中)にコンテキストを取得したり設定したりするコードの作成が必要になる場合もあります。 たとえば、デバイスのロケーションを検出してコンテキストに追加し、後でそのロケーションを参照できます。
このドキュメントでは、Dialogflow コンソール、API またはフルフィルメントを使用して、設計時または実行時にコンテキストの取得と設定を行う方法について説明します。
コンテキストの命名
コンテキストの命名には次のルールが適用されます。
ルール | 例 |
---|---|
英数字からなる名前を使用します。 | mycontext1 |
スペースの代わりに - または _ を使用してください。 |
my-context-1 |
大文字と小文字は区別されません。 | Abc123 と abc123 は同じと見なされます。 |
API を使用した場合、コンテキスト名がすべて小文字になります。 | abc123 |
コンテキストを設計時に設定する
Console
- Dialogflow ES コンソールに移動します。
- エージェントを選択します。
- 左側のサイドバーのメニューで [Intents] を選択します。
- インテント データの [Contexts] セクションを展開します。
- インテント データの [Add output context] または [Add input context] フィールドをクリックします。
- コンテキストの名前を入力して [Return] を押します。
- 出力のコンテキストで、必要に応じて有効期間の円をクリックし、有効期間を変更します。
- 必要に応じてコンテキストを追加します。
- [保存] をクリックします。
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 メソッドをいつでも呼び出すことができます。