このガイドでは、Dialogflow CX コンソールを使用して、フローを使用するシャツの注文エージェントをビルドしてテストする方法を説明します。このエージェントを操作するときに、店舗の場所を尋ねる、営業時間を確認する、シャツを注文するといった操作が可能です。
次の図は、このガイドで作成が完了したエージェントを示しています。

始める前に
このガイドを読む前に、次のタスクを完了してください。
エージェントを作成する
このガイドでエージェントを作成するには:
- Dialogflow CX コンソールを開きます。
- プロジェクトを作成または選択します。
- [Create Agent(エージェントを作成)] をクリックします。
- [Build your own] を選択します。
- 基本的なエージェント設定に関するフォームに入力します。
- [保存] をクリックします。
(省略可)エージェントのインポート
このガイドでは、シャツの注文エージェントを作成する手順について説明します。
コンソールの手順をスキップするには、エージェントをダウンロードしてインポートします。
デフォルトのフローとインテント
次のフローとインテントは、新しいエージェントに対して自動的に作成されます。
[管理]、[インテント] の順にクリックしてインテントを見つけることができます。また、[ビルド] をクリックしてフローを見つけることもできます。
| X | 項目 |
|---|---|
| Default Welcome Intent | Default Welcome Intent には、最初のエンドユーザー入力と照合することを促すトレーニング フレーズ(「Hi」や「Hello」など)があります。このインテントは必要に応じて編集できます。 |
| Default Negative Intent | Default Negative Intent を使用して、ネガティブ サンプルとして機能するこのインテントにトレーニング フレーズを追加できます。 |
| デフォルトの開始フロー | デフォルトの開始フローは唯一のフローとして使用できます。このガイドで使用するフローは、それだけです。より複雑なエージェントの場合は、フローをさらに追加できます。このフローには、インテント要件としてデフォルト ウェルカム インテントが付いたデフォルトのインテント ルートがあります。 |
デフォルトのウェルカム レスポンス メッセージをテストする
デフォルトのフローとインテントは、ウェルカム メッセージのみで基本的な会話を処理できます。
新しいエージェントをテストするには:
- [Test Agent] ボタンをクリックして、シミュレータを開きます。
- テキスト フィールドに「
hello」と入力し、Enter キーを押します。 - エージェントは、デフォルトのウェルカム メッセージを返します。
- シミュレータを閉じます。

このエンドユーザー入力に対して、エージェントが実施した手順は次のとおりです。
- 入力すると、エージェントはアクティブなデフォルトの開始フローとフローのスタートページのスコープ内の状態ハンドラを評価します。
- エージェントは Default Welcome Intent に一致するルートを特定して実行します。
- エージェントは、フルフィルメント レスポンス メッセージのいずれかをランダムに選択し、レスポンス キューに追加します。
- ルートには遷移ターゲットがないため、アクティブなフローとページは変更されません。
- エージェントがレスポンス キューの内容を送信します。
ウェルカム レスポンス メッセージを編集する
ウェルカム レスポンス メッセージを編集するには:
- [Build] タブをクリックします。
- [Flows] セクションで [Default Start Flow] を選択します。
- グラフの [Start Page] ノードをクリックします。
- インテント要件として Default Welcome Intent が含まれるルートを見つけてクリックし、ルート編集パネルを開きます。
- フルフィルメント セクションのエージェント レスポンス サブセクションで、既存のレスポンス メッセージをすべて削除します。
- 唯一のレスポンスとして
Hello, this is a shirt ordering virtual agent. How can I help you?を追加します。 - [保存] をクリックします。
- ルート編集パネルを閉じます。

