このページでは、外部トリガーを使用して Chat スペースに非同期メッセージを送信するように Webhook を設定する方法について説明します。たとえば、サーバーがダウンしたときに Chat でオンコール担当者に通知するようにモニタリング アプリケーションを構成できます。Chat アプリで同期メッセージを送信するには、メッセージを送信するをご覧ください。
このタイプのアーキテクチャ設計では、通信が一方向であるため、ユーザーは Webhook や接続された外部アプリケーションを操作できません。Webhook は会話型ではありません。ユーザーからのメッセージやチャットアプリのインタラクション イベントに応答したり、受信したりすることはできません。メッセージに応答するには、Webhook ではなく、Chat アプリを作成します。
Webhook は厳密には Chat アプリではありませんが、Webhook は標準の HTTP リクエストを使用してアプリケーションを接続するものですが、このページでは簡素化のために Chat アプリと呼んでいます。各 Webhook は、それが登録されている Chat スペースでのみ機能します。着信 Webhook はダイレクト メッセージで機能しますが、すべてのユーザーがチャットアプリを有効にしている場合に限ります。Google Workspace Marketplace に Webhook を公開できません。
次の図は、Chat に接続された Webhook のアーキテクチャを示しています。
上の図では、チャットアプリに次のような情報フローがあります。
- Chat アプリのロジックは、プロジェクト管理システムやチケット発行ツールなどの外部のサードパーティ サービスから情報を受け取ります。
- Chat アプリのロジックは、Webhook URL を使用して特定の Chat スペースにメッセージを送信できるクラウドまたはオンプレミスのシステムでホストされます。
- ユーザーは、その特定の Chat スペースで Chat アプリからメッセージを受信できますが、Chat アプリを操作することはできません。
前提条件
Python
- Python 3.10.7 以降。
- Chat へのアクセス権を持つ Google Workspace アカウント。
- Google Cloud プロジェクト。
- Cloud プロジェクトの課金がオンになっていることを確認します。プロジェクトの課金ステータスを確認する方法を学習する。
- 既存の Chat スペース。
httplib2
ライブラリ。必要に応じて、次のコマンドライン インターフェース(CLI)コマンドを実行し、pip
を使用してライブラリをインストールします。pip install httplib2
Node.js
- Node.js と npm がインストールされていること。
- Chat へのアクセス権を持つ Google Workspace アカウント。
- Google Cloud プロジェクト。
- Cloud プロジェクトの課金がオンになっていることを確認します。プロジェクトの課金ステータスを確認する方法を学習する。
- 既存の Chat スペース。
Java
- Java 11 以降。
- Apache Maven
- Chat へのアクセス権を持つ Google Workspace アカウント。
- Google Cloud プロジェクト。
- Cloud プロジェクトの課金がオンになっていることを確認します。プロジェクトの課金ステータスを確認する方法を学習する。
- 既存の Chat スペース。
Apps Script
- Chat へのアクセス権を持つ Google Workspace アカウント。
- 既存の Chat スペース。
Webhook を作成する
Webhook を作成するには、メッセージを受信する Chat スペースに登録し、メッセージを送信するスクリプトを作成します。
着信 Webhook を登録する
- ブラウザで Chat を開きます。Chat モバイルアプリでは Webhook を構成できません。
- Webhook を追加するスペースに移動します。
- スペースのタイトルの横にある展開矢印 をクリックしてから、[アプリと統合] をクリックします。
- [ Webhook を追加] をクリックします。
- [名前] フィールドに「
Quickstart Webhook
」と入力します。 - [アバターの URL] フィールドに「
https://developers.google.com/chat/images/chat-product-icon.png
」と入力します。 - [保存] をクリックします。
- Webhook URL をコピーするには、 [その他] をクリックし、[ リンクをコピー] をクリックします。
Webhook スクリプトを作成する
サンプルの Webhook スクリプトは、POST
リクエストを Webhook URL に送信して、Webhook が登録されているスペースにメッセージを送信します。Chat API は Message
のインスタンスを返します。
言語を選択して、Webhook スクリプトの作成方法をご確認ください。
Python
作業ディレクトリに
quickstart.py
という名前のファイルを作成します。quickstart.py
に、次のコードを貼り付けます。WEBHOOK_URL
変数の値は、Webhook の登録時にコピーした Webhook URL に置き換えます。
Node.js
作業ディレクトリに
index.js
という名前のファイルを作成します。index.js
に、次のコードを貼り付けます。webhookURL
変数の値は、Webhook の登録時にコピーした Webhook URL に置き換えます。
Java
作業ディレクトリに
pom.xml
という名前のファイルを作成します。pom.xml
に、次のコードをコピーして貼り付けます。作業ディレクトリに、次のディレクトリ構造
src/main/java
を作成します。src/main/java
ディレクトリにApp.java
という名前のファイルを作成します。App.java
に、次のコードを貼り付けます。URL
変数の値は、Webhook の登録時にコピーした Webhook URL に置き換えます。
Apps Script
ブラウザで Apps Script にアクセスします。
[新しいプロジェクト] をクリックします。
次のコードを貼り付けます。
url
変数の値は、Webhook の登録時にコピーした Webhook URL に置き換えます。
Webhook スクリプトを実行する
CLI で、次のスクリプトを実行します。
Python
python3 quickstart.py
Node.js
node index.js
Java
mvn compile exec:java -Dexec.mainClass=App
Apps Script
- [実行] をクリックします。
コードを実行すると、Webhook は登録したスペースにメッセージを送信します。
メッセージ スレッドを開始または返信する
メッセージ リクエストの本文の一部として
spaces.messages.thread.threadKey
を指定します。スレッドを開始しているか返信しているかに応じて、threadKey
に次の値を使用します。スレッドを開始する場合は、
threadKey
を任意の文字列に設定します。ただし、スレッドに返信できるよう、この値をメモしておきます。スレッドに返信する場合は、スレッドの開始時に設定された
threadKey
を指定します。たとえば、最初のメッセージでMY-THREAD
を使用したスレッドに返信を送信するには、MY-THREAD
を設定します。
指定した
threadKey
が見つからない場合のスレッドの動作を定義します。スレッドに返信する、または新しいスレッドを開始する。
messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD
パラメータを Webhook URL に追加します。この URL パラメータを渡すと、Chat は指定されたthreadKey
を使用して既存のスレッドを探します。メッセージが見つかると、そのメッセージはそのスレッドへの返信として投稿されます。見つからない場合、メッセージはそのthreadKey
に対応する新しいスレッドを開始します。スレッドに返信するか、何もしない。
messageReplyOption=REPLY_MESSAGE_OR_FAIL
パラメータを Webhook URL に追加します。この URL パラメータを渡すと、Chat は指定されたthreadKey
を使用して既存のスレッドを探します。メッセージが見つかると、そのメッセージはそのスレッドへの返信として投稿されます。見つからない場合、メッセージは送信されません。
詳しくは、
messageReplyOption
をご覧ください。
次のコードサンプルでは、メッセージ スレッドを開始または返信します。