Mainstream messaging
Google Chat
Google Chat, resmi @openclaw/googlechat plugin'i olarak çalışır: Google Chat API Webhook'ları üzerinden DM'ler ve alanlar (yalnızca HTTP uç noktası, Pub/Sub yok).
Kurulum
openclaw plugins install @openclaw/googlechatYerel çalışma kopyası (bir git deposundan çalıştırırken):
openclaw plugins install ./path/to/local/googlechat-pluginHızlı kurulum (başlangıç)
- Bir Google Cloud projesi oluşturun ve Google Chat API'yi etkinleştirin.
- Şuraya gidin: Google Chat API Kimlik Bilgileri
- Henüz etkin değilse API'yi etkinleştirin.
- Bir Service Account oluşturun:
- Create Credentials > Service Account düğmelerine basın.
- İstediğiniz adı verin (ör.
openclaw-chat). - İzinleri ve sorumluları boş bırakın (Continue, ardından Done).
- JSON anahtarını oluşturup indirin:
- Yeni hizmet hesabına tıklayın > Keys sekmesi > Add Key > Create new key > JSON > Create.
- İndirilen JSON dosyasını Gateway ana makinenizde saklayın (ör.
~/.openclaw/googlechat-service-account.json). - Google Cloud Console Chat Yapılandırması bölümünde bir Google Chat uygulaması oluşturun:
- Application info alanını doldurun (uygulama adı, avatar URL'si, açıklama).
- Interactive features seçeneğini etkinleştirin.
- Functionality altında Join spaces and group conversations seçeneğini işaretleyin.
- Connection settings altında HTTP endpoint URL seçeneğini belirleyin.
- Triggers altında Use a common HTTP endpoint URL for all triggers seçeneğini belirleyin ve değeri, sonuna
/googlechateklenmiş herkese açık Gateway URL'niz olarak ayarlayın (bkz. Herkese açık URL). - Visibility altında Make this Chat app available to specific people and groups in
<Your Domain>seçeneğini işaretleyin ve e-posta adresinizi girin. - Save düğmesine tıklayın.
- Uygulama durumunu etkinleştirin: sayfayı yenileyin, App status alanını bulun, Live - available to users olarak ayarlayın ve tekrar Save düğmesine tıklayın.
- OpenClaw'ı hizmet hesabı ve Webhook hedef kitlesiyle yapılandırın (Chat uygulaması yapılandırmasıyla eşleşmelidir):
- Ortam değişkeni:
GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json(yalnızca varsayılan hesap) veya - Yapılandırma: bkz. Yapılandırmada öne çıkanlar.
openclaw channels add --channel googlechatayrıca--audience-type,--audience,--webhook-pathve--webhook-urlseçeneklerini kabul eder.
- Ortam değişkeni:
- Gateway'i başlatın. Google Chat, Webhook yolunuza POST isteği gönderir (varsayılan
/googlechat).
Google Chat'e ekleme
Gateway çalışmaya başladıktan ve e-posta adresiniz görünürlük listesine eklendikten sonra:
- Google Chat sayfasına gidin.
- Direct Messages yanındaki + (artı) simgesine tıklayın.
- Google Cloud Console'da yapılandırdığınız App name değerini arayın.
- Bot, özel bir uygulama olduğundan Marketplace göz atma listesinde görünmez; adıyla arayın.
- Botu seçin, Add veya Chat düğmesine tıklayın ve bir mesaj gönderin.
Herkese açık URL (yalnızca Webhook)
Google Chat Webhook'ları, herkese açık bir HTTPS uç noktası gerektirir. Güvenlik için internete yalnızca /googlechat yolunu açın; OpenClaw panosunu ve diğer uç noktaları gizli tutun.
Seçenek A: Tailscale Funnel (Önerilen)
Gizli pano için Tailscale Serve'ü, herkese açık Webhook yolu için Funnel'ı kullanın.
-
Gateway'in hangi adrese bağlandığını kontrol edin:
bash ss -tlnp | grep 18789IP'yi not edin (ör.
127.0.0.1,0.0.0.0veya bir Tailscale100.x.x.xadresi). -
Panoyu yalnızca tailnet'e açın (8443 numaralı bağlantı noktası):
bash # localhost'a bağlıysa (127.0.0.1 veya 0.0.0.0):tailscale serve --bg --https 8443 http://127.0.0.1:18789 # Yalnızca bir Tailscale IP'sine bağlıysa:tailscale serve --bg --https 8443 http://100.x.x.x:18789 -
Yalnızca Webhook yolunu herkese açın:
bash # localhost'a bağlıysa (127.0.0.1 veya 0.0.0.0):tailscale funnel --bg --set-path /googlechat http://127.0.0.1:18789/googlechat # Yalnızca bir Tailscale IP'sine bağlıysa:tailscale funnel --bg --set-path /googlechat http://100.x.x.x:18789/googlechat -
İstenirse bu Node için Funnel'ı etkinleştirmek üzere çıktıda gösterilen yetkilendirme URL'sini ziyaret edin.
-
Doğrulayın:
bash tailscale serve statustailscale funnel status
Herkese açık Webhook URL'niz https://<node-name>.<tailnet>.ts.net/googlechat olur; pano ise https://<node-name>.<tailnet>.ts.net:8443/ adresinde yalnızca tailnet erişimine açık kalır. Google Chat uygulaması yapılandırmasında herkese açık URL'yi (:8443 olmadan) kullanın.
Not: Bu yapılandırma yeniden başlatmalar sonrasında korunur. Daha sonra
tailscale funnel resetvetailscale serve resetkomutlarıyla kaldırabilirsiniz.
Seçenek B: Ters proxy (Caddy)
Yalnızca Webhook yolunu proxy üzerinden yönlendirin:
your-domain.com { reverse_proxy /googlechat* localhost:18789}your-domain.com/ adresine yapılan istekler yok sayılır veya 404 döndürür; your-domain.com/googlechat ise OpenClaw'a yönlendirilir.
Seçenek C: Cloudflare Tunnel
Tünel giriş kurallarını 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 Webhook yoluna JSON POST eder (yalnızca POST, JSON içerik türü zorunlu, IP başına hız sınırlamalı).
- OpenClaw, yönlendirmeden önce her isteğin kimliğini doğrular:
- Chat uygulaması olayları
Authorization: Bearer <token>taşır; tam gövde ayrıştırılmadan önce belirteç doğrulanır. - Google Workspace eklenti olayları, belirteci gövdede (
authorizationEventObject.systemIdToken) taşır ve doğrulamadan önce daha sıkı bir ön kimlik doğrulama bütçesi (16 KB, 3 sn.) altında okunur.
- Chat uygulaması olayları
- Belirteç,
audienceType+audiencedeğerlerine göre denetlenir:audienceType: "app-url"→ hedef kitle, HTTPS Webhook URL'nizdir.audienceType: "project-number"→ hedef kitle, Cloud proje numarasıdır.app-urlaltındaki eklenti belirteçleri ayrıcaappPrincipaldeğerinin uygulamanın sayısal OAuth 2.0 istemci kimliğine (21 basamaklı, e-posta değil) ayarlanmasını gerektirir; aksi takdirde doğrulama, günlüğe kaydedilen bir uyarıyla başarısız olur.
- Mesajlar alana göre yönlendirilir:
- Alanlar, alan başına
agent:<agentId>:googlechat:group:<spaceId>oturumları alır; yanıtlar mesaj ileti dizisine gider. - DM'ler varsayılan olarak ajanın ana oturumunda birleştirilir; eş düzey başına DM oturumları için
session.dmScopeayarını yapın (bkz. Oturum).
- Alanlar, alan başına
- DM erişimi varsayılan olarak eşleştirme kullanır. Bilinmeyen gönderenlere bir eşleştirme kodu gönderilir; şu komutla onaylayın:
openclaw pairing approve googlechat <code>
- Grup alanları varsayılan olarak @bahsetme gerektirir. Bahsetmeler, uygulamayı hedefleyen Chat
USER_MENTIONek açıklamalarından algılanır; algılama için uygulamanın kullanıcı kaynağı adı gerekiyorsabotUserdeğerini ayarlayın (ör.users/1234567890). - Google Chat'ten bir yürütme veya Plugin onayı başlatıldığında ve kararlı bir
users/<id>onaylayıcısı yapılandırıldığında OpenClaw, kaynak alana veya ileti dizisine yerel bir onay kartı (cardsV2) gönderir. Kart düğmeleri opak geri çağırma belirteçleri taşır; manuel/approve <id> <decision>istemi yalnızca yerel teslimat kullanılamadığında görünür.
Hedefler
Teslimat ve izin verilenler listeleri için şu tanımlayıcıları kullanın:
- Doğrudan mesajlar:
users/<userId>(önerilen). - Alanlar:
spaces/<spaceId>. - Ham
name@example.come-posta adresi değiştirilebilir ve yalnızcachannels.googlechat.dangerouslyAllowNameMatching: trueolduğunda izin verilenler listesi eşleştirmesi için kullanılır. - Kullanımdan kaldırıldı:
users/<email>, e-posta izin verilenler listesi girdisi olarak değil, kullanıcı kimliği olarak değerlendirilir. googlechat:,google-chat:vegchat:ön ekleri kabul edilir ve kaldırılır.
Yapılandırmada öne çıkanlar
{ channels: { googlechat: { enabled: true, serviceAccountFile: "/path/to/service-account.json", // veya serviceAccountRef: { source: "file", provider: "filemain", id: "/channels/googlechat/serviceAccount" } audienceType: "app-url", audience: "https://gateway.example.com/googlechat", appPrincipal: "123456789012345678901", // yalnızca eklenti doğrulaması; sayısal OAuth istemci kimliği webhookPath: "/googlechat", botUser: "users/1234567890", // isteğe bağlı; bahsetme algılamasına yardımcı olur allowBots: false, dm: { policy: "pairing", allowFrom: ["users/1234567890"], }, groupPolicy: "allowlist", groups: { "spaces/AAAA": { enabled: true, requireMention: true, users: ["users/1234567890"], systemPrompt: "Yalnızca kısa yanıtlar.", }, }, typingIndicator: "message", mediaMaxMb: 20, }, },}Notlar:
- Hizmet hesabı kimlik bilgileri:
serviceAccountFile(yol),serviceAccount(satır içi JSON dizesi veya nesnesi) ya daserviceAccountRef(ortam değişkeni/dosya SecretRef'i).GOOGLE_CHAT_SERVICE_ACCOUNT(satır içi JSON) veGOOGLE_CHAT_SERVICE_ACCOUNT_FILE(yol) ortam değişkenleri yalnızca varsayılan hesaba uygulanır. Çok hesaplı kurulumlar, hesap başınaserviceAccountRefdâhil aynı anahtarlarlachannels.googlechat.accounts.<id>kullanır. webhookPathayarlanmadığında varsayılan Webhook yolu/googlechatolur; bunun yerine yoluwebhookUrlsağlayabilir.- Grup anahtarları kararlı alan kimlikleri (
spaces/<spaceId>) olmalıdır. Görünen ad anahtarları kullanımdan kaldırılmıştır ve bu durum günlüğe kaydedilir. dangerouslyAllowNameMatching, izin verilenler listeleri için değiştirilebilir e-posta sorumlusu eşleştirmesini yeniden etkinleştirir (acil durum uyumluluk modu); doctor, e-posta girdileri hakkında uyarır.- Google Chat tepki eylemleri kullanıma sunulmaz. Plugin, hizmet hesabı kimlik doğrulamasını kullanırken Google Chat tepki uç noktaları kullanıcı kimlik doğrulaması gerektirir. Mevcut
actions.reactionsyapılandırması uyumluluk için kabul edilir ancak etkisi yoktur. - Yerel onay kartları, tepki olaylarını değil Google Chat
cardsV2düğme tıklamalarını kullanır. Onaylayıcılardm.allowFromveyadefaultTodeğerinden gelir ve kararlı, sayısalusers/<id>değerleri olmalıdır. - Mesaj eylemleri yalnızca metin
sendişlemini sunar. Google Chat ek yükleme işlemi kullanıcı kimlik doğrulaması gerektirirken bu Plugin hizmet hesabı kimlik doğrulamasını kullandığından, giden dosya yükleme kullanıma sunulmaz. typingIndicator:message(varsayılan), bir_<Bot> yazıyor..._yer tutucusu gönderir ve bunu ilk yanıtla değiştirir;nonebunu devre dışı bırakır;reactionkullanıcı OAuth'ı gerektirir ve şu anda hizmet hesabı kimlik doğrulaması altında günlüğe kaydedilen bir hataylamessageseçeneğine geri döner.- Gelen ekler (mesaj başına ilk ek), Chat API aracılığıyla medya işlem hattına indirilir ve
mediaMaxMb(varsayılan 20) ile sınırlandırılır. - Bot tarafından yazılan mesajlar varsayılan olarak yok sayılır.
allowBots: trueolduğunda, kabul edilen bot mesajları paylaşılan bot döngüsü korumasını kullanır:channels.defaults.botLoopProtectiondeğerini yapılandırın, ardındanchannels.googlechat.botLoopProtectionveyachannels.googlechat.groups.<space>.botLoopProtectionile geçersiz kılın.
Gizli değer referansı ayrıntıları: Gizli Değer Yönetimi.
Sorun giderme
405 Yönteme İzin Verilmiyor
Google Cloud Logs Explorer aşağıdakine benzer hatalar gösteriyorsa:
status code: 405, reason phrase: HTTP error response: HTTP/1.1 405 Method Not AllowedWebhook işleyicisi kaydedilmemiştir. Yaygın nedenler:
-
Kanal yapılandırılmamış:
channels.googlechatbölümü eksiktir. Şununla doğrulayın:bash openclaw config get channels.googlechat"Config path not found" döndürürse yapılandırmayı ekleyin (bkz. Yapılandırmada öne çıkanlar).
-
Plugin etkin değil: Plugin durumunu kontrol edin:
bash openclaw plugins list | grep googlechat"disabled" gösteriyorsa yapılandırmanıza
plugins.entries.googlechat.enabled: trueekleyin. -
Yapılandırma değişikliklerinden sonra Gateway yeniden başlatılmamış:
bash openclaw gateway restart
Kanalın çalıştığını doğrulayın:
openclaw channels status# Şunu göstermelidir: Google Chat default: enabled, configured, ...Diğer sorunlar
openclaw channels status --probe, kimlik doğrulama hatalarını ve eksik hedef kitle yapılandırmasını gösterir (audienceveaudienceTypedeğerlerinin ikisi de zorunludur).- Hiç mesaj gelmiyorsa Chat uygulamasının Webhook URL'sini ve tetikleyici yapılandırmasını doğrulayın.
- Bahsetme geçidi yanıtları engelliyorsa
botUserdeğerini uygulamanın kullanıcı kaynağı adına ayarlayın verequireMentiondeğerini kontrol edin. - Bir test mesajı gönderirken
openclaw logs --followçalıştırmak, isteklerin Gateway'e ulaşıp ulaşmadığını gösterir.
İlgili
- Kanallara Genel Bakış — desteklenen tüm kanallar
- Kanal Yönlendirme — iletiler için oturum yönlendirme
- Gateway yapılandırması
- Gruplar — grup sohbeti davranışı ve bahsetme kısıtlaması
- Eşleştirme — doğrudan ileti kimlik doğrulaması ve eşleştirme akışı
- Güvenlik — erişim modeli ve güvenlik sıkılaştırması