このページでは、Pub/Sub を使用して Chat アプリを作成する方法について説明します。Chat アプリのこのタイプのアーキテクチャは、組織にファイアウォールがあり、Chat が Chat アプリにメッセージを送信できない場合や、Chat アプリが Google Workspace Events API を使用している場合に便利です。ただし、これらのチャットアプリは非同期メッセージのみを送受信できるため、このアーキテクチャには次の制限があります。
- メッセージでダイアログを使用できません。代わりに、カード メッセージを使用してください。
- 同期レスポンスで個々のカードを更新することはできません。代わりに、
patch
メソッドを呼び出してメッセージ全体を更新します。
次の図は、Pub/Sub で構築された Chat アプリのアーキテクチャを示しています。
上の図では、Pub/Sub Chat アプリを操作しているユーザーの情報フローは次のとおりです。
ユーザーが Chat で Chat アプリにメッセージを送信します(ダイレクト メッセージまたは Chat スペース)。または、Chat アプリで有効なサブスクリプションがある Chat スペースでイベントが発生します。
Chat はメッセージを Pub/Sub トピックに送信します。
アプリケーション サーバー(Chat アプリのロジックを含むクラウドまたはオンプレミス システム)は、ファイアウォールを介してメッセージを受信するために Pub/Sub トピックをサブスクライブします。
必要に応じて、Chat アプリは Chat API を呼び出して、メッセージを非同期的に投稿したり、他のオペレーションを実行したりできます。
前提条件
Java
- Google Chat へのアクセス権を持つビジネスまたはエンタープライズ向け Google Workspace アカウント。
- 課金を有効にした Google Cloud プロジェクト。既存のプロジェクトで課金が有効になっていることを確認するには、プロジェクトの課金ステータスを確認するをご覧ください。プロジェクトを作成して課金管理を設定するには、Google Cloud プロジェクトを作成するをご覧ください。
- Java 11 以降
- Maven パッケージ管理ツール
Python
- Google Chat へのアクセス権を持つビジネスまたはエンタープライズ向け Google Workspace アカウント。
- 課金を有効にした Google Cloud プロジェクト。既存のプロジェクトで課金が有効になっていることを確認するには、プロジェクトの課金ステータスを確認するをご覧ください。プロジェクトを作成して課金管理を設定するには、Google Cloud プロジェクトを作成するをご覧ください。
- Python 3.6 以降
- pip パッケージ管理ツール
Node.js
- Google Chat へのアクセス権を持つビジネスまたはエンタープライズ向け 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-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
」と入力します。 - [機能] で、[1:1 のメッセージを受信する] と [スペースとグループの会話に参加する] を選択します。
- [接続設定] で [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 アプリまたはカードで予期しない結果が生成されることがあります(カード メッセージが表示されないなど)。
チャット UI にエラー メッセージが表示されない場合でも、チャットアプリのエラー ロギングがオンになっている場合は、エラーの修正に役立つ説明的なエラー メッセージとログデータが利用できます。エラーの表示、デバッグ、修正については、Google Chat エラーのトラブルシューティングと修正をご覧ください。
クリーンアップ
このチュートリアルで使用したリソースに対して Google Cloud アカウントで課金されないようにするには、Cloud プロジェクトを削除することをおすすめします。
- Google Cloud コンソールで、[リソースの管理] ページに移動します。メニュー > [IAM と管理] > [リソースを管理] をクリックします。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
関連トピック
Chat アプリに機能を追加するには、以下をご覧ください。