このページでは、Dialogflow を使用して、自然言語を理解し、自然言語で応答できる Google Chat アプリを作成する方法について説明します。このガイドでは、Google Chat と直接統合されている Dialogflow CX を使用します。また、Dialogflow ES を使用して Dialogflow ES Google Chat ガイドに沿って 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 Webhook を使用して、Dialogflow エージェントはプロジェクト管理システムやチケット発行ツールなどの外部のサードパーティ サービスとやり取りできます。
- Dialogflow エージェントは Chat の Chat アプリサービスにレスポンスを返します。
- レスポンスが Chat スペースに配信されます。
環境を設定する
Google API を使用する前に、Google Cloud プロジェクトで API を有効にする必要があります。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 agent] をクリックします。
ビルド済みエージェントを選択します。このガイドでは、[旅行: レンタカー] を選択します。
エージェントは、エージェントが使用する機能の数と会話ロジックの洗練度に基づいて、初級、中級、上級のいずれかに分類されます。中級エージェントまたは高度なエージェントを選択するには、Google Cloud コンソールで機能と API を有効にするなど、エージェント固有のカスタマイズと設定が必要になる場合があります。
[エージェントとしてインポート] をクリックします。
独自のエージェントを作成する手順は次のとおりです。
- [Create Agent(エージェントを作成)] をクリックします。
- [自動生成] を選択してデータストア エージェントを作成するか、[独自に構築] を選択して他の種類のエージェントを作成します。
エージェント構築プロセスの詳細なチュートリアルについては、Dialogflow CX エージェントを作成するをご覧ください。
エージェントの基本設定を構成します。
[作成] をクリックします。Dialogflow CX がエージェントの作成を開始し、エージェントのデフォルトの開始フローが表示されます。
必要に応じて、エージェントをカスタマイズします。エージェントのカスタマイズ プロセスの詳細については、Dialogflow CX エージェントを作成するをご覧ください。
エージェントをテストすることをおすすめします。
- [Test agent] をクリックします。
- [Test agent in environment] を選択します。
- [環境] で [ドラフト] を選択します。
- [Flow] で [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] をクリックし、[管理] をクリックします。
[設定] をクリックし、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 アプリをテストする
Google Chat でメッセージを送信して Dialogflow CX Chat アプリをテストします。
Trusted Tester として自身を追加したときに指定した Google Workspace アカウントを使用して Google Chat を開きます。
- [ 新しいチャット] をクリックします。
- [1 人以上のユーザーを追加] フィールドに、Chat アプリの名前を入力します。
検索結果から Chat アプリを選択します。ダイレクト メッセージが開きます。
アプリとの新しいダイレクト メッセージで、「
Hello
」と入力してenter
キーを押します。Dialogflow Chat アプリは自己紹介することで応答します。
- テスト会話のサンプルを使用してテストを完了します。
テスト用の会話の例
Dialogflow CX コンソールまたは Google Chat で Dialogflow CX Chat アプリをテストするには、次の会話を行います。この説明は、Dialogflow CX エージェントがユーザーの自然言語を解釈し、会話の各ステップで独自の自然言語レスポンスを生成する方法を理解するのに役立ちます。このサンプルの会話は、Travel: レンタカーという事前構築済みエージェントに基づいています。
ダイアログ | 説明 |
---|---|
エンドユーザー: お客様 エージェント:レンタカーの仮想エージェントです。新しいレンタカーの予約の開始をお手伝いいたします。本日はどのようなご用件でしょうか? |
|
エンドユーザー: レンタカーを借りたいのですが、 エージェント: どこで車を受け取れますか? |
|
エンドユーザー: ラスベガス エージェント: 了解いたしました。集荷はラスベガスでございます。 エージェント: 下車場所は乗車場所とは異なりますか? |
|
エンドユーザー: はい。私はロサンゼルスに車を降ろします。 エージェント: では、下車場所はロサンゼルスです。 エージェント: 車両の受け取りをご希望の日時を教えていただけますか? |
|
エンドユーザー: 3 月 5 日の正午に車の受け取りを希望します。 エージェント: ご希望の下車日時はいつですか? |
|
エンドユーザー: 3 月 15 日正午。 エージェント: 確認させていただきたいのですが、 車両は 2024-03-05 12:00:00 ラスベガスで受け取り、ロサンゼルスに返却されます 2024-03-15 12:00:00 お間違いございませんか? |
|
エンドユーザー: はい、ありがとうございます。 エージェント: ありがとうございます。次に、車両を選択します。 エージェント: エコノミー車と高級車、どちらをご希望ですか? |
|
エンドユーザー: エコノミーをご利用ください。 エージェント: Cymbal Car と Cymbal Truck、どちらにしますか? |
|
エンドユーザー: Cymbal Truck。 エージェント: Cymbal Truck の料金は 1 日あたり $50.33 です。 定員 4 名で、AM/FM ラジオを完備。 支払いに進みますか? エンドユーザー: はい。 |
|
エージェント: どのタイプのカードをお使いですか? エンドユーザー: Altostrat エージェント: カード番号を入力してください。 エンドユーザー: 1234 1234 1234 1234 エージェント: カードに記載されている名前を教えてください。 エンドユーザー: チャーリー エージェント: 請求先住所を教えていただけますか? エンドユーザー: 1800 Amphibious Blvd. Mountain View, CA エージェント: 請求先の郵便番号を教えていただけますか? エンドユーザー: 94045 エージェント: ラスベガスで 2024-03-05 12:00:00 に Cymbal Car に乗り、2024-03-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
は、インタラクティブ カード要素(ボタンなど)にアタッチされているアクション オブジェクトのfunction
フィールドの値に対応します。- 各チャット操作イベントの完全な JSON ペイロードが、クエリ パラメータのカスタム ペイロードとして Dialogflow に送信されます。
WebhookRequest.payload
フィールドの値をクエリすることで、Dialogflow Webhook でアクセスできます。
- 次のインタラクション イベントのタイプがサポートされています。
- スラッシュ コマンドのサポートは限定的です。
- Dialogflow Chat アプリがスラッシュ コマンドを含むメッセージを受信した場合、クエリ入力には
text
フィールドの値のみが含まれます。text
フィールドはスラッシュ コマンドの名前で始まります(例:/command
)。これにより、スラッシュ コマンドを検出するように Dialogflow エージェントのインテントを構成できます。 - Dialogflow エージェントがスラッシュ コマンドのチャット操作イベントの JSON ペイロードを処理する必要がある場合は、Dialogflow Webhook を使用してクエリ パラメータのカスタム ペイロードを検査します。
- Dialogflow Chat アプリがスラッシュ コマンドを含むメッセージを受信した場合、クエリ入力には
- Google Workspace デベロッパー プレビュー プログラムでは、ダイアログを開き、カードまたはダイアログからデータを受け取るスラッシュ コマンドがサポートされています。
- Dialogflow エージェントからのダイアログを表示するには、
DIALOG
アクション レスポンスを含むメッセージを含む単一のカスタム JSON ペイロードを返します。 - カードから入力されたデータを処理するために、Dialogflow エージェントは
CARD_CLICKED
というテキストで始まるインテントを検出し、適切なアクションを含む単一のカスタム JSON ペイロードで応答できます。
- Dialogflow エージェントからのダイアログを表示するには、
- リンク プレビューはサポートされていません。
- 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 のチャット統合の例をご覧ください。
トラブルシューティング
Google Chat アプリまたはカードからエラーが返されると、Chat インターフェースに「エラーが発生しました」というメッセージが表示されます。または「リクエストを処理できません」と表示されます。Chat UI にエラー メッセージが表示されていなくても、Chat アプリまたはカードから予期しない結果(カード メッセージが表示されないなど)が生成される場合があります。
エラー メッセージは Chat UI に表示されない場合がありますが、Chat アプリのエラーロギングがオンになっている場合は、エラー メッセージとログデータを使用してエラーを修正できます。エラーの表示、デバッグ、修正については、Google Chat のエラーのトラブルシューティングと修正をご覧ください。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、Cloud プロジェクトを削除することをおすすめします。
- Google Cloud コンソールで、[リソースの管理] ページに移動します。メニュー > [IAM と管理] > [リソースの管理] をクリックします。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
関連トピック
- Dialogflow CX は、Dialogflow エージェント設計に対してステートマシン アプローチを採用しています。これにより、会話を明確かつ明示的に制御し、エンドユーザー エクスペリエンスと開発ワークフローを改善できます。Dialogflow チャットアプリを作成する場合は、Dialogflow CX を使用することをおすすめします。
- エージェントの構築と構成の詳細については、Dialogflow CX エージェントをご覧ください。
- エージェントの構築方法と構成方法を説明する詳細なチュートリアルについては、Dialogflow CX エージェントを作成するをご覧ください。
- Dialogflow ES は、Chat アプリで Dialogflow を使用するもう 1 つの方法です。