統合を使用しない場合は、エンドユーザーとやり取りするコードを記述する必要があります。会話ターンごとに、コードで Dialogflow API を呼び出してエージェントへのクエリを実行します。このガイドでは、コマンドラインで REST API を使用し、クライアント ライブラリを使用してエージェントを操作する方法について説明します。
始める前に
API を使用する予定がない場合は、このクイックスタートをスキップできます。
このガイドを読む前に、次の手順を行ってください。
- Dialogflow の基本について理解します。
- 手順に沿って設定してください。
- エージェントを作成するクイックスタート ガイドの手順を実行します。下記の手順では、そのガイドで開始したエージェントを使って作業を続けます。現在、そのエージェントがない場合は、
build-agent-quickstart.zip
をダウンロードし、ファイルをインポートします。
セッション
セッションは、Dialogflow エージェントとエンドユーザー間の会話を表します。会話の始めにセッションを作成し、会話のターンごとにセッションを使用します。会話が終了すると、セッションの使用も終了します。
同じセッションを別のエンドユーザーとの同時会話には使用しないでください。Dialogflow は、アクティブなセッションごとに、現在アクティブなコンテキストを保持します。セッション データは Dialogflow によって 20 分間保存されます。
各セッションは、システムによって生成されたセッション ID によって一意に判別されます。新しいセッションを作成するには、インテント検出リクエストで新しいセッション ID を指定します。セッション ID は最大 36 バイトの文字列です。システムによって固有のセッション ID が生成されます。この ID には、乱数、ハッシュ化されたエンドユーザー ID など、生成しやすい任意の値を使用できます。
インテントの検出
API を使用してインタラクションを行う場合、サービスがエンドユーザーと直接対話します。会話ターンごとに、サービスによって Sessions
型の detectIntent
メソッドまたは streamingDetectIntent
メソッドが呼び出され、Dialogflow にエンドユーザーの表現が送信されます。Dialogflow は、一致インテント、アクション、パラメータ、インテントに定義されたレスポンスに関する情報で応答します。サービスは必要に応じてアクション(データベース クエリや外部 API の呼び出し)を実行し、エンドユーザーにメッセージを送信します。このプロセスは、会話が終了するまで続きます。
以下のサンプルは、インテントを検出する方法を示しています。サンプルごとに、次の入力のサブセットを受け取ります。
- Project ID: 設定手順で作成したプロジェクトにはこのプロジェクト ID を使用してください。
- Session ID: エージェントをテストする場合は、任意の値を使用できます。たとえば、サンプルでは「123456789」が頻繁に使用されます。
- Text or texts: 単一のエンドユーザー表現またはエンドユーザー表現のリストです。複数の表現を指定した場合、各表現の検出インテントが呼び出されます。「I know french」で試してみてください。
- Language code: エンドユーザー表現の言語コードです。この例のエージェントには「en-US」を使用します。
REST
インテントを検出するには、Sessions
リソースの detectIntent
メソッドを呼び出します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID
- SESSION_ID: セッション ID
HTTP メソッドと URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/agent/sessions/SESSION_ID:detectIntent
リクエストの本文(JSON):
{ "query_input": { "text": { "text": "I know french", "language_code": "en-US" } } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "responseId": "856510ca-f617-4e25-b0bb-a26c0a59e030-19db3199", "queryResult": { "queryText": "I know french", "parameters": { "language": "French", "language-programming": "" }, "allRequiredParamsPresent": true, "fulfillmentText": "Wow! I didn't know you knew French. How long have you known French?", "fulfillmentMessages": [ { "text": { "text": [ "Wow! I didn't know you knew French. How long have you known French?" ] } } ], "outputContexts": [ { "name": "projects/PROJECT_ID/agent/sessions/123456789/contexts/set-language-followup", "lifespanCount": 2, "parameters": { "language": "French", "language.original": "french", "language-programming": "", "language-programming.original": "" } } ], "intent": { "name": "projects/PROJECT_ID/agent/intents/fe45022f-e58a-484f-96e8-1cbd6628f648", "displayName": "set-language" }, "intentDetectionConfidence": 1, "languageCode": "en" } }
レスポンスについて次の点に注意してください。
queryResult.intent
フィールドには、一致したインテントが含まれます。queryResult.fulfillmentMessages
フィールドの値には、インテント レスポンスが含まれます。これは、システムがエンドユーザーに転送するレスポンスです。queryResult.parameters
フィールドの値には、エンドユーザー表現から抽出されたパラメータが含まれます。queryResult.outputContext
フィールドにはアクティブなコンテキストが含まれます。
Go
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
その他の言語
C#: クライアント ライブラリ ページの C# の設定手順を行ってから、.NET 用の Dialogflow リファレンス ドキュメントをご覧ください。
PHP: クライアント ライブラリ ページの PHP の設定手順を行ってから、PHP 用の Dialogflow リファレンス ドキュメントをご覧ください。
Ruby: クライアント ライブラリ ページの Ruby の設定手順を行ってから、Ruby 用の Dialogflow リファレンス ドキュメントをご覧ください。
プロダクション
エージェントを本番環境で実行する場合は、必ずプロダクションのベスト プラクティスを実施してください。