Chat アプリを他のサービスやツールに接続する

このページでは、Google Chat アプリを Google Chat の外部のサービスやツールに接続する方法について説明します。Chat アプリは単独でも強力ですが、他のシステムと連携して動作することもよくあり、アカウントの接続、データアクセスの承認、追加データの表示、ユーザー設定の構成をコンパニオン アプリケーションで行う必要があります。

ユーザーに 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 は次の処理を行います。

  1. 開始したユーザーに表示されたプロンプトを消去します。
  2. 元のメッセージを公開に変換して、スペースの他のメンバーが閲覧できるようにします。
  3. 元のメッセージを同じ Chat アプリに 2 回送信します。

configCompleteRedirectUrl へのアクセスは、1 つのユーザー メッセージにのみ影響します。ユーザーが Chat アプリに複数回メッセージを送信しようとした結果、複数のプロンプトを受け取った場合、特定のプロンプトをクリックして認証と構成のプロセスを完了すると、その特定のメッセージにのみ影響します。その他のメッセージは変更されません。

この方法で MESSAGE インタラクション イベントが再送信された場合、そのイベントは元のイベントと同じである必要がありますが、状況によっては MESSAGE インタラクション イベントが異なる場合があります。たとえば、メッセージにチャットアプリ A とチャットアプリ B の両方が含まれている場合、チャットアプリ B で認証する前に Chat アプリ A が通常のメッセージで応答すれば、ユーザーはメッセージを編集できます。この場合、ユーザーが認証と構成を完了すると、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 トークンを使用してユーザーを識別します。