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

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

前提条件

インタラクション イベントを受信して応答するように構成された Google Chat アプリ。インタラクティブな Chat アプリを作成するには、使用するアプリのアーキテクチャに基づいて、次のいずれかのクイックスタートを完了します。

ユーザーに Chat アプリの構成をリクエストする

リクエストを完了するために、Chat アプリで直接完了できない追加の構成が必要な場合は、通常の返信の一部として、または非公開で、次の形式で構成 URL をユーザーに返します。

{
  "actionResponse": {
    "type": "REQUEST_CONFIG",
    "url": "CONFIGURATION_URL"
  }
}

これにより、Google Chat はユーザーに非公開のプロンプトを表示します。CONFIGURATION_URL は、追加の認証、承認、構成を行うためにユーザーがアクセスするリンクです。REQUEST_CONFIG レスポンスは、通常のレスポンス メッセージと相互に排他的です。テキスト、カード、その他の属性は無視されます。

構成リクエストを完了する

Chat アプリが受信するすべての MESSAGEADDED_TO_SPACEAPP_COMMAND インタラクション イベント には、 configCompleteRedirectUrl フィールドも含まれます。この URL は、プロセスの完了時に使用される構成 URL でエンコードする必要があります。この URL にリダイレクトすると、構成リクエストが完了したことが Google Chat に通知されます。

Chat アプリが起動すると、フローは受信した特定のメッセージによって異なります。@app help のようなメッセージに対して、Chat アプリは追加の構成を必要とせずにメッセージで応答する必要があります。

ユーザーが元のメッセージで提供された configCompleteRedirectUrl に正常にリダイレクトされると、Google Chat は次の手順を実行します。

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

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

このように MESSAGE インタラクション イベントが再送信される場合、元のイベントと同一である必要があります。ただし、MESSAGE インタラクション イベントが異なる場合があります。たとえば、メッセージで Chat アプリ A と Chat アプリ B の両方が言及されている場合、Chat アプリ 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 と同じです。