このページでは、Google Chat アプリを Google Chat 外のサービスやツールに接続する方法について説明します。Chat アプリは単体でも強力ですが、他のシステムと連携して動作することが多く、アカウントの接続、データアクセスの承認、追加データの表示、ユーザー設定の構成には、コンパニオン アプリが必要です。
前提条件
インタラクティブ機能が有効になっている Google Chat アプリ。インタラクティブな Chat アプリを作成するには、使用するアプリのアーキテクチャに基づいて、次のいずれかのクイックスタートを完了します。- Google Cloud Functions による HTTP サービス
- Google Apps Script
- Google Cloud Dialogflow CX
- Google Cloud Pub/Sub
ユーザーに Chat アプリの設定をリクエストする
リクエストを完了するために、Chat アプリで直接完了できない追加の構成が必要な場合は、通常の返信の一部として構成 URL をユーザーに返すか、次の形式で非公開で提示します。
{ "actionResponse": { "type": "REQUEST_CONFIG", "url": "CONFIGURATION_URL" } }
これにより、Google Chat はユーザーに非公開プロンプトを表示します。ここで、CONFIGURATION_URL
は、ユーザーがアクセスして追加の認証、承認、構成を行うためのリンクです。REQUEST_CONFIG
レスポンスは、通常のレスポンス メッセージと相互に排他的です。テキスト、カード、その他の属性は無視されます。
構成リクエストを完了する
Chat アプリが受信するすべての MESSAGE
インタラクション イベントにも、configCompleteRedirectUrl
フィールドが含まれます。この URL は、プロセスの完了時に使用できるように、構成 URL でエンコードする必要があります。この URL にリダイレクトすると、構成リクエストが完了したことが Google Chat に通知されます。
Chat アプリの起動時に、フローはその時点で受信した特定のメッセージによって異なります。@app help
などのメッセージに応答して、Chat アプリは追加の構成を必要とせずにメッセージで応答する必要があります。
ユーザーが元のメッセージで指定された configCompleteRedirectUrl
に正常にリダイレクトされると、Google Chat は次の手順を実行します。
- 開始したユーザーに表示されたプロンプトを消去します。
- 元のメッセージを公開に変更して、スペースの他のメンバーに表示できるようにします。
- 元のメッセージを同じ Chat アプリにもう一度送信します。
configCompleteRedirectUrl
にアクセスすると、1 件のユーザー メッセージにのみ影響します。ユーザーが Chat アプリに複数回メッセージを送信しようとした結果、複数のプロンプトが表示された場合、特定のプロンプトをクリックして認証と設定プロセスを完了すると、その特定のメッセージにのみ影響します。他のメッセージは変更されません。
このように MESSAGE
インタラクション イベントが再送信された場合、元のイベントと同じになりますが、MESSAGE
インタラクション イベントが異なる場合もあります。たとえば、メッセージに Chat アプリ A と Chat アプリ B の両方が記載されている場合、Chat アプリ A が Chat アプリ B で認証する前に通常のメッセージで応答すると、ユーザーはメッセージを編集できます。この場合、ユーザーが認証と構成を完了すると、Chat アプリ B が編集されたメッセージ テキストを受信します。
Chat の外部で Chat ユーザーを認証する
API の OAuth 認可をリクエストする場合など、ユーザーの ID を維持しながら、アプリが Chat の外部 URL にリンクする必要がある場合があります。このような場合、ユーザーを識別する最善の方法は、リンク先アプリを Google ログインで保護することです。
ログイン時に発行されたID トークンを使用して、ユーザー ID を取得します。sub
クレームにはユーザーの一意の ID が含まれ、Google Chat のユーザー ID と関連付けることができます。
2 つの ID は完全には一致していませんが、強制変換できます。sub
クレームの値を Google Chat の users/{user}
に強制変換するには、値の前に users/
を追加します。たとえば、123
のクレーム値は、Chat アプリへのメッセージのユーザー名 users/123
と同じです。
関連トピック
- ユーザー操作を受け取って応答する
- MyProfile アプリの例では、Google ログイン レスポンスの ID トークンを使用してユーザーを識別します。