Mainstream messaging
Google Chat
स्थिति: DMs + स्पेसेस के लिए Google Chat API Webhooks (केवल HTTP) के माध्यम से डाउनलोड करने योग्य plugin।
इंस्टॉल करें
चैनल कॉन्फ़िगर करने से पहले Google Chat इंस्टॉल करें:
openclaw plugins install @openclaw/googlechatलोकल checkout (जब git repo से चला रहे हों):
openclaw plugins install ./path/to/local/googlechat-pluginत्वरित सेटअप (शुरुआती)
- Google Cloud प्रोजेक्ट बनाएं और Google Chat API सक्षम करें।
- यहां जाएं: Google Chat API क्रेडेंशियल
- अगर API पहले से सक्षम नहीं है, तो उसे सक्षम करें।
- Service Account बनाएं:
- Create Credentials > Service Account दबाएं।
- इसे अपनी पसंद का नाम दें (जैसे,
openclaw-chat)। - अनुमतियां खाली छोड़ें (Continue दबाएं)।
- एक्सेस वाले principals खाली छोड़ें (Done दबाएं)।
- JSON Key बनाएं और डाउनलोड करें:
- service accounts की सूची में, अभी बनाए गए account पर क्लिक करें।
- Keys टैब पर जाएं।
- Add Key > Create new key पर क्लिक करें।
- JSON चुनें और Create दबाएं।
- डाउनलोड की गई JSON फ़ाइल को अपने gateway host पर संग्रहीत करें (जैसे,
~/.openclaw/googlechat-service-account.json)। - Google Cloud Console Chat Configuration में Google Chat app बनाएं:
- Application info भरें:
- App name: (जैसे
OpenClaw) - Avatar URL: (जैसे
https://openclaw.ai/logo.png) - Description: (जैसे
Personal AI Assistant)
- App name: (जैसे
- 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जोड़कर सेट करें।- सुझाव: अपने gateway का सार्वजनिक URL खोजने के लिए
openclaw statusचलाएं।
- सुझाव: अपने gateway का सार्वजनिक URL खोजने के लिए
- Visibility के अंतर्गत, Make this Chat app available to specific people and groups in
<Your Domain>चुनें। - टेक्स्ट बॉक्स में अपना ईमेल पता दर्ज करें (जैसे
user@example.com)। - नीचे Save पर क्लिक करें।
- Application info भरें:
- app status सक्षम करें:
- सेव करने के बाद, पेज refresh करें।
- App status सेक्शन खोजें (आमतौर पर सेव करने के बाद ऊपर या नीचे के पास)।
- स्थिति को Live - available to users में बदलें।
- फिर से Save पर क्लिक करें।
- service account path + Webhook audience के साथ OpenClaw कॉन्फ़िगर करें:
- Env:
GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json - या config:
channels.googlechat.serviceAccountFile: "/path/to/service-account.json"।
- Env:
- Webhook audience type + value सेट करें (आपके Chat app config से मेल खाता है)।
- Gateway शुरू करें। Google Chat आपके Webhook path पर POST करेगा।
Google Chat में जोड़ें
जब gateway चल रहा हो और आपका ईमेल visibility list में जोड़ा गया हो:
- Google Chat पर जाएं।
- Direct Messages के आगे + (plus) icon पर क्लिक करें।
- search bar में (जहां आप आमतौर पर लोगों को जोड़ते हैं), वह App name टाइप करें जिसे आपने Google Cloud Console में कॉन्फ़िगर किया था।
- नोट: bot "Marketplace" browse list में नहीं दिखेगा क्योंकि यह private app है। आपको इसे नाम से खोजना होगा।
- परिणामों में से अपना bot चुनें।
- 1:1 बातचीत शुरू करने के लिए Add या Chat पर क्लिक करें।
- assistant को trigger करने के लिए "Hello" भेजें!
सार्वजनिक URL (केवल Webhook)
Google Chat Webhooks के लिए सार्वजनिक HTTPS endpoint आवश्यक है। सुरक्षा के लिए, इंटरनेट पर केवल /googlechat path expose करें। OpenClaw dashboard और अन्य संवेदनशील endpoints को अपने private network पर रखें।
विकल्प A: Tailscale Funnel (अनुशंसित)
private dashboard के लिए Tailscale Serve और सार्वजनिक Webhook path के लिए Funnel का उपयोग करें। इससे / private रहता है जबकि केवल /googlechat expose होता है।
-
जांचें कि आपका gateway किस address से bound है:
bash ss -tlnp | grep 18789IP address नोट करें (जैसे,
127.0.0.1,0.0.0.0, या आपका Tailscale IP जैसे100.x.x.x)। -
dashboard को केवल tailnet पर expose करें (port 8443):
bash # 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 -
केवल Webhook path को सार्वजनिक रूप से expose करें:
bash # 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 -
Funnel access के लिए node authorize करें: अगर पूछा जाए, तो अपने tailnet policy में इस node के लिए Funnel सक्षम करने हेतु output में दिखाए गए authorization URL पर जाएं।
-
configuration सत्यापित करें:
bash tailscale serve statustailscale funnel status
आपका सार्वजनिक Webhook URL होगा:
https://<node-name>.<tailnet>.ts.net/googlechat
आपका private dashboard केवल tailnet तक सीमित रहता है:
https://<node-name>.<tailnet>.ts.net:8443/
Google Chat app config में public URL (बिना :8443) का उपयोग करें।
नोट: यह configuration reboots के बाद भी बना रहता है। इसे बाद में हटाने के लिए,
tailscale funnel resetऔरtailscale serve resetचलाएं।
विकल्प B: Reverse Proxy (Caddy)
अगर आप Caddy जैसे reverse proxy का उपयोग करते हैं, तो केवल विशिष्ट path को proxy करें:
your-domain.com { reverse_proxy /googlechat* localhost:18789}इस config के साथ, your-domain.com/ पर कोई भी request ignore की जाएगी या 404 के रूप में लौटेगी, जबकि your-domain.com/googlechat सुरक्षित रूप से OpenClaw तक route होगी।
विकल्प C: Cloudflare Tunnel
अपने tunnel के ingress rules को केवल Webhook path route करने के लिए कॉन्फ़िगर करें:
- Path:
/googlechat->http://localhost:18789/googlechat - Default Rule: HTTP 404 (नहीं मिला)
यह कैसे काम करता है
- Google Chat gateway को Webhook POSTs भेजता है। प्रत्येक request में
Authorization: Bearer <token>header शामिल होता है।- header मौजूद होने पर OpenClaw पूरे Webhook bodies को पढ़ने/parse करने से पहले bearer auth सत्यापित करता है।
- body में
authorizationEventObject.systemIdTokenले जाने वाली Google Workspace Add-on requests stricter pre-auth body budget के माध्यम से समर्थित हैं।
- OpenClaw token को configured
audienceType+audienceके विरुद्ध सत्यापित करता है:audienceType: "app-url"→ audience आपका HTTPS Webhook URL है।audienceType: "project-number"→ audience Cloud project number है।
- Messages space के अनुसार route होते हैं:
- DMs session key
agent:<agentId>:googlechat:direct:<spaceId>का उपयोग करते हैं। - Spaces session key
agent:<agentId>:googlechat:group:<spaceId>का उपयोग करते हैं।
- DMs session key
- DM access default रूप से pairing है। अज्ञात senders को pairing code मिलता है; इससे approve करें:
openclaw pairing approve googlechat <code>
- Group spaces के लिए default रूप से @-mention आवश्यक है। अगर mention detection को app के user name की आवश्यकता हो, तो
botUserका उपयोग करें। - जब कोई exec या plugin approval request Google Chat से शुरू होती है और stable
users/<id>approver configured होता है, तो OpenClaw originating space या thread में native Google Chat approval card post करता है। card buttons opaque callback tokens का उपयोग करते हैं, और manual/approve <id> <decision>prompt केवल तब दिखाया जाता है जब native approval delivery उपलब्ध न हो।
Targets
delivery और allowlists के लिए इन identifiers का उपयोग करें:
- Direct messages:
users/<userId>(अनुशंसित)। - Raw email
name@example.commutable है और केवल direct allowlist matching के लिए तब उपयोग होता है जबchannels.googlechat.dangerouslyAllowNameMatching: trueहो। - Deprecated:
users/<email>को user id माना जाता है, email allowlist नहीं। - Spaces:
spaces/<spaceId>।
Config highlights
{ 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 allowBots: false, 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, }, },}नोट्स:
- Service account credentials को
serviceAccount(JSON string) के साथ inline भी pass किया जा सकता है। serviceAccountRefभी समर्थित है (env/file SecretRef), जिसमेंchannels.googlechat.accounts.<id>.serviceAccountRefके अंतर्गत per-account refs शामिल हैं।- अगर
webhookPathसेट नहीं है, तो default Webhook path/googlechatहै। dangerouslyAllowNameMatchingallowlists के लिए mutable email principal matching फिर से सक्षम करता है (break-glass compatibility mode)।- Reactions
reactionstool औरchannels actionके माध्यम से उपलब्ध हैं जबactions.reactionsसक्षम हो। - Native approval cards Google Chat
cardsV2button clicks का उपयोग करते हैं, reaction events का नहीं। Approversdm.allowFromयाdefaultToसे आते हैं और stable numericusers/<id>values होने चाहिए। - Message actions text के लिए
sendऔर explicit attachment sends के लिएupload-fileexpose करते हैं।upload-filemedia/filePath/pathके साथ वैकल्पिकmessage,filename, और thread targeting स्वीकार करता है। typingIndicatormessage(default),none, औरreactionका समर्थन करता है (reaction के लिए user OAuth आवश्यक है)।- Attachments Chat API के माध्यम से download किए जाते हैं और media pipeline में stored होते हैं (size
mediaMaxMbसे capped होती है)। - Bot-authored Google Chat messages default रूप से ignore किए जाते हैं। अगर आप जानबूझकर
allowBots: trueसेट करते हैं, तो accepted bot-authored messages shared bot loop protection का उपयोग करते हैं।channels.defaults.botLoopProtectionकॉन्फ़िगर करें, फिर जब किसी एक space को अलग budget चाहिए हो तोchannels.googlechat.botLoopProtectionयाchannels.googlechat.groups.<space>.botLoopProtectionसे override करें।
Secrets reference details: Secrets Management।
Troubleshooting
405 Method Not Allowed
अगर Google Cloud Logs Explorer में इस तरह की errors दिखती हैं:
status code: 405, reason phrase: HTTP error response: HTTP/1.1 405 Method Not Allowedइसका अर्थ है कि Webhook handler registered नहीं है। सामान्य कारण:
-
Channel configured नहीं है: आपके config से
channels.googlechatsection missing है। इससे verify करें:bash openclaw config get channels.googlechatअगर यह "Config path not found" लौटाता है, तो configuration जोड़ें (Config highlights देखें)।
-
Plugin enabled नहीं है: plugin status जांचें:
bash openclaw plugins list | grep googlechatअगर यह "disabled" दिखाता है, तो अपने config में
plugins.entries.googlechat.enabled: trueजोड़ें। -
Gateway restarted नहीं हुआ है: config जोड़ने के बाद, gateway restart करें:
bash openclaw gateway restart
सत्यापित करें कि channel चल रहा है:
openclaw channels status# Should show: Google Chat default: enabled, configured, ...अन्य समस्याएं
- auth errors या missing audience config के लिए
openclaw channels status --probeजांचें। - अगर कोई messages नहीं आते, तो Chat app के Webhook URL + event subscriptions की पुष्टि करें।
- अगर mention gating replies block करता है, तो
botUserको app के user resource name पर सेट करें औरrequireMentionverify करें। - requests gateway तक पहुंच रही हैं या नहीं, यह देखने के लिए test message भेजते समय
openclaw logs --followका उपयोग करें।
संबंधित docs:
संबंधित
- चैनलों का अवलोकन — सभी समर्थित चैनल
- पेयरिंग — DM प्रमाणीकरण और पेयरिंग प्रवाह
- समूह — समूह चैट व्यवहार और उल्लेख गेटिंग
- चैनल रूटिंग — संदेशों के लिए सत्र रूटिंग
- सुरक्षा — पहुंच मॉडल और हार्डनिंग