統合オプションのいずれかを使用していない場合は、エンドユーザーと直接対話するコードを記述する必要があります。会話ターンごとに Dialogflow の API を直接操作し、エンドユーザーの表現を送信してインテント一致を受け取る必要もあります。次の図は、API を操作するときの処理フローを示しています。
- エンドユーザーが表現を入力または発声します。
- サービスはこのエンドユーザー表現を Dialogflow にインテント検出リクエスト メッセージとして送信します。
- Dialogflow は、サービスにインテント検出レスポンス メッセージを送信します。このメッセージには、一致インテント、アクション、パラメータ、インテントに定義されたレスポンスに関する情報が組み込まれます。
- サービスが、データベース クエリや外部 API 呼び出しなど、必要に応じてアクションを実行します。
- サービスによってエンドユーザーにレスポンスが送信されます。
- エンドユーザーがレスポンスを確認または聞き取ります。
プロジェクトの設定と認証
API を呼び出す際は事前に、GCP プロジェクトと認証を設定する必要があります。設定クイックスタートの手順を使用してください。
エージェントのビルド
ほとんどの場合、Dialogflow ES コンソール(ドキュメントを表示、コンソールを開く)を使用してエージェントをビルドする必要があります。エージェントを作成するには、コンソール クイックスタート ページの手順を使用できます。また、高度なシナリオのエージェントを作成するには、Dialogflow API も使用できます。コンセプト ページの多くはコンソールを使用したエージェントの作成を中心に説明していますが、関連する API タイプへのリンクも提供します。
REST、gRPC、クライアント ライブラリ
Dialogflow API には、REST、gRPC、または指定されたクライアント ライブラリのいずれかを使用してアクセスできます。これらのオプションの詳細については、API の使用方法の概要をご覧ください。
セッション
セッションは、Dialogflow エージェントとエンドユーザー間の会話を表します。会話の始めにセッションを作成し、会話のターンごとにセッションを使用します。会話が終了すると、セッションの使用も終了します。
同じセッションを別のエンドユーザーとの同時会話には使用しないでください。Dialogflow は、アクティブなセッションごとに、現在アクティブなコンテキストを保持します。セッション データは Dialogflow によって 20 分間保存されます。
各セッションは、システムによって生成されたセッション ID によって一意に判別されます。新しいセッションを作成するには、インテント検出リクエストで新しいセッション ID を指定します。セッション ID は最大 36 バイトの文字列です。システムによって固有のセッション ID が生成されます。この ID には、乱数、ハッシュ化されたエンドユーザー ID など、生成しやすい任意の値を使用できます。
インテントの検出
API を使用してインタラクションを行う場合、サービスがエンドユーザーと直接対話します。会話ターンごとに、サービスによって Sessions
型の detectIntent
メソッドまたは streamingDetectIntent
メソッドが呼び出され、Dialogflow にエンドユーザーの表現が送信されます。Dialogflow は、一致インテント、アクション、パラメータ、インテントに定義されたレスポンスに関する情報で応答します。サービスは必要に応じてアクション(データベース クエリや外部 API の呼び出し)を実行し、エンドユーザーにメッセージを送信します。このプロセスは、会話が終了するまで続きます。
API クイックスタートページとハウツーページで、インテント検出を呼び出す例をご覧ください。