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を作成してダウンロードします:
- サービスアカウントのリストで、作成したアカウントをクリックします。
- Keysタブに移動します。
- Add Key > Create new keyをクリックします。
- JSONを選択してCreateを押します。
- ダウンロードしたJSONファイルをGatewayホストに保存します(例: ~/.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を選択し、Gatewayの公開URLに/googlechatを付けたものを設定します。
- ヒント: openclaw statusを実行してGatewayの公開URLを見つけてください。
- Visibilityで、**Make this Chat app available to specific people and groups in <Your Domain>**をチェックします。
- テキストボックスにメールアドレス(例: [email protected])を入力します。
- 下部のSaveをクリックします。
- Application infoを入力します:
- アプリのステータスを有効にします:
- 保存後、ページを更新します。
- App statusセクションを探します(通常、保存後の上部または下部付近にあります)。
- ステータスをLive - available to usersに変更します。
- 再度Saveをクリックします。
- サービスアカウントパス + Webhook audienceでOpenClawを設定します:
- 環境変数: GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json
- または設定: channels.googlechat.serviceAccountFile: "/path/to/service-account.json"。
- Webhook audienceタイプ + 値を設定します(Chatアプリ設定と一致させます)。
- Gatewayを起動します。Google ChatがWebhookパスにPOSTします。
Google Chatに追加
Gatewayが実行中で、メールアドレスがvisibilityリストに追加されたら:
- Google Chatに移動します。
- Direct Messagesの横にある**+**(プラス)アイコンをクリックします。
- 検索バー(通常人を追加する場所)で、Google Cloud Consoleで設定したApp nameを入力します。
- 注: プライベートアプリなので、botは「Marketplace」ブラウズリストには表示されません。名前で検索する必要があります。
- 検索結果からbotを選択します。
- AddまたはChatをクリックして1対1の会話を開始します。
- 「Hello」を送信してアシスタントをトリガーします!
公開URL(Webhookのみ)
Google Chat WebhookにはPublic HTTPS Endpoint(公開HTTPSエンドポイント)が必要です。セキュリティのために、/googlechatパスのみをインターネットに公開してください。OpenClawダッシュボードやその他の機密エンドポイントはプライベートネットワークに保持してください。
オプションA: Tailscale Funnel(推奨)
プライベートダッシュボードにはTailscale Serveを使用し、公開Webhookパスにはfunnelを使用します。これにより/はプライベートのままで、/googlechatのみが公開されます。
-
Gatewayがバインドされているアドレスを確認します:
ss -tlnp | grep 18789IPアドレス(例: 127.0.0.1、0.0.0.0、またはTailscale IP 100.x.x.xなど)をメモします。
-
ダッシュボードをtailnetのみに公開します(ポート8443):
# 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 -
Webhookパスのみを公開します:
# 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 -
Funnelアクセスのためにノードを認証します: プロンプトが表示されたら、出力に表示される認証URLにアクセスして、このtailnetポリシーのノードのFunnelを有効にします。
-
設定を確認します:
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: Reverse Proxy(リバースプロキシ)(Caddy)
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)
動作方法
- Google ChatはGatewayに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アクセスはデフォルトでpairingです。未知の送信者はペアリングコードを受信します。承認するには:
- 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", // オプション。メンション検出を支援
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
}
}
}
注:
- サービスアカウント認証情報はserviceAccount(JSON文字列)でインライン渡すこともできます。
- webhookPathが設定されていない場合、デフォルトのWebhookパスは/googlechatです。
- リアクションはreactions toolとchannels action経由で利用でき、actions.reactionsが有効な場合に使用できます。
- typingIndicatorはnone、message(デフォルト)、reaction(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セクションがありません。確認するには:
openclaw config get channels.googlechat「Config path not found」と返された場合、設定を追加してください(設定のハイライトを参照)。
-
プラグインが有効になっていない: プラグインステータスを確認します:
openclaw plugins list | grep googlechat「disabled」と表示される場合は、設定にplugins.entries.googlechat.enabled: trueを追加してください。
-
Gatewayが再起動されていない: 設定を追加した後、Gatewayを再起動します:
openclaw gateway restart
チャンネルが実行中であることを確認します:
openclaw channels status
# 表示されるはずです: Google Chat default: enabled, configured, ...
その他の問題
- 認証エラーまたは欠落しているaudience設定についてはopenclaw channels status --probeを確認してください。
- メッセージが届かない場合は、ChatアプリのWebhook URL + イベントサブスクリプションを確認してください。
- メンションゲーティングが返信をブロックする場合は、botUserをアプリのユーザーリソース名に設定し、requireMentionを確認してください。
- テストメッセージを送信しながらopenclaw logs --followを使用して、リクエストがGatewayに到達しているか確認してください。
関連ドキュメント: