OpenClawSkills
GitHub
チャンネル • 5分で読める

Google Chat(Google チャット)

Google Chat チャンネル:対応状況、機能、設定。

ステータス:DMとスペースで使用可能。Google Chat API webhooks経由で統合(HTTPのみ)。

Tutorial.step

クイックセットアップ

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リクエストを送信します。

Tutorial.step

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」を送信してトリガーをテストします。

Tutorial.step

公開URL(Webhookのみ)

Google Chat webhooksには公開アクセス可能なHTTPSエンドポイントが必要です。セキュリティのため、/googlechatパスのみを公開インターネットに公開します。OpenClawダッシュボードとその他の機密エンドポイントはプライベートネットワークに残します。

#

Tutorial.step

オプション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

注意:この設定は再起動後も保持されます。削除するには、<code>tailscale funnel reset</code>と<code>tailscale serve reset</code>を実行します。

#

Tutorial.step

オプションB:リバースプロキシ(Caddy)

特定のパスのみをプロキシします:

Caddy
your-domain.com {
    reverse_proxy /googlechat* localhost:18789
}

これによりyour-domain.com/は無視または404を返し、your-domain.com/googlechatは安全にOpenClawに転送されます。

#

Tutorial.step

オプションC:Cloudflare Tunnel

tunnelのingressルールをwebhookパスのみをルーティングするように設定します:

- Path:/googlechat -> http://localhost:18789/googlechat

- Default Rule:HTTP 404(Not Found)

Tutorial.step

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:'':googlechat:dm:''''を使用します。

- Spacesはセッションキー''agent:'':googlechat:group:''''を使用します。

4. DMはデフォルトでペアリング:不明な送信者はペアリングコードを受け取ります;承認:

- ''openclaw pairing approve googlechat ''''

5. グループスペースはデフォルトで@mentionが必要です。メンション検出にアプリのユーザー名が必要な場合、botUserを設定します。

Tutorial.step

配信ターゲット

配信とallowlist用の識別子:

- DM:''users/''''または''users/''''(メールサポート)

- Spaces:''spaces/''''

Tutorial.step

設定のハイライト

Json5
{
  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で制限)。

Tutorial.step

トラブルシューティング

#

Tutorial.step

405 Method Not Allowed

Google Cloud Logs Explorerに次のようなエラーが表示される場合:

Terminal
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

`

#

Tutorial.step

その他の問題

- openclaw channels status --probeを実行して、認証エラーまたはaudience設定の欠落を確認します。

- メッセージが到着しない場合、Chatアプリのwebhook URLとイベントサブスクリプションを確認します。

- メンションゲートが返信をブロックする場合、botUserをアプリのユーザーリソース名に設定し、requireMentionを確認します。

- テストメッセージを送信するときにopenclaw logs --followを実行し、リクエストがgatewayに到達していることを確認します。

関連ドキュメント:

- ''Gateway configuration''

- ''Security''

- ''Reactions''