Google Chat(Google チャット)
Google Chat チャンネル:対応状況、機能、設定。
ステータス:DMとスペースで使用可能。Google Chat API webhooks経由で統合(HTTPのみ)。
クイックセットアップ
1. Google Cloud プロジェクトを作成し、Google Chat APIを有効にします:
- 開く:''Google Chat API Credentials''
- まだ有効になっていない場合は、先にAPIを有効にします。
2. Service Accountを作成します:
- Create Credentials > Service Accountをクリックします。
- 名前は何でもOKです(例:openclaw-chat)。
- 権限は空のままにします(Continueをクリック)。
- アクセス可能なプリンシパルは空のままにします(Doneをクリック)。
3. JSON Keyを作成してダウンロードします:
- サービスアカウントリストで、作成したばかりのアカウントをクリックします。
- Keysタブを開きます。
- Add Key > Create new keyをクリックします。
- JSONを選択し、Createをクリックします。
4. ダウンロードしたJSONファイルをgatewayホストに保存します(例:~/.openclaw/googlechat-service-account.json)。
5. ''Google Cloud Console Chat Configuration''でGoogle Chatアプリを作成します:
- Application infoを入力します:
- App name: (e.g., OpenClaw)
- Avatar URL: (e.g., https://openclaw.ai/logo.png)
- Description: (e.g., 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を選択し、gatewayの公開URL + /googlechatに設定します。
- ヒント:openclaw statusを実行すると、gatewayの公開URLが表示されます(設定されている場合)。
- In Visibility, check Make this Chat app available to specific people and groups in <Your Domain>.
- テキストボックスにメールアドレスを入力します(例:[email protected])。
- ページの下部でSaveをクリックします。
6. App statusを有効にします:
- 保存後にページを更新します。
- App statusを見つけます(通常、保存後にページの上部または下部に表示されます)。
- ステータスをLive - available to usersに変更します。
- もう一度Saveをクリックします。
7. OpenClawでサービスアカウントパスとwebhook audienceを設定します:
- Env:GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json
- またはconfig:channels.googlechat.serviceAccountFile: "/path/to/service-account.json";。
8. webhook audienceのtypeとvalueを設定します(Chatアプリの設定と一致している必要があります)。
9. gatewayを起動します。Google ChatはwebhookパスにPOSTリクエストを送信します。
Google Chatに追加
gatewayが実行中で、メールアドレスがvisibilityリストにある場合:
1. ''Google Chat''を開きます。
2. Direct Messagesの横にある+をクリックします。
3. 検索ボックスにGoogle Cloud Consoleで設定したApp nameを入力します。
- 注意:これはプライベートアプリで、「Marketplace」のブラウズリストには表示されません。名前でのみ検索できます。
4. 結果からボットを選択します。
5. AddまたはChatをクリックして1:1の会話を開始します。
6. 「Hello」を送信してトリガーをテストします。
公開URL(Webhookのみ)
Google Chat webhooksには公開アクセス可能なHTTPSエンドポイントが必要です。セキュリティのため、/googlechatパスのみを公開インターネットに公開します。OpenClawダッシュボードとその他の機密エンドポイントはプライベートネットワークに残します。
#
オプションA:Tailscale Funnel(推奨)
Tailscale Serveを使用してプライベートダッシュボードをホストし、Funnelを使用してwebhookパスのみを公開します。これにより/はプライベートのままで、/googlechatのみが公開インターネットに公開されます。
1. gatewayのバインドアドレスを確認します:
`bash
ss -tlnp | grep 18789
`
IPを記録します(例:127.0.0.1、0.0.0.0、またはTailscale IP:100.x.x.x)。
2. ダッシュボードのみをtailnetに公開(ポート8443):
`bash
# localhost(127.0.0.1または0.0.0.0)にバインド:
tailscale serve --bg --https 8443 http://127.0.0.1:18789
# Tailscale IPのみにバインド(例:100.106.161.80):
tailscale serve --bg --https 8443 http://100.106.161.80:18789
`
3. webhookパスのみを公開インターネットに公開:
`bash
# localhost(127.0.0.1または0.0.0.0)にバインド:
tailscale funnel --bg --set-path /googlechat http://127.0.0.1:18789/googlechat
# Tailscale IPのみにバインド(例:100.106.161.80):
tailscale funnel --bg --set-path /googlechat http://100.106.161.80:18789/googlechat
`
4. このノードのFunnelを承認します:
コマンドが承認を求める場合、出力内の承認URLにアクセスして、tailnetポリシーでこのノードがFunnelを使用できるようにします。
`bash
tailscale serve status
tailscale funnel status
`
Public webhook URL:
https://<node-name>.<tailnet>.ts.net/googlechat
プライベートダッシュボード(tailnetのみ):
https://<node-name>.<tailnet>.ts.net:8443/
Google Chatアプリの設定で公開URLを使用します(:8443なし)。
Tutorial.alert.info
#
オプションB:リバースプロキシ(Caddy)
特定のパスのみをプロキシします:
your-domain.com {
reverse_proxy /googlechat* localhost:18789
}これによりyour-domain.com/は無視または404を返し、your-domain.com/googlechatは安全にOpenClawに転送されます。
#
オプションC:Cloudflare Tunnel
tunnelのingressルールをwebhookパスのみをルーティングするように設定します:
- Path:/googlechat -> http://localhost:18789/googlechat
- Default Rule:HTTP 404(Not Found)
How It Works
1. Google Chat sends a webhook POST to the gateway. Each request includes Authorization: Bearer <token>.
2. OpenClawは設定されたaudienceType + audienceに従ってtokenを検証します:
- audienceType: "app-url":audienceはHTTPS webhook URLです。
- audienceType: "project-number":audienceはCloud project numberです。
3. メッセージはspaceでルーティングされます:
- DMはセッションキー''agent:''を使用します。
- Spacesはセッションキー''agent:''を使用します。
4. DMはデフォルトでペアリング:不明な送信者はペアリングコードを受け取ります;承認:
- ''openclaw pairing approve googlechat ''''
5. グループスペースはデフォルトで@mentionが必要です。メンション検出にアプリのユーザー名が必要な場合、botUserを設定します。
配信ターゲット
配信とallowlist用の識別子:
- DM:''users/''または''users/''(メールサポート)
- Spaces:''spaces/''
設定のハイライト
{
channels: {
googlechat: {
enabled: true,
serviceAccountFile: "/path/to/service-account.json",
audienceType: "app-url",
audience: "https://gateway.example.com/googlechat",
webhookPath: "/googlechat",
botUser: "users/1234567890",
dm: {
policy: "pairing",
allowFrom: ["users/1234567890", "[email protected]"],
},
groupPolicy: "allowlist",
groups: {
"spaces/AAAA": {
allow: true,
requireMention: true,
users: ["users/1234567890"],
systemPrompt: "Short answers only.",
},
},
actions: { reactions: true },
typingIndicator: "message",
mediaMaxMb: 20,
},
},
}Explanation:
- サービスアカウントの認証情報は、serviceAccountを介してJSON文字列としてインラインで提供することもできます。
- 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ハンドラーが登録されていないことを意味します。一般的な原因:
1. チャンネルが設定されていない:設定にchannels.googlechatがありません。確認:
__CODE_BLOCK_1__bash
openclaw channels status
`
#
その他の問題
- openclaw channels status --probeを実行して、認証エラーまたはaudience設定の欠落を確認します。
- メッセージが到着しない場合、Chatアプリのwebhook URLとイベントサブスクリプションを確認します。
- メンションゲートが返信をブロックする場合、botUserをアプリのユーザーリソース名に設定し、requireMentionを確認します。
- テストメッセージを送信するときにopenclaw logs --followを実行し、リクエストがgatewayに到達していることを確認します。
関連ドキュメント:
- ''Security''
- ''Reactions''