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 アプリが起動すると、フローは受信したメッセージによって異なります。Chat アプリは、@app help のようなメッセージに対して、追加の構成なしでメッセージで応答する必要があります。

元のメッセージで指定された configCompleteRedirectUrl にユーザーが正常にリダイレクトされると、Google Chat は次の処理を行います。

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

configCompleteRedirectUrl へのアクセスは、単一のユーザー メッセージにのみ影響します。ユーザーが 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 と同じです。

  • MyProfile アプリの例では、Google ログイン レスポンスの ID トークンを使用してユーザーを識別します。