このページでは、Dialogflow ES を使用して自然言語を理解し、応答する Google Workspace アドオンとして Google Chat アプリを構築する方法について説明します。Google Chat と直接統合されている Dialogflow CX を使用して、 Dialogflow CX Google Chat ガイドに沿って Dialogflow CX Google Chat アプリを構築することもできます。
目標
- 環境をセットアップする。
- Dialogflow ES エージェントを作成してデプロイする。
- Dialogflow ES エージェントを搭載した Chat アプリを作成してデプロイする。
- Chat アプリをテストする。
前提条件
- Google Chat へのアクセス権を持つ Business または Enterprise Google Workspace アカウント 。
- 課金を有効にした Google Cloud プロジェクト。既存のプロジェクトで課金が有効になっていることを確認するには、 プロジェクトの 課金ステータスを確認するをご覧ください。プロジェクトを作成して課金を設定するには、 Google Cloud プロジェクトを作成するをご覧ください。
アーキテクチャ
次の図は、Dialogflow で構築された Chat アプリのアーキテクチャを示しています。
上の図では、Dialogflow Chat アプリを操作するユーザーの情報フローは次のようになります。
- ユーザーが、ダイレクト メッセージまたは Chat スペースで、Chat アプリにメッセージを送信します。
- に存在する Dialogflow 仮想エージェントがメッセージを受信 して処理し、レスポンスを生成します。
- 必要に応じて、 Dialogflow Webhook を使用して、Dialogflow エージェントは、プロジェクト管理システムやチケット発行ツールなどの 外部のサードパーティ サービスと連携できます。
- Dialogflow エージェントは、Chat の Chat アプリ サービスに応答を返します。
- レスポンスが Chat スペースに配信されます。
環境を設定する
Google API を使用する前に、Google Cloud プロジェクトで API を有効にする必要があります。 1 つの Google Cloud プロジェクトで 1 つ以上の API を有効にできます。Google API Console で、Google Chat API と Dialogflow API を有効にします。
正しいクラウド プロジェクトで API を有効にしていることを確認し、[次へ] をクリックします。
正しい API を有効にしていることを確認し、[有効にする] をクリックします。
Dialogflow ES エージェントを作成する
既存の Dialogflow ES エージェントがない場合:
- Dialogflow ES コンソールに移動します。
- [CREATE AGENT] をクリックします。
- 名前を付けて、デフォルトの言語とタイムゾーンを選択します。
- Cloud プロジェクトに関連付けます。
- [作成] をクリックします。
- Chat アプリの会話フローに必要なインテントとエンティティを構築します。挨拶インテントから始めることができます。
- プロジェクト ID をメモしておきます。
詳細なガイドについては、エージェントを構築するをご覧ください。
Chat アプリを作成して Dialogflow エージェントに接続する
Dialogflow ES エージェントを作成したら、次の手順に沿って Chat アプリに変換します。
Google API Console で、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と入力します。 - [機能] で、[スペースとグループの会話に参加する] を選択します。
- [接続設定] で [Dialogflow] を選択します。
- [Dialogflow の設定] で [Dialogflow ES] を選択します。
- ドメイン内の特定のユーザーとグループにこの Chat 用アプリの利用を許可する を選択し、メールアドレスを入力します。
- [ログ] で [エラーを Logging にロギング] を選択します。
- [アプリ名] に
[保存] をクリックします。
Chat アプリは、Chat でメッセージを受信して応答する準備ができました。
Chat アプリをテストする
Google Chat でメッセージを送信して、Dialogflow ES Chat アプリをテストします。
信頼できるテスターとして追加したときに指定した Google Workspace アカウントを使用して、Google Chat を開きます。
- [**チャットを新規作成**] をクリックします。
- [1 人以上のユーザーを追加] フィールドに、Chat アプリの名前を入力します。
結果から Chat アプリを選択します。ダイレクト メッセージが開きます。
そのアプリの新しいダイレクト メッセージに、「
Hello」と入力してenterを押します。Dialogflow Chat アプリが挨拶メッセージで応答します。
テキストのレスポンス
テキスト レスポンス は テキスト メッセージとして Google Chat に送信されます。 このフォーマットでは、テキストを特定の(マークダウン ライト)記号で囲むことにより、太字や斜体にできます。
テキスト メッセージのレスポンスは、Dialogflow コンソールのデフォルトのテキスト レスポンスと同用の外観で表示されます。ただし、未加工の API レスポンスは少し異なります。 また、プラットフォーム構成を GOOGLE_HANGOUTS に設定して、複数の統合用のエージェントをビルドする際に活用できる情報を提供します。
"fulfillmentMessages": [
{
"text": {
"text": [
"This is a test."
]
},
"platform": "GOOGLE_HANGOUTS"
},
カード
カード形式のレスポンス は、 カード メッセージとして Google Chat に送信されます。
画像
画像レスポンスは、Google Chat 画像ウィジェットとして Google Chat に送信されます。
カスタム ペイロード
他の種類の Google Chat メッセージを送信するには、カスタム ペイロードを使用します。
Google Chat のカスタム ペイロードを使用すると、より高度なカードを作成できます。1 つのカードは 1 つ以上のセクションを持つことができます。各セクションにはヘッダーを含めることができます。 Google Workspace アドオンの Chat カードを拡張するのリファレンス ガイドを参照して、これで作成できる組み合わせのいくつかを確認できます。ただし、カスタム ペイロードを使用する場合は、JSON 形式を指定する必要があります。
カードを含むメッセージを作成するためのカスタム ペイロードの例を次に示します。
{ "hangouts": { "hostAppDataAction": { "chatDataAction": { "createMessageAction": { "message": { "cardsV2": [{ "cardId": "pizza", "card": { "header": { "title": "Pizza Delivery Customer Support", "subtitle": "pizzadelivery@example.com", "imageUrl": "https://goo.gl/aeDtrS" }, "sections": [{ "widgets": [{ "textParagraph": { "text": " Your pizza is here!" }}]}] } }]}} }}}}
制限事項と考慮事項
- Dialogflow で Google Workspace アドオンを使用する場合、Chat イベント オブジェクト
には次の制限事項と考慮事項があります。
- アプリのホーム イベント:
APP_HOMEイベントはまだサポートされていません。 - Dialogflow クエリ入力: Dialogflow エージェントにクエリ入力として送信されるテキストは、イベントの種類によって異なります。
MESSAGE: チャット メッセージのargumentTextフィールドの値。APP_COMMAND: 文字列"APP_COMMAND_PAYLOAD"。ADDED_TO_SPACE: デフォルトのウェルカム イベントが送信されます。REMOVED_FROM_SPACE: 文字列"REMOVED_FROM_SPACE_PAYLOAD"。CARD_CLICKED: 文字列"BUTTON_CLICKED_PAYLOAD"。WIDGET_UPDATED: 文字列"WIDGET_UPDATED_PAYLOAD"( 自動補完に使用)。
- 完全なイベント ペイロード: Chat インタラクション イベントの完全な JSON ペイロードは、
WebhookRequest.payloadフィールド内の Dialogflow に送信されます。これは Dialogflow Webhook でアクセスできます。詳細については、 Dialogflow ES Webhook リクエストのドキュメントをご覧ください。
- アプリのホーム イベント:
- コマンドに応答して
コマンドと
カードまたはダイアログからデータを受信する場合の考慮事項:
- Dialogflow エージェントが Chat インタラクション イベントの JSON ペイロードを処理する必要がある場合は、 Dialogflow Webhook を使用してクエリ パラメータのカスタム ペイロードを検査することで処理できます。
- Dialogflow エージェントから ダイアログを表示するには、ナビゲーション
pushCardを含むRenderActionsオブジェクトを含む単一のカスタム JSON ペイロードで応答します。 - カードから入力されたデータを処理するには、 Dialogflow Webhook を使用して、適切な アクションを含む単一のカスタム JSON ペイロードで応答します。
- リンクのプレビューはサポートされていません。
- Dialogflow エージェントが 1 つのメッセージのみで応答する場合、メッセージは Google Chat に同期的に送信されます。Dialogflow エージェントが複数のメッセージで応答する場合、すべてのメッセージは、メッセージごとに 1 回、Chat API の
spaces.messagesリソースでcreateメソッドを呼び出すことで、Chat に非同期的に送信されます。 - Dialogflow ES と Chat の統合を使用する場合、Dialogflow エージェントと Chat アプリは同じ Google Cloud プロジェクトに設定する必要があります。
トラブルシューティング
Chat アプリをデバッグするには、まずエラーログを確認します。このアプリは Dialogflow を使用しているため、次のロギングとトラブルシューティングのリソースを利用できます。
Google Workspace アドオンのログ: アドオンの動作(Chat とのやり取りなど)の詳細については、ログをクエリします。Google Workspace アドオンのログをクエリするをご覧ください。
Google Google Chat アプリのエラー: Chat アプリのエラー メッセージと修正方法については、Chat アプリのエラーのトラブルシューティングと修正をご覧ください。
Dialogflow ES の会話履歴: 履歴 | Dialogflow ES
Dialogflow の一般的なトラブルシューティング: トラブルシューティング | Dialogflow
クリーンアップ
このチュートリアルで使用したリソースに対して アカウントに課金されないようにするには、 Cloud プロジェクトを削除することをおすすめします。
- Google API Console で、[リソースの管理] ページに移動します。 [Menu] >[IAM & Admin] >[Manage Resources] をクリックします。
- プロジェクト リストで、削除するプロジェクトを選択し、 [Delete] . をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
関連トピック
- Dialogflow CX は、Chat アプリで Dialogflow を使用する別の方法です。