更新されたウェルカム レスポンス メッセージをテストする
更新されたレスポンスをテストするには:
- [Test Agent] ボタンをクリックして、シミュレータを開きます。
- テキスト フィールドに「
hello」と入力し、Enter キーを押します。 - エージェントが新しいメッセージを返します。
- シミュレータを閉じます。
店舗の場所ページ
Dialogflow CX の会話(セッション)は、ステートマシンとして記述し、可視化できます。CX セッションの状態はページで表されます。ページが 1 つしかないため、エージェントはあまり有用性がありません。このセクションでは、店舗のロケーションに関する質問を処理する別のページを作成します。
ロケーション インテントを作成する
インテントは、1 回の会話ターンにおけるエンドユーザーの意図を分類します。
エンドユーザーの入力によって店舗の場所がリクエストされた場合に照合されるインテントを作成するには、次のようにします。
- [Manage] タブを選択します。
- [Intents] をクリックします。
- [作成] をクリックします。
- インテントの表示名として「
store.location」と入力します。 - 次のトレーニング フレーズを入力します。
Where is the store?DirectionsTell me the addressWhere do I pick up my order?How do I get there?Where is the store located?What street are you on?What is your address?How do I get to your store?Where are you located?
- [保存] をクリックします。

ロケーション ページを作成する
新しいページを作成します。ページがアクティブになったときにいつでも実行されるエントリ フルフィルメントをこのページに追加できます。このエントリ フルフィルメントには、店舗のロケーションを示すレスポンス メッセージを含める必要があります。
店舗のロケーション ページを作成するには:
- [Build] タブをクリックします。
- [Flows] セクションで [Default Start Flow] を選択します。
- [Pages] セクションで追加ボタン add add をクリックします。ページ表示名のテキスト入力項目が表示されます。
- ページ表示名に「
Store Location」と入力して Enter キーを押します。 - ページ表示名の横にある more_vert more_vert ボタンをクリックします。
- [Edit] を選択してページ編集パネルを開きます。
- [Entry] フルフィルメントを見つけ、[Edit fulfillment] をクリックします。
- [+ ダイアログのレスポンスを追加] をクリックして、[エージェントのレスポンス] セクションの [エージェントのダイアログ] フィールドに
Our store is located at 1007 Mountain Drive, Gotham City, NJ.と入力します。 - [保存] をクリックします。
- ページ編集パネルを閉じます。

フローにロケーション インテント ルートを追加する
次に、店舗の場所ページが遷移ターゲットとして設定されたルートを作成します。このルートが呼び出されると、セッションは [店舗の場所] ページに移行されます。このルートはデフォルトの開始フローに適用されるため、フローがアクティブである限り、スコープに含まれます。
シングルフロー エージェントの場合、これはルートが常にスコープ内に存在することを意味します。会話の任意の時点で、エンドユーザーは店舗の場所を尋ねることができ、このルートが呼び出されます。
ルートを作成する手順は次のとおりです。
- [Build] タブをクリックします。
- [Flows] セクションで [Default Start Flow] を選択します。
- グラフの [Start Page] ノードをクリックします。これはデフォルトの開始フローのスタートページです。
- 次のインテント ルートを追加します。
- インテント:
store.location - Transition Page:
Store Location
- インテント:
- [保存] をクリックします。
- インテント ルートの編集パネルを閉じます。

