G-gen の堂原です。本記事では Google Cloud (旧称 GCP) において、Google Chat API を用いて他の Google Cloud 組織配下の Google Cloud プロジェクト上にチャットボットを作成する際の落とし穴について紹介します。
はじめに
Google Chat API を用いることで、Google Workspace のチャットツールである Google Chat から利用するチャットボットを開発することが出来ます。
本 API と Vertex AI Search を用いたチャットボットの作成方法についてまとめた記事がありますため、具体的な使用例については当該記事をご参照ください。
サンプル環境
本記事では Google Workspace 及び Google Cloud の用語が複数登場しややこしくなっています。 そのため以下のようなサンプル環境を用いて解説を進めていきます。
企業名 | どこに存在するリソースか | リソース | リソース名 |
---|---|---|---|
株式会社 A | Google Workpsace | Google Workpsace アカウント (テナント) |
テナント A |
Google Workspace | Google アカウント | アカウント A | |
Google Workspace | Google グループ | グループ A | |
Google Cloud | Google Cloud 組織 | 組織 A | |
Google Cloud | Google Cloud プロジェクト | プロジェクト A | |
株式会社 B | Google Workpsace | Google Workpsace アカウント (テナント) |
テナント B |
Google Workspace | Google アカウント | アカウント B | |
Google Workspace | Google グループ | グループ B |
※ 「テナント A」、「テナント B」については、正式は Google Workspace アカウントと呼ばれますが、アカウントという名称は Google アカウントと紛らわしいため、本記事ではテナントと表現します。
結論
本記事で伝えたいことは 1 つ、
「Google Chat API の有効化は、必ずその Google Cloud プロジェクトと同じ組織に所属する Google アカウントで行うこと」
です。
前述のサンプル環境の用語を使って説明すると 「プロジェクト A の Google Chat API はアカウント A が一番最初に有効化すること」 といえます。
一部影響を受けないユースケースもありますが、以下の出来なくなることに当てはまる場合、Google Cloud プロジェクトの作り直しが必要となります。
出来なくなること
前提
まず前提として、Google Chat API で作成したチャットボットは以下の対象に公開をすることができます。
- 特定の Google Workspace テナントに属する Google アカウントまたは Google グループ
- Google Cloud プロジェクトが属する組織の Google Workspace テナントに属する Google アカウント
- 全ての Google アカウント
言い換えると以下のとおりです。
- アカウント A 及び グループ A
- アカウント B 及び グループ B
- テナント A に属する全 Google アカウント
- 全ての Google アカウント
参考 : Chat アプリの公開設定と公開設定
影響
Google Cloud プロジェクトが属する組織とは別の Google Workspace テナントに属する Google アカウントが Google Chat API を有効化した場合、次のようなことが出来なくなります。
- Google Cloud プロジェクトが属する組織の Google Workspace テナントに属する Google グループを対象にチャットボットを公開する
- 特定の Google Workspace テナントに属する Google アカウントのみを対象にチャットボットを公開する
言い換えると以下のとおりです。
プロジェクトA において、アカウント B が Google Chat API を有効化すると、以下のようなことができなくなります。
- グループ A を対象にチャットボットを公開する
- テナント A または テナント B に属する Google アカウントのみを対象にチャットボットを公開する
本影響については、想定シーンが違うものの、次の公式ドキュメントにて示唆されています。
参考 : Google Workspace の組織を統合した後で、ドメインで共有されている Chat アプリを移行する
グループ A を対象にチャットボットを公開する
正常時、Google Chat API のコンソール画面にある「公開設定」にメールアドレスを記入することで、特定の Google アカウントまたは Google グループにチャットボットを公開するが可能です。
アカウント A が Google Chat API を有効化した場合、グループ A のメールアドレスをいれると、当該グループに所属する Google アカウントは、当然 Google Chat にて当該チャットボットを見つけることができるようになります。
ただしアカウント B が Google Chat API を有効化した場合、グループ A のメールアドレスを入力したとしても Google Chat で当該チャットボットを見つけることが出来ません。
メールアドレスの入力自体は可能で、特にエラーメッセージも表示されないため、本仕様を知らないと原因特定が困難になります。
テナント A または テナント B に属する Google アカウントのみを対象にチャットボットを公開する
テナントレベルでチャットボットを公開するには、Google Workspace Marketplace SDK の設定をする必要があります。
アカウント B が Google Chat API を有効化した場合、アカウント A が Google Workspace Marketplace SDK のコンソール画面にアクセスすると以下のエラーが表示されます。
お使いのアカウントは、このクラウド プロジェクトまたはアプリと同じドメインに属していません。
公式ドキュメントには明記されていませんが、以下のような状態になってしまっていると考えられます。
- プロジェクト A は テナント A に紐づいている
- アプリ (Google Chat API) のドメインはテナント B に紐づいている
そのため、アカウント A はプロジェクト A と同じ、テナント A 配下に存在してる一方で、アプリと異なる Google Workspace テナントに属していることになるため本エラーが表示されてしまうのです。
勿論、アカウント B で本画面にアクセスしても同様のエラーが表示されます。
つまり、誰も本画面を操作できなくなります。
対処法
唯一の対処法は
「Google Chat API の有効化は、必ずその Google Cloud プロジェクトと同じ組織に所属する Google アカウントで行うこと」
だけです。
また、Google Cloud APIs は有効・無効を切り替えることができますが、Google Chat API は一度有効にしてしまうと何度有効・無効を切り替えても本事象が解決することはありません。
そのため Google Cloud プロジェクトを新たに作成するしか解決策が無くなります。
堂原 竜希(記事一覧)
クラウドソリューション部データアナリティクス課。2023年4月より、G-genにジョイン。
Google Cloud Partner Top Engineer 2023, 2024に選出 (2024年はRookie of the yearにも選出)。休みの日はだいたいゲームをしているか、時々自転車で遠出をしています。
Follow @ryu_dohara