このページでは、Dialogflow を使用して自然言語を理解して応答できる Google Chat アプリを作成する方法について説明します。このガイドでは、Google Chat と直接統合された Dialogflow CX を使用します。また、Dialogflow ES Google Chat ガイドに沿って、Dialogflow ES を使用して Dialogflow ES Google Chat アプリを構築することもできます。
たとえば、レンタカーをサポートする Chat アプリについて考えてみましょう。ユーザーは「車を借りたい」と入力するでしょう。Chat アプリは「どこで車を受け取りますか?」のような質問で応答する場合があります。これにより、ユーザーと人間のような会話が開始されます。Chat アプリは、レンタカーの予約中に人間の発話を理解して応答します。
これは一例にすぎません。Dialogflow Chat アプリはあらゆる種類のやり取りで役立ちます。自然な人間の発話が必要な場合は、Dialogflow Chat アプリが必要です。ビルド済みエージェントを使用すると、すぐに使用を開始でき、Dialogflow の機能を確認できます。たとえば、次のようなものがあります。
- フライトを予約
- 診察を予約できます
- 料理の出前を注文する
- 他の色のアイテムが購入可能かどうかなど、小売商品カタログに関する質問に回答する
-
図 2.Dialogflow CX でエージェントをテストし、エージェントのロジックと構成が意図したとおりに機能することを確認する。この図は、レンタカーの乗車場所と返却場所の設定など、会話の特定の手順に関連する一連のトピックのページを示し、それらをつなぐロジックを構成しています。会話はシミュレータでテストされます。 -
図 3.Google Cloud コンソールの Chat API 構成ページで、Dialogflow CX エージェントを使用してレスポンスを処理するように Chat アプリを構成します。 -
図 4.Google Chat の Dialogflow Chat アプリを使用して、レンタカーの予約について会話する。
目標
- 環境を設定する。
- Dialogflow CX エージェントを作成してデプロイする。
- Dialogflow CX エージェントを使用して Chat アプリを作成してデプロイします。
- Chat アプリをテストします。
前提条件
- Google Chat へのアクセス権を持つ Google Workspace アカウント。
- Google Cloud プロジェクト。
- Cloud プロジェクトの課金が有効になっていることを確認します。プロジェクトの課金ステータスを確認する方法をご覧ください。
アーキテクチャ
次の図は、Dialogflow で構築された Chat アプリのアーキテクチャを示しています。
上の図では、Dialogflow Chat アプリを操作するユーザーに次の情報のフローがあります。
- ユーザーが、Chat のダイレクト メッセージまたは Chat スペースで、Chat アプリにメッセージを送信します。
- Google Cloud にある Dialogflow 仮想エージェントがメッセージを受信して処理し、レスポンスを生成します。
- 必要に応じて、Dialogflow エージェントは Dialogflow Webhook を使用して、プロジェクト管理システムやチケット発行ツールなどの外部のサードパーティ サービスを操作できます。
- Dialogflow エージェントは、Chat の Chat アプリサービスにレスポンスを返します。
- レスポンスが Chat スペースに配信されます。
環境を設定する
Google API を使用する前に、Google Cloud プロジェクトで有効にする必要があります。1 つの Google Cloud プロジェクトで 1 つ以上の API を有効にできます。Google Cloud コンソールで、Google Chat API と Dialogflow API を有効にします。
正しい Cloud プロジェクトで API を有効にしていることを確認し、[次へ] をクリックします。
正しい API を有効にしていることを確認し、[有効にする] をクリックします。
Dialogflow CX エージェントを作成する
Dialogflow CX エージェントは、エンドユーザーとの同時会話を処理する仮想エージェントです。これは、人間の言語のニュアンスを理解する自然言語理解モジュールです。Dialogflow はエンドユーザーの会話中のテキストを、アプリやサービスが理解できる構造化データに変換します。システムに必要な種類の会話を処理するように Dialogflow エージェントを設計して作成します。
Dialogflow エージェントは、コールセンターの担当者のようなものです。予想される会話のシナリオに対処できるように、両方ともトレーニングします。トレーニングは、過度に行う必要はありません。
Dialogflow CX エージェントを作成する手順は次のとおりです。
Dialogflow CX コンソールで、Dialogflow CX コンソールを開きます。メニュー アイコン > [Dialogflow CX] をクリックします。
Google Cloud プロジェクトを選択します。プロジェクトを見つけるには、[すべて] をクリックして検索する必要があります。
ここで、ビルド済みエージェントを選択するか、独自のエージェントを作成できます。エージェントのカスタマイズを後で詳しく確認する場合は、いずれかのビルド済みエージェントを選択します。これは、エージェントの機能を理解するのにも役立ちます。
ビルド済みエージェントを選択する手順は次のとおりです。
- [Use prebuilt agents] をクリックします。
ビルド済みエージェントを選択します。このガイドでは、[旅行: レンタカー] を選択します。
エージェントは、使用する機能の数と会話ロジックの洗練度に基づいて、初級、中級、上級のいずれかに分類されます。中間エージェントまたは高度なエージェントを選択するには、Google Cloud コンソールで機能と API を有効にするなど、エージェント固有のカスタマイズと設定が必要になる場合があります。
[エージェントとしてインポート] をクリックします。
独自のエージェントを作成する手順は次のとおりです。
- [Create Agent(エージェントを作成)] をクリックします。
- [自動生成] を選択してデータストア エージェントを作成するか、[独自のエージェントを構築する] を選択して他の種類のエージェントを作成します。
エージェント構築プロセスの詳細なチュートリアルについては、Dialogflow CX エージェントを作成するをご覧ください。
エージェントの基本設定を構成します。
[作成] をクリックします。Dialogflow CX がエージェントの作成を開始し、エージェントのデフォルトの起動フローが表示されます。
必要に応じて、エージェントをカスタマイズします。エージェントのカスタマイズ プロセスの詳細については、Dialogflow CX エージェントを作成するをご覧ください。
エージェントをテストすることをおすすめします。
- [Test agent] をクリックします。
- [Test agent in environment] を選択します。
- [環境] で [ドラフト] を選択します。
- フローで、[Default Start Flow] を選択します。
- [ページ] で [スタートページ] を選択します。
- [Talk to agent] 入力バーに「
Hello
」と入力して Enter キーを押します。エージェントは自己紹介で応答します。 - テスト用の会話のサンプルを使用してテストを完了します。
Dialogflow CX エージェントが作成されます。Dialogflow CX コンソールに戻ります。メニュー アイコン > [Dialogflow CX] をクリックします。
[エージェント] で、> [名前をコピー] をクリックします。Chat アプリの構成時に使用するため、この名前を保存しておきます。
Chat アプリを作成して Dialogflow エージェントに接続する
Dialogflow CX エージェントを作成したら、次の手順で Chat アプリに変換します。
Google Cloud コンソールで、[Google Chat API] に移動します。「Google Chat API」を検索して、[Google Chat API]、[管理] の順にクリックします。
[Configuration] をクリックして、Chat 用アプリを設定します。
- [アプリ名] に「
Dialogflow App
」と入力します。 - [アバターの URL] に「
https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png
」と入力します。 - [説明] に「
Responds to real human conversation
」と入力します。 - [機能] で、[1:1 のメッセージを受信する] と [スペースとグループの会話に参加する] を選択します。
- [接続設定] で [Dialogflow] を選択します。
- [Dialogflow の設定] で [Dialogflow CX] を選択します。
- [Agent or Environment resource name] に、Dialogflow CX エージェントを作成するの最後にコピーした Dialogflow CX エージェント名を貼り付けます。
- ドメイン内の特定のユーザーやグループにこの Chat 用アプリの使用を許可し、メールアドレスを入力します。
- [ログ] で、[エラーを Logging にロギング] を選択します。
- [アプリ名] に「
[保存] をクリックします。
Chat 用アプリで、Chat でメッセージを受信して応答する準備が整いました。
Chat アプリをテストする
Dialogflow CX Chat アプリを Google Chat でメッセージしてテストします。
自分自身を Trusted Tester として追加したときに指定した Google Workspace アカウントを使用して Google Chat を開きます。
- [ チャットを新規作成] をクリックします。
- [1 人以上のユーザーを追加] フィールドに、Chat アプリの名前を入力します。
結果から Chat 用アプリを選択します。ダイレクト メッセージが開きます。
アプリとの新しいダイレクト メッセージで、「
Hello
」と入力してenter
を押します。Dialogflow Chat アプリは自己紹介によって応答します。
- サンプルのテスト会話を使用してテストを完了します。
テスト用の会話の例
Dialogflow CX コンソールまたは Google Chat で Dialogflow CX Chat アプリをテストするには、次の会話を行います。この説明は、Dialogflow CX エージェントがユーザーの自然言語を解釈し、会話の各ステップで独自の自然言語レスポンスを生成する仕組みを理解するのに役立ちます。このサンプル会話は、Travel: レンタカーというビルド済みエージェントに基づいています。
ダイアログ | 解説 |
---|---|
エンドユーザー: お客様 エージェント:仮想レンタカーのエージェントです。新しいレンタカーの予約を開始するお手伝いをします。本日はどのようなご用件でしょうか? |
|
エンドユーザー: レンタカーを借りたいのですが、 エージェント: ご希望の車両の集荷場所を教えていただけますか? |
|
エンドユーザー: Las Vegas エージェント: お客様の集荷はラスベガスで行われます。 エージェント: 降車場所と乗車場所は異なりますか? |
|
エンドユーザー: はい。ロサンゼルスに車を降ろします。 エージェント: 到着地はロサンゼルスです。 エージェント: ご希望の車両集荷の日時をお知らせください。 |
|
エンドユーザー: 3 月 5 日の正午に車を受け取りたいのですが、 エージェント: 車両をお預かりする日時をお知らせください。 |
|
エンドユーザー: 3 月 15 日正午。 エージェント: 確認させていただきます。 ラスベガスで車両を預け、2024 年 3 月 15 日 12:00:00 にラスベガスで降車されますか? 2024-03-15 12:00:00 よろしいですか? |
|
エンドユーザー: はい、ありがとうございます。 エージェント: ありがとうございます。では、車を選びます。 エージェント: エコノミー車と高級車、どちらをご希望ですか? |
|
エンドユーザー: エコノミー クラスを利用してください。 エージェント: Cymbal Car と Cymbal Truck のどちらをご希望ですか? |
|
エンドユーザー: Cymbal Truck。 エージェント: Cymbal Truck は 1 日あたり $50.33 です。AM/FM ラジオが付属しており、4 名まで収容可能。 支払いに進みますか? エンドユーザー: はい。 |
|
エージェント: どのカードをお使いですか? エンドユーザー: Altostrat エージェント: カード番号を入力してください。 エンドユーザー: 1234 1234 1234 1234 エージェント: カードに記載されているお名前を教えてください。 エンドユーザー: Charlie エージェント: 請求先住所を教えてください。 エンドユーザー: 1800 Amphibious Blvd. Mountain View, CA エージェント: 請求先の郵便番号を教えてください。 エンドユーザー: 94045 エージェント: 2024 年 3 月 5 日 12:00:00 にラスベガスで Cymbal Car を集荷し、2024 年 3 月 15 日 12:00:00 に降車します。このルートの合計は $175.38 になります。 エージェント: レンタルをご利用いただきありがとうございます。今後ともよろしくお願いいたします。 |
|
Dialogflow からカード メッセージを送信する
Dialogflow はテキストまたはカード メッセージで応答できます。カード メッセージで応答するには、フルフィルメントでそれをカスタム ペイロードとして指定します。
次の JSON は、フルフィルメントでカード メッセージをカスタム ペイロードとして送信する方法を示しています。
json
{
'cardsV2': [{
'cardId': 'createCardMessage',
'card': {
'header': {
'title': 'A card message!',
'subtitle': 'Sent from Dialogflow',
'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png',
'imageType': 'CIRCLE'
},
'sections': [
{
'widgets': [
{
'buttonList': {
'buttons': [
{
'text': 'Read the docs!',
'onClick': {
'openLink': {
'url': 'https://developers.google.com/workspace/chat'
}
}
}
]
}
}
]
}
]
}
}]
}
制限事項と考慮事項
- チャット インタラクション イベントについては、サポートが限定的であり、次の点も考慮する必要があります。
- 次のインタラクション イベントタイプがサポートされています。
MESSAGE
ADDED_TO_SPACE
CARD_CLICKED
MESSAGE
イベントまたはADDED_TO_SPACE
イベントの場合、Dialogflow エージェントに送信されるクエリ入力は、Chat メッセージのargumentText
フィールドの値に対応します。メッセージにスラッシュ コマンドが含まれている場合は、代わりにtext
フィールドの値が使用されます。CARD_CLICKED
イベントの場合、Dialogflow エージェントに送信されるクエリ入力はCARD_CLICKED.functionName
としてフォーマットされます。ここで、functionName
は、インタラクティブなカード要素(ボタンなど)にアタッチされた Action オブジェクトのfunction
フィールドの値に対応します。- 各チャット インタラクション イベントの完全な JSON ペイロードは、クエリ パラメータのカスタム ペイロードとして Dialogflow に送信されます。Dialogflow Webhook で
WebhookRequest.payload
フィールドの値をクエリしてアクセスできます。
- 次のインタラクション イベントタイプがサポートされています。
- スラッシュ コマンドへの応答と、カードまたはダイアログからのデータの受信に関する考慮事項:
- Dialogflow Chat アプリがスラッシュ コマンドを含むメッセージを受信すると、クエリ入力には
text
フィールドの値のみが含まれます。text
フィールドはスラッシュ コマンドの名前(/command
など)で始まります。これを使用して、スラッシュ コマンドを検出するように Dialogflow エージェントのインテントを構成できます。 - Dialogflow エージェントが Chat 操作イベントの JSON ペイロードを処理する必要がある場合は、Dialogflow Webhook を使用してクエリ パラメータのカスタム ペイロードを検査します。
- Dialogflow エージェントからダイアログを表示するには、
DIALOG
アクション レスポンスを含むメッセージを含む単一のカスタム JSON ペイロードで応答します。 - カードから入力されたデータを処理するため、Dialogflow エージェントは、テキスト
CARD_CLICKED
で始まるインテントを検出し、適切なアクションを含む単一のカスタム JSON ペイロードで応答できます。
- Dialogflow Chat アプリがスラッシュ コマンドを含むメッセージを受信すると、クエリ入力には
- リンク プレビューはサポートされていません。
- Dialogflow エージェントが 1 つのメッセージのみで応答した場合、メッセージは同期的に Google Chat に送信されます。Dialogflow エージェントが複数のメッセージで応答した場合、Chat API の
spaces.messages
リソースに対するcreate
メソッドをメッセージごとに 1 回呼び出すことで、すべてのメッセージが Chat に非同期的に送信されます。 - Dialogflow CX と Chat の統合を使用する場合、Dialogflow エージェントと Chat アプリを同じ Google Cloud プロジェクトで設定する必要があります。Dialogflow と Chat を異なる Cloud プロジェクトで設定する必要がある場合は、接続を容易にするために中間サーバーを設定できます。方法については、GitHub の Dialogflow CX との Chat インテグレーションの例をご覧ください。
トラブルシューティング
Google Chat アプリまたはカードがエラーを返すと、Chat インターフェースに「エラーが発生しました」というメッセージが表示されます。または「リクエストを処理できません」が表示されます。Chat UI にエラー メッセージが表示されなくても、Chat アプリやカードが予期しない結果(カード メッセージが表示されないなど)を生成することがあります。
Chat UI にエラー メッセージが表示されない場合がありますが、Chat 用アプリのエラーロギングが有効になっている場合は、説明的なエラー メッセージとログデータを使用してエラーを修正できます。エラーの表示、デバッグ、修正については、Google Chat のエラーのトラブルシューティングと修正をご覧ください。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、Cloud プロジェクトを削除することをおすすめします。
- Google Cloud コンソールで、[リソースの管理] ページに移動します。メニュー アイコン > [IAM と管理] > [リソースの管理] をクリックします。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
関連トピック
- Dialogflow CX は、Dialogflow エージェントの設計にステートマシン アプローチを採用しています。これにより、会話を明確かつ明示的に制御し、エンドユーザー エクスペリエンスを改善し、開発ワークフローを改善できます。Dialogflow Chat アプリを作成する場合は、Dialogflow CX を使用することをおすすめします。
- エージェントの構築と構成の詳細については、Dialogflow CX エージェントをご覧ください。
- エージェントを構築して構成する方法を説明する詳細なチュートリアルについては、Dialogflow CX エージェントを作成するをご覧ください。
- Gemini を使用して Google Chat 用アプリを構築する Codelab の Chat アプリをご覧ください。 Codelab: Dialogflow CX データストア エージェントを構築する方法の例については、
- Gemini を使用して Google Chat アプリを作成する Codelab のフィードバック用の Chat アプリをご覧ください。 Codelab: Dialogflow CX 会話エージェントを構築する方法の例については、
- Dialogflow ES は、Chat アプリで Dialogflow を使用するもう 1 つの方法です。