編集パネルを閉じると、新しいページのノードがグラフに表示されます。[Start] ノードから [Store Location] ノードへの矢印は、セッションがノード間で移行する方法を示しています。
店舗の場所ページをテストする
ページをテストするには:
- [Test Agent] ボタンをクリックして、シミュレータを開きます。
- 「
What is the store location?」と入力して Enter キーを押します。 - エージェントが住所を指定します。
- シミュレータを閉じます。
このエンドユーザー入力に対して、エージェントが実施した手順は次のとおりです。
- 入力すると、エージェントはアクティブなデフォルトの開始フローとフローのスタートページのスコープ内の状態ハンドラを評価します。
- エージェントは store.location インテントに一致するルートを特定して実行します。
- ルートにフルフィルメント レスポンス メッセージがないため、エージェントはレスポンス キューに何も追加しません。
- エージェントがセッションを [店舗の場所] ページに移行します。
- エージェントは、[店舗の場所] ページのエントリ フルフィルメントのレスポンス メッセージをレスポンス キューに追加します。
- エージェントがレスポンス キューの内容を送信します。
インライン作成を使用した営業時間ページ
このセクションでは、営業時間に関するエンドユーザーの質問を処理する営業時間ページを作成します。これまでは、[Build] タブと [Manage] タブからページとインテントを作成していました。インライン作成を使用すると、これらのコンポーネントをすばやく作成できます。
インテント ルート、インテント、ページをインライン作成するには:
- グラフの [Start Page] ノードをクリックします。
- [ルート] の横にある add [追加] をクリックします。インテント ルート編集パネルが開きます。
- [Intent] セクションで、[New intent] を選択します。インテント編集パネルが開きます。
次のトレーニング フレーズで
store.hoursインテントを作成します。What are your store hours?What time do you close?
[保存] をクリックします。インテント編集パネルが閉じます。
ルート編集パネルの [Transition] セクションに移動します。
[Page] の移行では、[New page] を選択します。
表示されたテキスト入力項目に「
Store Hours」と入力します。[保存] をクリックします。グラフに新しいページが表示されます。これはそのページへの移行ができたためです。
ルート編集パネルを閉じます。
店舗の場所で行った手順と同様に、店舗の営業時間を指定するエントリ フルフィルメントを追加します。
開いている編集パネルを閉じます。
注文アイテムのページ
次に、フォーム パラメータを使用するページを作成します。新しいシャツの注文をリクエストすると、セッションがこのページに移行し、シャツの注文のサイズと色が収集されます。
シャツのサイズのカスタム エンティティ タイプを作成する
エンティティ タイプは、エンドユーザー入力からデータを抽出する方法を制御します。Dialogflow CX には、日付、時刻、色、メールアドレスなどの一般的なデータタイプに対応する事前定義のシステム エンティティが用意されています。特定のデータに対応するカスタム エンティティを作成することもできます。
このエージェントでは、シャツの色にシステム エンティティを使用できますが、シャツのサイズ用のカスタム エンティティを作成する必要があります。
サイズ エンティティ タイプには、次のエンティティ エントリが必要です。
| エンティティ | 類義語 |
|---|---|
| 小 | small, tiny, little |
| 中 | medium, regular, average |
| 大 | large, big, giant |
エンティティを作成するには:
- [Manage] タブを選択します。
- [エンティティ タイプ] をクリックします。
- [作成] をクリックします。
- 表示名を
sizeに設定します。 - 表に一覧表示されているエンティティ エントリを追加します。
- [保存] をクリックします。
インテント パラメータを使用して注文インテントを作成する
エンドユーザーが新しいシャツの注文をリクエストした際に照合されるインテントが必要です。このインテントは、エンドユーザーが最初に指定した場合でも、必要に応じて選択したシャツの色やサイズをキャプチャする必要があります。
パラメータは、セッション中にエンドユーザーが指定した値を取得して参照するために使用されます。各パラメータには表示名とエンティティ タイプがあります。未加工のエンドユーザー入力とは異なり、パラメータはロジックの実行やレスポンスの生成に使用できる構造化データです。
トレーニング フレーズの一部にアノテーションを付ける、および関連するインテント パラメータを構成することで、インテントの照合によってエンドユーザー データを抽出する方法を制御します。
たとえば、「What is the forecast tomorrow for Tokyo?」(東京の明日の予報は?)といったトレーニング フレーズを考えてみましょう。「tomorrow」には date パラメータ、「Tokyo」には location パラメータをそれぞれアノテーションとして付けることができます。トレーニング フレーズの一部にアノテーションを付けると、Dialogflow CX は、実行時にエンドユーザーが提供する実際の値の例であることを認識します。
「What is the forecast on Friday for Sydney?」(金曜日のシドニーでの予報は?)などのエンドユーザー入力では、Dialogflow CX は、「Friday」(金曜日)から date パラメータ、「Sydney」から location パラメータをそれぞれ抽出します。
コンソールでトレーニング フレーズにアノテーションを付けるには:
- アノテーションを付けるトレーニング フレーズの部分をハイライト表示します。
- リストから必要なエンティティ タイプを選択します。
- Dialogflow は、次のパラメータ表にパラメータを作成します。
次の手順で order.new という名前のインテントを作成します。
- 色を含むフレーズごとに、
colorパラメータと@sys.colorシステム エンティティ タイプを使用してカラーにアノテーションを付けます。 - シャツのサイズを含む各フレーズについて、そのサイズに
sizeパラメータと、前に作成した@sizeカスタム エンティティ アノテーションを付けます。
トレーニング フレーズとパラメータは次のようになります。

