このページでは、 Pub/Sub を使用して Chat アプリを作成する方法について説明します。組織にファイアウォールがあり、Chat から Chat アプリにメッセージを送信できない場合や、Chat アプリが Google Workspace Events APIを使用している場合は、このタイプの Chat アプリのアーキテクチャが役立ちます。ただし、これらの Chat アプリは非同期メッセージの送受信のみが可能であるため、この アーキテクチャには次の制限があります。
- メッセージでダイアログ を使用できません。代わりに、 カード メッセージを使用します。
- 同期レスポンスで個々のカードを更新できません。代わりに、
メソッドを呼び出してメッセージ全体を更新します。
patch
次の図は、Pub/Sub で作成された Chat アプリのアーキテクチャを示しています。
上の図では、Pub/Sub Chat アプリを操作するユーザーの情報フローは次のようになります。
ユーザーが Chat で Chat アプリにメッセージを送信します(ダイレクト メッセージまたは Chat スペース)。または、Chat アプリがアクティブな サブスクリプションを持っている Chat スペースでイベントが発生します。
Chat はメッセージを Pub/Sub トピックに送信します。
アプリケーション サーバー(Chat アプリのロジックを含むクラウドまたはオンプレミス システム)は、ファイアウォールを介してメッセージを受信するために、Pub/Sub トピックをサブスクライブします。
必要に応じて、Chat アプリは Chat API を呼び出して、非同期でメッセージを投稿したり、他のオペレーションを実行したりできます。
前提条件
Chat アプリを作成する場合は、Google Cloud コンソールの Chat API の構成ページで [この Chat アプリを Google Workspace アドオンとしてビルドする] をオフにする必要があります。アプリを Google Chat に公開する をご覧ください。
Node.js
- Google Chat にアクセスできる Business または Enterprise の Google Workspace アカウント。
- 課金を有効にした Google Cloud プロジェクト。既存のプロジェクトで課金が有効になっていることを確認するには、 プロジェクトの 課金ステータスを確認するをご覧ください。プロジェクトを作成して課金を設定するには、 Google Cloud プロジェクトを作成するをご覧ください。
- Node.js 14 以降
- npm パッケージ管理ツール
-
初期化された Node.js プロジェクト。新しいプロジェクトを初期化するには、新しいフォルダを作成して切り替え、コマンドライン インターフェースで次のコマンドを実行します。
npm init
Python
- Google Chat にアクセスできる Business または Enterprise の Google Workspace アカウント。
- 課金を有効にした Google Cloud プロジェクト。既存のプロジェクトで課金が有効になっていることを確認するには、 プロジェクトの 課金ステータスを確認するをご覧ください。プロジェクトを作成して課金を設定するには、 Google Cloud プロジェクトを作成するをご覧ください。
- Python 3.6 以降
- pip パッケージ管理ツール
Java
- Google Chat にアクセスできる Business または Enterprise の Google Workspace アカウント。
- 課金を有効にした Google Cloud プロジェクト。既存のプロジェクトで課金が有効になっていることを確認するには、 プロジェクトの 課金ステータスを確認するをご覧ください。プロジェクトを作成して課金を設定するには、 Google Cloud プロジェクトを作成するをご覧ください。
- Java 11 以降
- Maven パッケージ管理ツール
環境を設定する
Google API を使用する前に、Google Cloud プロジェクトで有効にする必要があります。単一の 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.comChat アプリのサービス アカウントを作成して Pub/Sub と Chat で承認し、秘密鍵ファイルを作業ディレクトリに保存します。
pull サブスクリプションを作成 してトピックに登録します。
以前に作成したサービス アカウントのサブスクリプションに **Pub/Sub サブスクライバー ロール** を割り当てます。
スクリプトを作成する
Node.js
CLI で、サービス アカウントの認証情報を入力します。
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATHCLI で、Google Cloud プロジェクト ID を入力します。
export PROJECT_ID=PROJECT_IDCLI で、以前に作成した Pub/Sub サブスクリプションのサブスクリプション ID を入力します。
export SUBSCRIPTION_ID=SUBSCRIPTION_ID作業ディレクトリに
package.jsonという名前のファイルを作成します。package.jsonファイルに次のコードを貼り付けます。作業ディレクトリに
index.jsという名前のファイルを作成します。index.jsに次のコードを貼り付けます。
Python
CLI で、サービス アカウントの認証情報を入力します。
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATHCLI で、Google Cloud プロジェクト ID を入力します。
export PROJECT_ID=PROJECT_IDCLI で、以前に作成した Pub/Sub サブスクリプションのサブスクリプション ID を入力します。
export SUBSCRIPTION_ID=SUBSCRIPTION_ID作業ディレクトリに
requirements.txtという名前のファイルを作成します。requirements.txtファイルに次のコードを貼り付けます。作業ディレクトリに
app.pyという名前のファイルを作成します。app.pyに次のコードを貼り付けます。
Java
CLI で、サービス アカウントの認証情報を入力します。
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATHCLI で、Google Cloud プロジェクト ID を入力します。
export PROJECT_ID=PROJECT_IDCLI で、以前に作成した Pub/Sub サブスクリプションのサブスクリプション ID を入力します。
export SUBSCRIPTION_ID=SUBSCRIPTION_ID作業ディレクトリに
pom.xmlという名前のファイルを作成します。pom.xmlファイルに次のコードを貼り付けます。作業ディレクトリに
src/main/javaというディレクトリ構造を作成します。src/main/javaディレクトリにMain.javaという名前のファイルを作成します。Main.javaに次のコードを貼り付けます。
アプリを Chat に公開する
Google Cloud コンソールで、[メニュー] > [API とサービス] > [有効な API とサービス] > Google Chat API > [構成] に移動します。
Pub/Sub 用に Chat アプリを構成します。
- [この Chat アプリを Google Workspace アドオンとしてビルドする] をオフにします。確認を求めるダイアログが開きます。ダイアログで [無効にする] をクリックします。
- [アプリ名] に
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 で、作業ディレクトリに切り替えてスクリプトを実行します。
Node.js
npm install
npm start
Python
python -m venv env
source env/bin/activate
pip install -r requirements.txt -U
python app.py
Java
mvn compile exec:java -Dexec.mainClass=Main
コードを実行すると、アプリケーションは 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 コンソールで、[リソースの管理] ページに移動します。[メニュー] menu > [IAM と管理] > [リソースの管理] をクリックします。
- プロジェクト リストで、削除するプロジェクトを選択し、 [Delete] . をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
関連トピック
Chat アプリに機能を追加するには、以下をご覧ください。