会話エージェント(Dialogflow CX)の会話(セッション)は、ステートマシンとして記述し、可視化できます。セッションの状態はページで表されます。
フローごとに多数のページを定義します。結合されたページでは、フローが設計されたトピックに関する完全な会話を処理できます。どの時点でも、正確に 1 つのページが現在のページであり、また現在のページがアクティブで、そのページに関連付けられたフローもアクティブであるとみなされます。すべてのフローには特別なスタートページがあります。フローが最初にアクティブになると、スタートページが現在のページになります。会話の各ターンでは、現在のページがそのまま表示されるか、別のページに遷移します。
各ページを、そのページが表す会話の状態に関連するエンドユーザーから情報を収集するように構成します。たとえば、次の図にピザ宅配業者の Food Order フローのページ(青で表示)作成します。図の Start ノードは Food Order フローの開始ページを表します。フローが完了すると、Confirmation フローに遷移します。
ページのライフサイクル
ページがアクティブになると、エージェントはいくつかの手順を遂行します。これには、エントリのフルフィルメント、フォームへの事前入力、状態ハンドラの評価、フォーム パラメータのプロンプト、エンドユーザーへのレスポンス メッセージの送信、ページの変更またはループの繰り返しなどが含まれます。
このプロセスの詳細は次のとおりです。
ページにエントリのフルフィルメントが存在する場合は、そのフルフィルメントが呼び出されます。フルフィルメントによって提供される静的レスポンスはすべて、レスポンス キューに追加されます。
部分的な回答が有効になっている場合、会話エージェント(Dialogflow CX)はレスポンス キューをフラッシュし、キュー内のすべてのメッセージを部分的な回答としてストリーミング API 呼び出し元に送信します。
フルフィルメントに Webhook がある場合、Webhook が呼び出され、それによりキューに追加レスポンスが加えられます。これらの追加レスポンスで、レスポンス キューの即時フラッシュはトリガーされません。
ページにフォーム パラメータがある場合は次のように事前入力されます。
- フォーム パラメータと同じ名前を持つ設定済みのセッション パラメータが、フォーム パラメータにコピーされます。
- ルートがこのページへの遷移をトリガーし、ルートが一致するインテントを持つ場合、フォーム パラメータと同じ名前を持つインテント パラメータはすべて、フォーム パラメータにコピーされます。
いずれかの状態ハンドラがスコープ内にある場合は、ハンドラの評価順序ルールに従って評価されます。 評価には、前のループのイテレーションで呼び出されたルート、イベント ハンドラ、または転送ハンドラが含まれます。状態ハンドラのいずれかが呼び出された場合は、次の一方または両方が発生する可能性があります。
- 状態ハンドラに対してフルフィルメントが存在する場合、そのフルフィルメントは呼び出されます。フルフィルメントによって提供される静的レスポンスはすべて、レスポンス キューに追加されます。部分レスポンスと Webhook も、有効になっている場合は、実行されます。
- ハンドラのターゲット フローまたはページが存在する場合、セッションはターゲットに遷移され、ページは無効になります。
次のすべてが該当する場合は、フォーム パラメータのプロンプトがレスポンス キューに追加されます。
- ページにはフォームがあります。
- 値の入力が必要なフォーム パラメータが他にもあります。
- 手順 3 で担当者ハンドラが履行されなかった。
- 部分レスポンスと Webhook も、有効になっている場合、実行されます。
残りのレスポンス キューのメッセージがエンドユーザーに送信され、エージェントはエンドユーザーの入力を待ちます。
エンドユーザーの入力でフォーム パラメータへのプロンプトが表示された場合、パラメータを入力します。手順 3 に進みます。
ページのライフサイクル ナビゲーション
シミュレータの実行ステップ ビューアを使用すると、特定の会話ターンのステップを切り替えて、関連するエージェント ビルダーの要素を各ステップにフォーカスさせることができます。次の例では、エンドユーザーが「レンタカーを借りたい」と入力すると、5 つの実行と移行のステップがトリガーされます。
実行ステップ ビューアに、最初のステップの会話開始ページが表示されます。ここでは、これがデフォルトのスタートページです。
インテント
car_rental.reservation_create
の移行ルートがトリガーされます。実行ステップ ビューアが、このルートにフォーカスします。ここでの移行ターゲットがPickup Location
ページであることがわかります。エージェントが
Pickup Location
ページに入ります。エージェントは、
Pickup Location
ページのエントリのフルフィルメントを評価します。フルフィルメントが空であるため、何も起こりません。エージェントが必要なフォーム パラメータ
pickup_location
を収集しようとすると、このパラメータの初期プロンプト フルフィルメント メッセージがエンドユーザーに表示されます。
また、最後の発話を取り消して、別の方法でさまざまなページ移行をテストすることもできます。
ページを作成する
ページを作成するには:
コンソール
- Dialogflow CX コンソールを開きます。
- ご自身の Google Cloud プロジェクトを選択します。
- エージェントを選択します。
- [Flows] セクションでページのフローを選択します。
- [Pages] セクションで追加ボタンをクリックします。add
- ページの表示名を入力します。
- ページ表示名の横にある設定ボタンをクリックします。more_vert
- [編集] を選択します。
- 表示されたページ編集パネルのフィールドに入力します。
- [保存] をクリックします。
API
Page
型の create
メソッドをご覧ください。
ページ リファレンスのプロトコルとバージョンを選択:
プロトコル | V3 | V3beta1 |
---|---|---|
REST | ページリソース | ページリソース |
RPC | ページ インターフェース | ページ インターフェース |
C++ | PagesClient | 利用できません |
C# | PagesClient | 利用できません |
Go | PagesClient | 利用できません |
Java | PagesClient | PagesClient |
Node.js | PagesClient | PagesClient |
PHP | 利用不可 | 利用できません |
Python | PagesClient | PagesClient |
Ruby | 利用不可 | 利用できません |
ページデータ
ページのデータにアクセスするには:
コンソール
- Dialogflow CX コンソールを開きます。
- エージェント用の Google Cloud プロジェクトを選択します。
- エージェントを選択します。
- [Flows] セクションでフローをクリックします。
- フローのページが [Pages] セクションに入力されます。
- ページ表示名の横にある設定ボタンをクリックします。more_vert
- [編集] を選択します。
- 表示されたページ編集パネルのフィールドに入力します。
- [保存] をクリックして変更を保存します。
API
Page
型の get
メソッドと patch/update
メソッドをご覧ください。
ページ リファレンスのプロトコルとバージョンを選択:
プロトコル | V3 | V3beta1 |
---|---|---|
REST | ページリソース | ページリソース |
RPC | ページ インターフェース | ページ インターフェース |
C++ | PagesClient | 利用できません |
C# | PagesClient | 利用できません |
Go | PagesClient | 利用できません |
Java | PagesClient | PagesClient |
Node.js | PagesClient | PagesClient |
PHP | 利用不可 | 利用できません |
Python | PagesClient | PagesClient |
Ruby | 利用不可 | 利用できません |
ページには、次のデータが関連付けられています。
- 表示名: 人が読める形式のページ名。
- エントリ フルフィルメント(通称エントリ ダイアログ): これは、ページが最初にアクティブになったときに呼び出されるフルフィルメントです。
- パラメータ: エンドユーザーから構造化された入力を取得するページフォーム内のパラメータ値です。
- ルート: ページが有効になったときに、これらの状態ハンドラが呼び出される場合があります。詳細については、ページレベルのハンドラのルートをご覧ください。
- ルートグループ: ページが有効なときに、これらのグループ内のルートが呼び出される場合があります。詳細については、ルートグループをご覧ください。
- イベント ハンドラ: ページが有効なときに、これらのイベント ハンドラが呼び出される場合があります。詳細については、ページレベルのイベント ハンドラをご覧ください。
ページ設定
ページには以下の設定を使用できます。
音声の詳細設定: これらの音声の詳細設定は、必要に応じて同じフローの音声設定とエージェントの音声設定をオーバーライドできます。
音声適応の設定: ページレベルの音声適応の設定は、必要に応じて同じフローの音声適応の設定をオーバーライドできます。 詳しくは、手動音声適応をご覧ください。
ページ設定にアクセスするには:
コンソール
- Dialogflow CX コンソールを開きます。
- ご自身の Google Cloud プロジェクトを選択します。
- エージェントを選択します。
- [ページ] セクションでページにカーソルを合わせます。
- [オプション more_vert] ボタンをクリックします。
- [ページ設定] を選択します。
- 設定をブラウジングまたは編集します。
- [保存] をクリックして変更を保存します。
API
Page
型の get
メソッドと patch/update
メソッドをご覧ください。
ページ リファレンスのプロトコルとバージョンを選択:
プロトコル | V3 | V3beta1 |
---|---|---|
REST | ページリソース | ページリソース |
RPC | ページ インターフェース | ページ インターフェース |
C++ | PagesClient | 利用できません |
C# | PagesClient | 利用できません |
Go | PagesClient | 利用できません |
Java | PagesClient | PagesClient |
Node.js | PagesClient | PagesClient |
PHP | 利用不可 | 利用できません |
Python | PagesClient | PagesClient |
Ruby | 利用不可 | 利用できません |
ページの削除
ページを削除するには:
コンソール
- Dialogflow CX コンソールを開きます。
- ご自身の Google Cloud プロジェクトを選択します。
- エージェントを選択します。
- [Flows] セクションでページのフローを選択します。
- [Pages] セクションで、ページ表示名の横にある設定ボタン more_vert をクリックします。
- [削除] を選択します。
API
Page
型の delete
メソッドをご覧ください。
ページ リファレンスのプロトコルとバージョンを選択:
プロトコル | V3 | V3beta1 |
---|---|---|
REST | ページリソース | ページリソース |
RPC | ページ インターフェース | ページ インターフェース |
C++ | PagesClient | 利用できません |
C# | PagesClient | 利用できません |
Go | PagesClient | 利用できません |
Java | PagesClient | PagesClient |
Node.js | PagesClient | PagesClient |
PHP | 利用不可 | 利用できません |
Python | PagesClient | PagesClient |
Ruby | 利用不可 | 利用できません |