注文ページを作成する
新しい注文ページを作成するには:
- 表示名:
New Order - エントリのフルフィルメント:
Ok, let's start a new order.
注文ページにフォームを追加する
ページごとにフォームを定義できます。これは、ページのエンドユーザーから収集する必要があるパラメータのリストです。エージェントは、必要なすべてのフォーム パラメータ(ページ パラメータとも呼ばれます)を収集するまで、複数の会話ターンでエンドユーザーとやり取りします。フォーム パラメータごとに、エージェントがエンドユーザーからの情報をリクエストするために使用するプロンプトも表示します。このプロセスをフォーム入力と呼びます。
エンドユーザーがインテント一致のインテント パラメータを提供すると、インテント パラメータがセッション パラメータになります。ページが最初にアクティブになると、そのフォームのすべてのパラメータに同じ名前のセッション パラメータが事前入力されます。したがって、order.new インテントが一致したときにエンドユーザーがサイズまたは色を指定した場合、これらの値はフォームに自動入力されます。
[New Order] ページで、次の 2 つの必須フォーム パラメータを定義します。
| 必須 | 表示名 | エンティティ タイプ | Is list | プロンプト |
|---|---|---|---|---|
| 色 | @sys.color | What color would you like? | ||
| size | @size | ご希望のサイズは? |
このフォームを追加するには:
- グラフの [New Order] ページをクリックします。
- [パラメータ] 追加ボタン add をクリックして、パラメータ編集パネルを開きます。
- 上記の表で説明されたパラメータを追加します。
- [保存] をクリックします。
- パラメータ編集パネルを閉じます。
フローに注文インテント ルートを追加する
エンドユーザーが新しい注文をするときに [新しい注文] ページに遷移するルートを [デフォルトの開始フロー] に追加します。
- インテント: order.new
- [遷移ターゲット] ページ: 新しいオーダー
確認ページ
最後のページで注文を確認してセッションを終了します。
確認ページを作成する
セッション パラメータを使用して注文を確認するレスポンスを表示する確認ページを作成します。
- 表示名:
Order Confirmation - エントリのフルフィルメント:
You can pick up your order for a $session.params.size, $session.params.color shirt in 7 to 10 business days. Goodbye.
注文ページに条件ルートを追加する
条件を使用して、ルートが呼び出されたかどうかを確認できます。条件は、フォームが完了しているかどうかを確認する目的で一般的に使用され、または評価時に常に呼び出されるように構成されます。
コンソールで条件を設定するには、条件の設定のドキュメントをご覧ください。
次のルートを注文ページに追加します。これは注文ページのフォームに情報を入力したときに呼び出されるルートです。この条件ルートは、エンドユーザーへのレスポンスでパラメータ参照を使用し、セッションを [注文確認] ページに移行します。
- 条件:
$page.params.status = "FINAL" - エージェントの発言:
You have selected a $session.params.size, $session.params.color shirt. - Transition Page:
Order Confirmation
次のルートを注文ページに追加します。このルートは、ページがアクティブで、条件ルートが評価される会話ターンごとに実行されます。上記の条件が評価されて呼び出されると、ページは非アクティブになるので、この true 条件ルートは評価されません。
- 条件:
true - エージェントの発言:
I'd like to collect a bit more information from you.
セッションを終了する条件ルートを作成する
次の条件ルートを [注文確認] ページに追加して、そのページがアクティブになり、そのエントリ フルフィルメントが処理されたら、セッションを終了するようにします。
- 条件:
true - 遷移ターゲット ページ:
End Session
完了したエージェントをテストする
次のダイアログでエージェントをテストします。
| 対話 | 説明 |
|---|---|
|
エンドユーザー: こんにちは エージェント: こんにちは、シャツの注文用の仮想エージェントです。ご用件をお知らせください。 |
|
|
エンドユーザー: 青色のシャツを購入したいのですが エージェント: 新規の注文を開始します。 エージェント: もう少し多くの情報を収集する必要があります。 エージェント: ご希望のサイズは? |
|
|
エンドユーザー: large エージェント: 大きなサイズの青色のシャツを選択されました。 エージェント: ご注文いただいた大きなサイズの青色のシャツは、7~10 営業日以内にお受け取りいただけます。さようなら。 |
|
本番環境の準備
エージェントを本番環境で実行する前に、本番環境のベスト プラクティスを実装します。