Google Chat(Chat API)¶
ステータス: Google Chat API の Webhook(HTTP のみ)経由で、DM とスペースに対応済みです。
クイックセットアップ(初心者)¶
- Google Cloud プロジェクトを作成し、Google Chat API を有効化します。 - こちらへ移動: Google Chat API Credentials - まだ有効でない場合は API を有効化します。
- Service Account を作成します。
- Create Credentials > Service Account をクリックします。
- 任意の名前を付けます(例:
openclaw-chat)。 - 権限は空欄のままにします(Continue を押します)。 - アクセス権を持つプリンシパルも空欄のままにします(Done を押します)。 - JSON Key を作成してダウンロードします。 - Service Account の一覧から、作成したものをクリックします。 - Keys タブに移動します。 - Add Key > Create new key をクリックします。 - JSON を選択して Create を押します。
- ダウンロードした JSON ファイルをゲートウェイ ホストに保存します(例:
~/.openclaw/googlechat-service-account.json)。 - Google Cloud Console Chat Configuration で Google Chat アプリを作成します。
- Application info を入力します。
- App name:(例:
OpenClaw) - Avatar URL:(例:
https://openclaw.ai/logo.png) - Description:(例:
Personal AI Assistant) - Interactive features を有効化します。
- Functionality で Join spaces and group conversations にチェックします。
- Connection settings で HTTP endpoint URL を選択します。
- Triggers で Use a common HTTP endpoint URL for all triggers を選択し、ゲートウェイの公開 URL に続けて
/googlechatを設定します。 - ヒント:
openclaw statusを実行すると、ゲートウェイの公開 URL を確認できます。 - Visibility で Make this Chat app available to specific people and groups in <Your Domain> にチェックします。
- テキストボックスに自分のメールアドレス(例:
user@example.com)を入力します。 - 画面下部の Save をクリックします。
- App name:(例:
- アプリのステータスを有効化します。 - 保存後、ページを更新します。 - App status セクション(保存後、通常は上部または下部に表示されます)を探します。 - ステータスを Live - available to users に変更します。 - 再度 Save をクリックします。
- Service Account のパスと Webhook audience を使って OpenClaw を設定します。
- 環境変数:
GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json- または config:channels.googlechat.serviceAccountFile: "/path/to/service-account.json"。 - Webhook audience のタイプと値を設定します(Chat アプリの設定と一致させます)。
- ゲートウェイを起動します。 GoogleチャットはWebhookのパスにPOSTします。
Google Chat に追加¶
ゲートウェイが稼働しており、可視性リストに自分のメールが追加されている場合:
- Google Chat に移動します。
- Direct Messages の横にある +(プラス)アイコンをクリックします。
- 検索バー(通常人を追加する場所)に、Google Cloud Console で設定した App name を入力します。 - 注記: このボットはプライベートアプリのため、「Marketplace」の一覧には表示されません。名前で検索する必要があります。 名前で検索する必要があります。
- 検索結果からボットを選択します。
- Add または Chat をクリックして 1:1 の会話を開始します。
- 「Hello」を送信してアシスタントを起動します。
公開 URL(Webhook のみ)¶
Google Chat の Webhook には公開 HTTPS エンドポイントが必要です。セキュリティのため、インターネットに公開するのは /googlechat パスのみにしてください。OpenClaw ダッシュボードやその他の機密エンドポイントは、プライベートネットワーク上に保持します。 セキュリティのため、/googlechatのパスだけをインターネットに公開します。 OpenClawダッシュボードやその他の機密性の高いエンドポイントをプライベートネットワーク上に保持します。
オプション A: Tailscale Funnel(推奨)¶
プライベートなダッシュボードには Tailscale Serve、公開 Webhook パスには Funnel を使用します。これにより / を非公開のまま、/googlechat のみを公開できます。 /は/googlechatのみを公開しています。
- ゲートウェイがどのアドレスにバインドされているか確認します。
bash
ss -tlnp | grep 18789
IP アドレス(例: 127.0.0.1、0.0.0.0、または 100.x.x.x のような Tailscale IP)をメモします。
- ダッシュボードを tailnet のみに公開します(ポート 8443)。
```bash # If bound to localhost (127.0.0.1 or 0.0.0.0): tailscale serve --bg --https 8443 http://127.0.0.1:18789
# If bound to Tailscale IP only (e.g., 100.106.161.80): tailscale serve --bg --https 8443 http://100.106.161.80:18789 ```
- Webhook パスのみを公開します。
```bash # If bound to localhost (127.0.0.1 or 0.0.0.0): tailscale funnel --bg --set-path /googlechat http://127.0.0.1:18789/googlechat
# If bound to Tailscale IP only (e.g., 100.106.161.80): tailscale funnel --bg --set-path /googlechat http://100.106.161.80:18789/googlechat ```
-
ノードを Funnel アクセス用に承認します。 プロンプトが表示された場合は、出力に表示される承認 URL にアクセスして、tailnet ポリシーでこのノードの Funnel を有効化します。
-
設定を確認します。
bash
tailscale serve status
tailscale funnel status
公開 Webhook URL は次のとおりです:
https://<node-name>.<tailnet>.ts.net/googlechat
プライベートなダッシュボードは tailnet のみに保たれます:
https://<node-name>.<tailnet>.ts.net:8443/
Google Chat アプリの設定では、公開 URL(:8443 を除く)を使用します。
注:この設定はリブート間で持続します。 注記: この設定は再起動後も保持されます。後で削除するには、
tailscale funnel resetとtailscale serve resetを実行します。
オプション B: リバースプロキシ(Caddy)¶
Caddy のようなリバースプロキシを使用する場合は、特定のパスのみをプロキシします。
your-domain.com {
reverse_proxy /googlechat* localhost:18789
}
この設定では、your-domain.com/ へのリクエストは無視されるか 404 が返され、your-domain.com/googlechat のみが安全に OpenClaw にルーティングされます。
オプション C: Cloudflare Tunnel¶
トンネルの ingress ルールを設定し、Webhook パスのみをルーティングします。
- パス:
/googlechat->http://localhost:18789/googlechat - Default Rule: HTTP 404(Not Found)
仕組み¶
- ゲートウェイを起動します。Google Chat は Webhook パスに POST を送信します。 各リクエストには
Authorization: Bearer <token>ヘッダーが含まれています。 - OpenClaw は、設定された
audienceTypeとaudienceに対してトークンを検証します。 -audienceType: "app-url"→ audience は HTTPS の Webhook URL です。 -audienceType: "project-number"→ audience は Cloud プロジェクト番号です。 - メッセージはスペースごとにルーティングされます。
- DM はセッションキー
agent:<agentId>:googlechat:dm:<spaceId>を使用します。 - スペースはセッションキーagent:<agentId>:googlechat:group:<spaceId>を使用します。 - DMアクセスはデフォルトでペアリングされています。 不明な送信者はペアリングコードを受け取ります。以下を承認してください:
-
openclaw pairing approve googlechat <code> - グループスペースにはデフォルトで@-メンションが必要です。 グループスペースでは、デフォルトで @ メンションが必要です。メンション検出にアプリのユーザー名が必要な場合は
botUserを使用します。
対象¶
配信および許可リストには、次の識別子を使用します。
- ダイレクトメッセージ:
users/<userId>またはusers/<email>(メールアドレスも使用できます)。 - スペース:
spaces/<spaceId>。
設定の要点¶
{
channels: {
googlechat: {
enabled: true,
serviceAccountFile: "/path/to/service-account.json",
audienceType: "app-url",
audience: "https://gateway.example.com/googlechat",
webhookPath: "/googlechat",
botUser: "users/1234567890", // optional; helps mention detection
dm: {
policy: "pairing",
allowFrom: ["users/1234567890", "name@example.com"],
},
groupPolicy: "allowlist",
groups: {
"spaces/AAAA": {
allow: true,
requireMention: true,
users: ["users/1234567890"],
systemPrompt: "Short answers only.",
},
},
actions: { reactions: true },
typingIndicator: "message",
mediaMaxMb: 20,
},
},
}
注記:
- Service Account の認証情報は、
serviceAccount(JSON 文字列)でインライン指定することもできます。 - デフォルトの Webhook パスは、
webhookPathが設定されていない場合、/googlechatです。 - リアクションは、
actions.reactionsが有効な場合にreactionsツールおよびchannels actionで利用できます。 typingIndicatorはnone、message(デフォルト)、およびreactionをサポートします(リアクションにはユーザー OAuth が必要です)。- 添付ファイルは Chat API 経由でダウンロードされ、メディアパイプラインに保存されます(サイズは
mediaMaxMbにより制限されます)。
トラブルシューティング¶
405 Method Not Allowed¶
Google Cloud Logs Explorer に次のようなエラーが表示される場合:
status code: 405, reason phrase: HTTP error response: HTTP/1.1 405 Method Not Allowed
これは Webhook ハンドラーが登録されていないことを意味します。一般的な原因は次のとおりです。 よくある原因:
- チャンネルが未設定: 設定に
channels.googlechatセクションがありません。次で確認します。 以下の認証を行います。
bash
openclaw config get channels.googlechat
「Config path not found」と返る場合は、設定を追加してください(設定の要点 を参照)。
- プラグインが有効でない: プラグインの状態を確認します。
bash
openclaw plugins list | grep googlechat
「disabled」と表示される場合は、plugins.entries.googlechat.enabled: true を設定に追加します。
- ゲートウェイが再起動されていない: 設定追加後にゲートウェイを再起動します。
bash
openclaw gateway restart
チャンネルが稼働していることを確認します。
openclaw channels status
# Should show: Google Chat default: enabled, configured, ...
その他の問題¶
- 認証エラーや audience 設定の不足については
openclaw channels status --probeを確認します。 - メッセージが届かない場合は、Chat アプリの Webhook URL とイベントサブスクリプションを確認します。
- メンション制御により返信がブロックされる場合は、
botUserをアプリのユーザーリソース名に設定し、requireMentionを確認します。 - テストメッセージ送信時に
openclaw logs --followを使用して、リクエストがゲートウェイに到達しているか確認します。
関連ドキュメント: