Google Chat (Chat API)
Status: siap untuk DM + space melalui webhook Google Chat API (hanya HTTP).Penyiapan cepat (pemula)
- Buat project Google Cloud dan aktifkan Google Chat API.
- Buka: Google Chat API Credentials
- Aktifkan API jika belum diaktifkan.
- Buat Service Account:
- Tekan Create Credentials > Service Account.
- Beri nama sesuai keinginan Anda (misalnya,
openclaw-chat). - Biarkan izin kosong (tekan Continue).
- Biarkan principal dengan akses tetap kosong (tekan Done).
- Buat dan unduh JSON Key:
- Dalam daftar service account, klik yang baru saja Anda buat.
- Buka tab Keys.
- Klik Add Key > Create new key.
- Pilih JSON dan tekan Create.
- Simpan file JSON yang diunduh di host gateway Anda (misalnya,
~/.openclaw/googlechat-service-account.json). - Buat aplikasi Google Chat di Google Cloud Console Chat Configuration:
- Isi Application info:
- App name: (misalnya
OpenClaw) - Avatar URL: (misalnya
https://openclaw.ai/logo.png) - Description: (misalnya
Personal AI Assistant)
- App name: (misalnya
- Aktifkan Interactive features.
- Di bawah Functionality, centang Join spaces and group conversations.
- Di bawah Connection settings, pilih HTTP endpoint URL.
- Di bawah Triggers, pilih Use a common HTTP endpoint URL for all triggers dan atur ke URL publik gateway Anda diikuti dengan
/googlechat.- Tip: Jalankan
openclaw statusuntuk menemukan URL publik gateway Anda.
- Tip: Jalankan
- Di bawah Visibility, centang Make this Chat app available to specific people and groups in <Your Domain>.
- Masukkan alamat email Anda (misalnya
user@example.com) ke dalam kotak teks. - Klik Save di bagian bawah.
- Isi Application info:
- Aktifkan status aplikasi:
- Setelah menyimpan, muat ulang halaman.
- Cari bagian App status (biasanya di dekat atas atau bawah setelah menyimpan).
- Ubah status menjadi Live - available to users.
- Klik Save lagi.
- Konfigurasikan OpenClaw dengan path service account + audience webhook:
- Env:
GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json - Atau config:
channels.googlechat.serviceAccountFile: "/path/to/service-account.json".
- Env:
- Atur jenis + nilai audience webhook (sesuai dengan config aplikasi Chat Anda).
- Mulai gateway. Google Chat akan mengirim POST ke path webhook Anda.
Tambahkan ke Google Chat
Setelah gateway berjalan dan email Anda ditambahkan ke daftar visibilitas:- Buka Google Chat.
- Klik ikon + (plus) di samping Direct Messages.
- Di bilah pencarian (tempat Anda biasanya menambahkan orang), ketik App name yang Anda konfigurasi di Google Cloud Console.
- Catatan: Bot tidak akan muncul dalam daftar penelusuran “Marketplace” karena ini adalah aplikasi privat. Anda harus mencarinya berdasarkan nama.
- Pilih bot Anda dari hasil pencarian.
- Klik Add atau Chat untuk memulai percakapan 1:1.
- Kirim “Hello” untuk memicu asisten!
URL publik (khusus webhook)
Webhook Google Chat memerlukan endpoint HTTPS publik. Demi keamanan, hanya ekspos path/googlechat ke internet. Simpan dashboard OpenClaw dan endpoint sensitif lainnya di jaringan privat Anda.
Opsi A: Tailscale Funnel (Direkomendasikan)
Gunakan Tailscale Serve untuk dashboard privat dan Funnel untuk path webhook publik. Ini menjaga/ tetap privat sambil hanya mengekspos /googlechat.
-
Periksa alamat tempat gateway Anda terikat:
Catat alamat IP (misalnya
127.0.0.1,0.0.0.0, atau IP Tailscale Anda seperti100.x.x.x). -
Ekspos dashboard hanya ke tailnet (port 8443):
-
Ekspos hanya path webhook secara publik:
- Otorisasi node untuk akses Funnel: Jika diminta, kunjungi URL otorisasi yang ditampilkan dalam output untuk mengaktifkan Funnel bagi node ini dalam kebijakan tailnet Anda.
-
Verifikasi konfigurasi:
https://<node-name>.<tailnet>.ts.net/googlechat
Dashboard privat Anda tetap hanya untuk tailnet:
https://<node-name>.<tailnet>.ts.net:8443/
Gunakan URL publik (tanpa :8443) dalam config aplikasi Google Chat.
Catatan: Konfigurasi ini tetap ada setelah reboot. Untuk menghapusnya nanti, jalankantailscale funnel resetdantailscale serve reset.
Opsi B: Reverse Proxy (Caddy)
Jika Anda menggunakan reverse proxy seperti Caddy, proksikan hanya path spesifik:your-domain.com/ akan diabaikan atau mengembalikan 404, sedangkan your-domain.com/googlechat akan dirutekan dengan aman ke OpenClaw.
Opsi C: Cloudflare Tunnel
Konfigurasikan aturan ingress tunnel Anda agar hanya merutekan path webhook:- Path:
/googlechat->http://localhost:18789/googlechat - Default Rule: HTTP 404 (Not Found)
Cara kerjanya
- Google Chat mengirim webhook POST ke gateway. Setiap permintaan menyertakan header
Authorization: Bearer <token>.- OpenClaw memverifikasi autentikasi bearer sebelum membaca/mem-parse body webhook penuh saat header tersebut ada.
- Permintaan Google Workspace Add-on yang membawa
authorizationEventObject.systemIdTokendi dalam body didukung melalui anggaran body pra-autentikasi yang lebih ketat.
- OpenClaw memverifikasi token terhadap
audienceType+audienceyang dikonfigurasi:audienceType: "app-url"→ audience adalah URL webhook HTTPS Anda.audienceType: "project-number"→ audience adalah nomor project Cloud.
- Pesan dirutekan berdasarkan space:
- DM menggunakan kunci sesi
agent:<agentId>:googlechat:direct:<spaceId>. - Space menggunakan kunci sesi
agent:<agentId>:googlechat:group:<spaceId>.
- DM menggunakan kunci sesi
- Akses DM menggunakan pairing secara default. Pengirim yang tidak dikenal menerima kode pairing; setujui dengan:
openclaw pairing approve googlechat <code>
- Space grup memerlukan @-mention secara default. Gunakan
botUserjika deteksi mention memerlukan nama pengguna aplikasi.
Target
Gunakan identifier ini untuk pengiriman dan allowlist:- Direct messages:
users/<userId>(direkomendasikan). - Email mentah
name@example.comdapat berubah dan hanya digunakan untuk pencocokan allowlist direct saatchannels.googlechat.dangerouslyAllowNameMatching: true. - Deprecated:
users/<email>diperlakukan sebagai user id, bukan allowlist email. - Spaces:
spaces/<spaceId>.
Sorotan config
- Kredensial service account juga dapat diberikan secara inline dengan
serviceAccount(string JSON). serviceAccountRefjuga didukung (SecretRef env/file), termasuk ref per akun di bawahchannels.googlechat.accounts.<id>.serviceAccountRef.- Path webhook default adalah
/googlechatjikawebhookPathtidak diatur. dangerouslyAllowNameMatchingmengaktifkan kembali pencocokan principal email yang dapat berubah untuk allowlist (mode kompatibilitas break-glass).- Reactions tersedia melalui alat
reactionsdanchannels actionsaatactions.reactionsdiaktifkan. - Message actions mengekspos
senduntuk teks danupload-fileuntuk pengiriman lampiran eksplisit.upload-filemenerimamedia/filePath/pathditambahmessage,filename, dan penargetan thread opsional. typingIndicatormendukungnone,message(default), danreaction(reaction memerlukan OAuth pengguna).- Lampiran diunduh melalui Chat API dan disimpan di pipeline media (ukuran dibatasi oleh
mediaMaxMb).
Pemecahan masalah
405 Method Not Allowed
Jika Google Cloud Logs Explorer menampilkan error seperti:-
Channel tidak dikonfigurasi: Bagian
channels.googlechattidak ada dari config Anda. Verifikasi dengan:Jika mengembalikan “Config path not found”, tambahkan konfigurasi tersebut (lihat Sorotan config). -
Plugin tidak diaktifkan: Periksa status plugin:
Jika menampilkan “disabled”, tambahkan
plugins.entries.googlechat.enabled: trueke config Anda. -
Gateway belum dimulai ulang: Setelah menambahkan config, mulai ulang gateway:
Masalah lain
- Periksa
openclaw channels status --probeuntuk error autentikasi atau config audience yang hilang. - Jika tidak ada pesan yang masuk, konfirmasikan URL webhook + langganan peristiwa aplikasi Chat.
- Jika pembatasan mention memblokir balasan, atur
botUserke nama resource pengguna aplikasi dan verifikasirequireMention. - Gunakan
openclaw logs --followsaat mengirim pesan uji untuk melihat apakah permintaan mencapai gateway.
Terkait
- Ikhtisar Channels — semua channel yang didukung
- Pairing — autentikasi DM dan alur pairing
- Groups — perilaku obrolan grup dan pembatasan mention
- Channel Routing — perutean sesi untuk pesan
- Keamanan — model akses dan penguatan