このページでは、Pub/Sub を使用して Chat 用アプリを作成する方法について説明します。このタイプの Chat 用アーキテクチャは、組織にファイアウォールがあり、Chat から Chat 用アプリにメッセージを送信できない場合や、Chat 用アプリが Google Workspace Events API を使用している場合に便利です。ただし、これらの Chat 用アプリは非同期メッセージの送受信しかできないため、このアーキテクチャには次の制限があります。
- メッセージでダイアログを使用できません。代わりに、カード メッセージを使用します。
- 同期レスポンスで個々のカードを更新できません。代わりに、
patch
メソッドを呼び出してメッセージ全体を更新します。
次の図は、Pub/Sub で構築された Chat 用アプリのアーキテクチャを示しています。
上の図では、Pub/Sub Chat アプリを操作するユーザーの情報フローは次のようになります。
ユーザーが Chat で Chat アプリにメッセージを送信する(ダイレクト メッセージまたは Chat スペース)、または Chat アプリがアクティブなサブスクリプションを持っている Chat スペースでイベントが発生する。
Chat はメッセージを Pub/Sub トピックに送信します。
アプリケーション サーバー(Chat 用アプリのロジックを含むクラウド システムまたはオンプレミス システム)は、ファイアウォール経由でメッセージを受信するために Pub/Sub トピックをサブスクライブします。
必要に応じて、Chat 用アプリは Chat API を呼び出して、メッセージを非同期的に投稿したり、他のオペレーションを実行したりできます。
前提条件
Java
- Google Chat へのアクセス権を持つ Business または Enterprise の Google Workspace アカウント。
- 課金を有効にした Google Cloud プロジェクト。既存のプロジェクトで課金が有効になっていることを確認するには、プロジェクトの課金ステータスを確認するをご覧ください。プロジェクトを作成して課金管理を設定するには、Google Cloud プロジェクトを作成するをご覧ください。
- Java 11 以降
- Maven パッケージ管理ツール
Python
- Google Chat へのアクセス権を持つ Business または Enterprise の Google Workspace アカウント。
- 課金を有効にした Google Cloud プロジェクト。既存のプロジェクトで課金が有効になっていることを確認するには、プロジェクトの課金ステータスを確認するをご覧ください。プロジェクトを作成して課金管理を設定するには、Google Cloud プロジェクトを作成するをご覧ください。
- Python 3.6 以降
- pip パッケージ管理ツール
Node.js
- Google Chat へのアクセス権を持つ Business または Enterprise の Google Workspace アカウント。
- 課金を有効にした Google Cloud プロジェクト。既存のプロジェクトで課金が有効になっていることを確認するには、プロジェクトの課金ステータスを確認するをご覧ください。プロジェクトを作成して課金管理を設定するには、Google Cloud プロジェクトを作成するをご覧ください。
- Node.js 14 以降
- npm パッケージ管理ツール
-
初期化された Node.js プロジェクト。新しいプロジェクトを初期化するには、新しいフォルダを作成してそのフォルダに切り替え、コマンドライン インターフェースで次のコマンドを実行します。
npm init
環境を設定する
Google API を使用する前に、Google Cloud プロジェクトで API を有効にする必要があります。1 つの Google Cloud プロジェクトで 1 つ以上の API を有効にできます。Google Cloud コンソールで、Google Chat API と Pub/Sub API を有効にします。
Pub/Sub を設定する
Chat API がメッセージを送信できる Pub/Sub トピックを作成します。Chat 用アプリごとに 1 つのトピックを使用することをおすすめします。
次のサービス アカウントに Pub/Sub パブリッシャーのロールを割り当てて、トピックに公開する Chat の権限を付与します。
chat-api-push@system.gserviceaccount.com
Chat 用アプリの サービス アカウントを作成して、Pub/Sub と Chat で認証し、秘密鍵ファイルを作業ディレクトリに保存します。
トピックにpull サブスクリプションを作成します。
以前に作成したサービス アカウントに、サブスクリプションに対する Pub/Sub サブスクライバー ロールを割り当てます。
スクリプトを作成する
Java
CLI で、サービス アカウントの認証情報を指定します。
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATH
CLI で、Google Cloud プロジェクト ID を指定します。
export PROJECT_ID=PROJECT_ID
CLI で、以前に作成した Pub/Sub サブスクリプションのサブスクリプション ID を指定します。
export SUBSCRIPTION_ID=SUBSCRIPTION_ID
作業ディレクトリに
pom.xml
という名前のファイルを作成します。pom.xml
ファイルに次のコードを貼り付けます。作業ディレクトリに、ディレクトリ構造
src/main/java
を作成します。src/main/java
ディレクトリにMain.java
という名前のファイルを作成します。Main.java
に、次のコードを貼り付けます。
Python
CLI で、サービス アカウントの認証情報を指定します。
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATH
CLI で、Google Cloud プロジェクト ID を指定します。
export PROJECT_ID=PROJECT_ID
CLI で、以前に作成した Pub/Sub サブスクリプションのサブスクリプション ID を指定します。
export SUBSCRIPTION_ID=SUBSCRIPTION_ID
作業ディレクトリに
requirements.txt
という名前のファイルを作成します。requirements.txt
ファイルに次のコードを貼り付けます。作業ディレクトリに
app.py
という名前のファイルを作成します。app.py
に、次のコードを貼り付けます。
Node.js
CLI で、サービス アカウントの認証情報を指定します。
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATH
CLI で、Google Cloud プロジェクト ID を指定します。
export PROJECT_ID=PROJECT_ID
CLI で、以前に作成した Pub/Sub サブスクリプションのサブスクリプション ID を指定します。
export SUBSCRIPTION_ID=SUBSCRIPTION_ID
作業ディレクトリに
package.json
という名前のファイルを作成します。package.json
ファイルに次のコードを貼り付けます。作業ディレクトリに
index.js
という名前のファイルを作成します。index.js
に、次のコードを貼り付けます。
アプリを Chat に公開する
Google Cloud コンソールで、メニュー > [API とサービス] > [有効な API とサービス] > [Google Chat API] > [構成] に移動します。
Pub/Sub 用に Chat 用アプリを構成します。
- [アプリ名] に「
Quickstart App
」と入力します。 - [アバターの URL] に「
https://developers.google.com/chat/images/quickstart-app-avatar.png
」と入力します。 - [説明] に「
Quickstart app
」と入力します。 - [機能] で、[スペースとグループの会話に参加する] を選択します。
- [接続設定] で、[Cloud Pub/Sub] を選択し、前に作成した Pub/Sub トピックの名前を貼り付けます。
- [公開設定] で、[ドメイン内の特定のユーザーおよびグループにこの Google Chat 用アプリの利用を許可する] を選択し、メールアドレスを入力します。
- [ログ] で、[エラーを Logging にロギング] を選択します。
- [アプリ名] に「
[保存] をクリックします。
アプリで Chat のメッセージを受信して返信できるようになりました。
スクリプトを実行する
CLI で、作業ディレクトリに移動してスクリプトを実行します。
Java
mvn compile exec:java -Dexec.mainClass=Main
Python
python -m venv env
source env/bin/activate
pip install -r requirements.txt -U
python app.py
Node.js
npm install
npm start
コードを実行すると、アプリケーションは Pub/Sub トピックに公開されたメッセージのリッスンを開始します。
Chat 用アプリをテストする
Chat 用アプリをテストするには、Chat 用アプリとのダイレクト メッセージ スペースを開いてメッセージを送信します。
信頼できるテスターとして登録した際に指定した Google Workspace アカウントを使用して、Google Chat を開きます。
- [ 新しいチャット] をクリックします。
- [ユーザーを 1 人以上追加] フィールドに、Chat 用アプリの名前を入力します。
結果から Chat 用アプリを選択します。ダイレクト メッセージが開きます。
- そのアプリの新しいダイレクト メッセージに、「
Hello
」と入力してenter
を押します。
信頼できるテスターを追加して、インタラクティブ機能のテストについて詳しくは、Google Chat 用アプリのインタラクティブ機能をテストするをご覧ください。
トラブルシューティング
Google Chat 用アプリまたはカードがエラーを返すと、Chat インターフェースに「エラーが発生しました」というメッセージが表示されます。または「リクエストを処理できません。」と表示されることがあります。Chat UI にエラー メッセージが表示されない場合でも、Chat 用アプリやカードで予期しない結果が生じることがあります。たとえば、カード メッセージが表示されないことがあります。
Chat UI にエラー メッセージが表示されない場合でも、Chat 用アプリのエラー ロギングが有効になっている場合は、エラーの修正に役立つ説明的なエラー メッセージとログデータを利用できます。エラーの表示、デバッグ、修正については、Google Chat のエラーのトラブルシューティングと修正をご覧ください。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、Cloud プロジェクトを削除することをおすすめします。
- Google Cloud コンソールで、[リソースの管理] ページに移動します。メニュー アイコン > [IAM と管理] > [リソースの管理] をクリックします。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
関連トピック
Chat 用アプリに機能を追加するには、以下をご覧ください。