Mainstream messaging
Google Chat
Durum: Google Chat API Webhook'ları (yalnızca HTTP) üzerinden DM'ler + alanlar için indirilebilir Plugin.
Kurulum
Kanalı yapılandırmadan önce Google Chat'i kurun:
openclaw plugins install @openclaw/googlechat
Yerel checkout (bir git deposundan çalıştırırken):
openclaw plugins install ./path/to/local/googlechat-plugin
Hızlı kurulum (başlangıç)
- Bir Google Cloud projesi oluşturun ve Google Chat API'yi etkinleştirin.
- Şuraya gidin: Google Chat API Kimlik Bilgileri
- API zaten etkin değilse etkinleştirin.
- Bir Service Account oluşturun:
- Create Credentials > Service Account seçeneğine basın.
- İstediğiniz bir ad verin (ör.
openclaw-chat). - İzinleri boş bırakın (Continue'a basın).
- Erişimi olan principals alanını boş bırakın (Done'a basın).
- JSON Anahtarı oluşturun ve indirin:
- Service account listesinden az önce oluşturduğunuza tıklayın.
- Keys sekmesine gidin.
- Add Key > Create new key seçeneğine tıklayın.
- JSON'ı seçin ve Create'e basın.
- İndirilen JSON dosyasını Gateway host'unuzda saklayın (ör.
~/.openclaw/googlechat-service-account.json). - Google Cloud Console Chat Configuration içinde bir Google Chat uygulaması oluşturun:
- Application info alanını doldurun:
- App name: (ör.
OpenClaw) - Avatar URL: (ör.
https://openclaw.ai/logo.png) - Description: (ör.
Personal AI Assistant)
- App name: (ör.
- Interactive features'ı etkinleştirin.
- Functionality altında Join spaces and group conversations'ı işaretleyin.
- Connection settings altında HTTP endpoint URL'yi seçin.
- Triggers altında Use a common HTTP endpoint URL for all triggers'ı seçin ve Gateway'inizin genel URL'sinin sonuna
/googlechatekleyerek ayarlayın.- İpucu: Gateway'inizin genel URL'sini bulmak için
openclaw statusçalıştırın.
- İpucu: Gateway'inizin genel URL'sini bulmak için
- Visibility altında Make this Chat app available to specific people and groups in
<Your Domain>seçeneğini işaretleyin. - Metin kutusuna e-posta adresinizi girin (ör.
[email protected]). - Alttaki Save'e tıklayın.
- Application info alanını doldurun:
- Uygulama durumunu etkinleştirin:
- Kaydettikten sonra sayfayı yenileyin.
- App status bölümünü bulun (genellikle kaydettikten sonra üstte veya altta olur).
- Durumu Live - available to users olarak değiştirin.
- Tekrar Save'e tıklayın.
- OpenClaw'u service account yolu + Webhook audience ile yapılandırın:
- Env:
GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json - Veya config:
channels.googlechat.serviceAccountFile: "/path/to/service-account.json".
- Env:
- Webhook audience türünü + değerini ayarlayın (Chat uygulaması yapılandırmanızla eşleşir).
- Gateway'i başlatın. Google Chat, Webhook yolunuza POST gönderir.
Google Chat'e ekleme
Gateway çalışıyorken ve e-postanız görünürlük listesine ekliyken:
- Google Chat adresine gidin.
- Doğrudan Mesajlar yanındaki + (artı) simgesine tıklayın.
- Arama çubuğuna (normalde kişi eklediğiniz yer), Google Cloud Console'da yapılandırdığınız App name değerini yazın.
- Not: Bot, özel bir uygulama olduğu için "Marketplace" göz atma listesinde görünmez. Adıyla aramanız gerekir.
- Sonuçlardan botunuzu seçin.
- 1:1 konuşma başlatmak için Add veya Chat'e tıklayın.
- Asistanı tetiklemek için "Hello" gönderin!
Genel URL (yalnızca Webhook)
Google Chat Webhook'ları genel bir HTTPS endpoint gerektirir. Güvenlik için internete yalnızca /googlechat yolunu açın. OpenClaw dashboard'unu ve diğer hassas endpoint'leri özel ağınızda tutun.
Seçenek A: Tailscale Funnel (Önerilir)
Özel dashboard için Tailscale Serve, genel Webhook yolu için Funnel kullanın. Bu, yalnızca /googlechat'i açarken / yolunu özel tutar.
-
Gateway'inizin hangi adrese bağlı olduğunu kontrol edin:
ss -tlnp | grep 18789IP adresini not edin (ör.
127.0.0.1,0.0.0.0veya100.x.x.xgibi Tailscale IP'niz). -
Dashboard'u yalnızca tailnet'e açın (8443 portu):
# 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 -
Yalnızca Webhook yolunu genel olarak açın:
# 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 -
Node'u Funnel erişimi için yetkilendirin: İstenirse, tailnet ilkenizde bu Node için Funnel'ı etkinleştirmek üzere çıktıda gösterilen yetkilendirme URL'sini ziyaret edin.
-
Yapılandırmayı doğrulayın:
tailscale serve status tailscale funnel status
Genel Webhook URL'niz şu olur:
https://<node-name>.<tailnet>.ts.net/googlechat
Özel dashboard'unuz yalnızca tailnet'te kalır:
https://<node-name>.<tailnet>.ts.net:8443/
Google Chat uygulama yapılandırmasında genel URL'yi (:8443 olmadan) kullanın.
Not: Bu yapılandırma yeniden başlatmalar arasında kalıcıdır. Daha sonra kaldırmak için
tailscale funnel resetvetailscale serve resetçalıştırın.
Seçenek B: Ters Proxy (Caddy)
Caddy gibi bir ters proxy kullanıyorsanız yalnızca belirli yolu proxy'leyin:
your-domain.com {
reverse_proxy /googlechat* localhost:18789
}
Bu yapılandırmayla your-domain.com/ adresine yapılan herhangi bir istek yok sayılır veya 404 olarak döndürülür; your-domain.com/googlechat ise güvenli şekilde OpenClaw'a yönlendirilir.
Seçenek C: Cloudflare Tunnel
Tunnel ingress kurallarınızı yalnızca Webhook yolunu yönlendirecek şekilde yapılandırın:
- Path:
/googlechat->http://localhost:18789/googlechat - Default Rule: HTTP 404 (Not Found)
Nasıl çalışır
- Google Chat, Gateway'e Webhook POST'ları gönderir. Her istek bir
Authorization: Bearer <token>header'ı içerir.- OpenClaw, header mevcut olduğunda tam Webhook gövdelerini okumadan/ayrıştırmadan önce bearer auth doğrulaması yapar.
- Gövdede
authorizationEventObject.systemIdTokentaşıyan Google Workspace Add-on istekleri, daha katı bir ön kimlik doğrulama gövde bütçesiyle desteklenir.
- OpenClaw, token'ı yapılandırılan
audienceType+audiencedeğerlerine göre doğrular:audienceType: "app-url"→ audience, HTTPS Webhook URL'nizdir.audienceType: "project-number"→ audience, Cloud proje numarasıdır.
- Mesajlar alana göre yönlendirilir:
- DM'ler
agent:<agentId>:googlechat:direct:<spaceId>session key'ini kullanır. - Alanlar
agent:<agentId>:googlechat:group:<spaceId>session key'ini kullanır.
- DM'ler
- DM erişimi varsayılan olarak pairing'dir. Bilinmeyen gönderenler bir pairing code alır; şu komutla onaylayın:
openclaw pairing approve googlechat <code>
- Grup alanları varsayılan olarak @-mention gerektirir. Mention algılaması uygulamanın kullanıcı adına ihtiyaç duyuyorsa
botUserkullanın.
Hedefler
Teslimat ve allowlist'ler için şu tanımlayıcıları kullanın:
- Doğrudan mesajlar:
users/<userId>(önerilir). - Ham e-posta
[email protected]değiştirilebilir ve yalnızcachannels.googlechat.dangerouslyAllowNameMatching: trueolduğunda doğrudan allowlist eşleştirmesi için kullanılır. - Kullanımdan kaldırıldı:
users/<email>bir e-posta allowlist'i değil, user id olarak ele alınır. - Alanlar:
spaces/<spaceId>.
Config öne çıkanlar
{
channels: {
googlechat: {
enabled: true,
serviceAccountFile: "/path/to/service-account.json",
// or serviceAccountRef: { source: "file", provider: "filemain", id: "/channels/googlechat/serviceAccount" }
audienceType: "app-url",
audience: "https://gateway.example.com/googlechat",
webhookPath: "/googlechat",
botUser: "users/1234567890", // optional; helps mention detection
dm: {
policy: "pairing",
allowFrom: ["users/1234567890"],
},
groupPolicy: "allowlist",
groups: {
"spaces/AAAA": {
enabled: true,
requireMention: true,
users: ["users/1234567890"],
systemPrompt: "Short answers only.",
},
},
actions: { reactions: true },
typingIndicator: "message",
mediaMaxMb: 20,
},
},
}
Notlar:
- Service account kimlik bilgileri
serviceAccount(JSON string) ile inline olarak da geçirilebilir. serviceAccountRefde desteklenir (env/file SecretRef); bunachannels.googlechat.accounts.<id>.serviceAccountRefaltındaki hesap başına ref'ler dahildir.webhookPathayarlanmadıysa varsayılan Webhook yolu/googlechat'tir.dangerouslyAllowNameMatching, allowlist'ler için değiştirilebilir e-posta principal eşleştirmesini yeniden etkinleştirir (break-glass uyumluluk modu).- Reactions,
actions.reactionsetkinleştirildiğindereactionstool'u vechannels actionüzerinden kullanılabilir. - Message actions, metin için
sendve açık attachment gönderimleri içinupload-filesunar.upload-file,media/filePath/pathile isteğe bağlımessage,filenameve thread hedeflemeyi kabul eder. typingIndicator,none,message(varsayılan) vereactiondeğerlerini destekler (reactionkullanıcı OAuth'u gerektirir).- Attachment'lar Chat API üzerinden indirilir ve media pipeline'da saklanır (boyut
mediaMaxMbile sınırlıdır).
Secrets başvuru ayrıntıları: Secrets Management.
Sorun giderme
405 Method Not Allowed
Google Cloud Logs Explorer şu tür hatalar gösteriyorsa:
status code: 405, reason phrase: HTTP error response: HTTP/1.1 405 Method Not Allowed
Bu, Webhook handler'ının kayıtlı olmadığı anlamına gelir. Yaygın nedenler:
-
Kanal yapılandırılmamış: Config'inizde
channels.googlechatbölümü eksik. Şununla doğrulayın:openclaw config get channels.googlechat"Config path not found" döndürürse yapılandırmayı ekleyin (bkz. Config öne çıkanlar).
-
Plugin etkin değil: Plugin durumunu kontrol edin:
openclaw plugins list | grep googlechat"disabled" gösteriyorsa config'inize
plugins.entries.googlechat.enabled: trueekleyin. -
Gateway yeniden başlatılmamış: Config ekledikten sonra Gateway'i yeniden başlatın:
openclaw gateway restart
Kanalın çalıştığını doğrulayın:
openclaw channels status
# Should show: Google Chat default: enabled, configured, ...
Diğer sorunlar
- Auth hataları veya eksik audience config'i için
openclaw channels status --probekontrol edin. - Hiç mesaj gelmiyorsa Chat uygulamasının Webhook URL'sini + event subscriptions ayarlarını doğrulayın.
- Mention gating yanıtları engelliyorsa
botUserdeğerini uygulamanın kullanıcı resource name'i olarak ayarlayın verequireMentiondeğerini doğrulayın. - İsteklerin Gateway'e ulaşıp ulaşmadığını görmek için test mesajı gönderirken
openclaw logs --followkullanın.
İlgili dokümanlar:
İlgili
- Kanallara Genel Bakış — desteklenen tüm kanallar
- Pairing — DM kimlik doğrulaması ve pairing akışı
- Gruplar — grup sohbeti davranışı ve mention gating
- Channel Routing — mesajlar için session routing
- Güvenlik — erişim modeli ve hardening