Google Chat (Chat API)¶
स्थिति: Google Chat API वेबहुक्स (केवल HTTP) के माध्यम से DMs + spaces के लिए तैयार।
त्वरित सेटअप (शुरुआती)¶
- एक Google Cloud प्रोजेक्ट बनाएँ और Google Chat API सक्षम करें। - यहाँ जाएँ: Google Chat API Credentials - यदि API पहले से सक्षम नहीं है तो उसे सक्षम करें।
- एक Service Account बनाएँ:
- Create Credentials > Service Account पर क्लिक करें।
- इसे कोई भी नाम दें (उदाहरण:
openclaw-chat)। - अनुमतियाँ खाली छोड़ दें (Continue दबाएँ)। - पहुँच वाले principals खाली छोड़ दें (Done दबाएँ)। - JSON Key बनाएँ और डाउनलोड करें: - Service accounts की सूची में, अभी बनाए गए खाते पर क्लिक करें। - Keys टैब पर जाएँ। - Add Key > Create new key पर क्लिक करें। - JSON चुनें और Create दबाएँ।
- डाउनलोड की गई JSON फ़ाइल को अपने Gateway होस्ट पर संग्रहीत करें (उदाहरण:
~/.openclaw/googlechat-service-account.json)। - Google Cloud Console Chat Configuration में एक Google Chat ऐप बनाएँ:
- Application info भरें:
- App name: (उदाहरण:
OpenClaw) - Avatar URL: (उदाहरण:
https://openclaw.ai/logo.png) - Description: (उदाहरण:
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जोड़कर सेट करें। - सुझाव: अपने Gateway का सार्वजनिक URL खोजने के लिए
openclaw statusचलाएँ। - Visibility के अंतर्गत Make this Chat app available to specific people and groups in <Your Domain> चुनें।
- टेक्स्ट बॉक्स में अपना ईमेल पता दर्ज करें (उदाहरण:
user@example.com)। - नीचे Save पर क्लिक करें।
- App name: (उदाहरण:
- ऐप स्थिति सक्षम करें: - सहेजने के बाद, पृष्ठ को रीफ़्रेश करें। - App status अनुभाग खोजें (आमतौर पर सहेजने के बाद ऊपर या नीचे होता है)। - स्थिति को Live - available to users में बदलें। - फिर से Save पर क्लिक करें।
- Service account पथ + webhook audience के साथ OpenClaw को विन्यस्त करें:
- Env:
GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json- या config:channels.googlechat.serviceAccountFile: "/path/to/service-account.json"। - webhook audience प्रकार + मान सेट करें (जो आपके Chat ऐप विन्यास से मेल खाता हो)।
- Gateway प्रारंभ करें। Google Chat will POST to your webhook path.
Google Chat में जोड़ें¶
जब Gateway चल रहा हो और आपका ईमेल visibility सूची में जोड़ा गया हो:
- Google Chat पर जाएँ।
- Direct Messages के पास + (प्लस) आइकन पर क्लिक करें।
- खोज बार में (जहाँ आप सामान्यतः लोगों को जोड़ते हैं), Google Cloud Console में विन्यस्त किया गया App name टाइप करें। - नोट: बॉट "Marketplace" ब्राउज़ सूची में दिखाई नहीं देगा क्योंकि यह एक निजी ऐप है। आपको इसे नाम से खोजकर ढूंढना होगा।
- परिणामों में से अपने बॉट का चयन करें।
- 1:1 बातचीत शुरू करने के लिए Add या Chat पर क्लिक करें।
- सहायक को ट्रिगर करने के लिए "Hello" भेजें!
सार्वजनिक URL (केवल वेबहुक)¶
Google Chat वेबहुक के लिए एक सार्वजनिक HTTPS एंडपॉइंट आवश्यक है। सुरक्षा के लिए, केवल /googlechat पाथ को ही इंटरनेट पर एक्सपोज़ करें। OpenClaw डैशबोर्ड और अन्य संवेदनशील एंडपॉइंट्स को अपने निजी नेटवर्क पर ही रखें।
विकल्प A: Tailscale Funnel (अनुशंसित)¶
निजी डैशबोर्ड के लिए Tailscale Serve और सार्वजनिक वेबहुक पाथ के लिए Funnel का उपयोग करें। इससे / निजी रहता है और केवल /googlechat एक्सपोज़ होता है।
- जाँचें कि आपका Gateway किस पते से बाउंड है:
bash
ss -tlnp | grep 18789
IP पता नोट करें (उदाहरण: 127.0.0.1, 0.0.0.0, या आपका Tailscale IP जैसे 100.x.x.x)।
- डैशबोर्ड को केवल tailnet के लिए एक्सपोज़ करें (पोर्ट 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 ```
- केवल वेबहुक पथ को सार्वजनिक रूप से एक्सपोज़ करें:
```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 पहुँच के लिए नोड को अधिकृत करें: यदि संकेत दिया जाए, तो आउटपुट में दिखाए गए प्राधिकरण URL पर जाएँ ताकि अपने tailnet नीति में इस नोड के लिए Funnel सक्षम किया जा सके।
-
विन्यास सत्यापित करें:
bash
tailscale serve status
tailscale funnel status
आपका सार्वजनिक वेबहुक URL होगा:
https://<node-name>.<tailnet>.ts.net/googlechat
आपका निजी डैशबोर्ड केवल tailnet तक सीमित रहेगा:
https://<node-name>.<tailnet>.ts.net:8443/
Google Chat ऐप विन्यास में सार्वजनिक URL का उपयोग करें (बिना :8443 के)।
नोट: यह कॉन्फ़िगरेशन रीबूट के बाद भी बना रहता है। इसे बाद में हटाने के लिए,
tailscale funnel resetऔरtailscale serve resetचलाएँ।
विकल्प B: रिवर्स प्रॉक्सी (Caddy)¶
यदि आप Caddy जैसा रिवर्स प्रॉक्सी उपयोग करते हैं, तो केवल विशिष्ट पथ को प्रॉक्सी करें:
your-domain.com {
reverse_proxy /googlechat* localhost:18789
}
इस विन्यास के साथ, your-domain.com/ पर आने वाला कोई भी अनुरोध अनदेखा किया जाएगा या 404 लौटाएगा, जबकि your-domain.com/googlechat सुरक्षित रूप से OpenClaw तक रूट किया जाएगा।
विकल्प C: Cloudflare Tunnel¶
अपने टनल की ingress नियमों को केवल वेबहुक पथ रूट करने के लिए विन्यस्त करें:
- Path:
/googlechat->http://localhost:18789/googlechat - Default Rule: HTTP 404 (Not Found)
यह कैसे काम करता है¶
- Google Chat sends webhook POSTs to the gateway. Each request includes an
Authorization: Bearer <token>header. - OpenClaw टोकन को विन्यस्त
audienceType+audienceके विरुद्ध सत्यापित करता है: -audienceType: "app-url"→ audience आपका HTTPS वेबहुक URL होता है। -audienceType: "project-number"→ audience Cloud प्रोजेक्ट नंबर होता है। - संदेश space के अनुसार रूट किए जाते हैं:
- DMs सत्र कुंजी
agent:<agentId>:googlechat:dm:<spaceId>का उपयोग करते हैं। - Spaces सत्र कुंजीagent:<agentId>:googlechat:group:<spaceId>का उपयोग करते हैं। - DM access is pairing by default. Unknown senders receive a pairing code; approve with:
-
openclaw pairing approve googlechat <code> - Group spaces require @-mention by default. Use
botUserif mention detection needs the app’s user name.
लक्ष्य¶
डिलीवरी और allowlists के लिए इन पहचानकर्ताओं का उपयोग करें:
- Direct messages:
users/<userId>याusers/<email>(ईमेल पते स्वीकार्य हैं)। - Spaces:
spaces/<spaceId>।
विन्यास के मुख्य बिंदु¶
{
channels: {
googlechat: {
enabled: true,
serviceAccountFile: "/path/to/service-account.json",
audienceType: "app-url",
audience: "https://gateway.example.com/googlechat",
webhookPath: "/googlechat",
botUser: "users/1234567890", // optional; helps mention detection
dm: {
policy: "pairing",
allowFrom: ["users/1234567890", "name@example.com"],
},
groupPolicy: "allowlist",
groups: {
"spaces/AAAA": {
allow: true,
requireMention: true,
users: ["users/1234567890"],
systemPrompt: "Short answers only.",
},
},
actions: { reactions: true },
typingIndicator: "message",
mediaMaxMb: 20,
},
},
}
टिप्पणियाँ:
- Service account क्रेडेंशियल्स को
serviceAccount(JSON स्ट्रिंग) के साथ inline भी पास किया जा सकता है। - यदि
webhookPathसेट नहीं है, तो डिफ़ॉल्ट वेबहुक पथ/googlechatहोता है। - Reactions
reactionsटूल औरchannels actionके माध्यम से उपलब्ध हैं जबactions.reactionsसक्षम हो। typingIndicatornone,message(डिफ़ॉल्ट), औरreactionका समर्थन करता है (reaction के लिए user OAuth आवश्यक है)।- Attachments Chat API के माध्यम से डाउनलोड किए जाते हैं और media pipeline में संग्रहीत होते हैं (आकार सीमा
mediaMaxMbद्वारा निर्धारित)।
समस्या-निवारण¶
405 Method Not Allowed¶
यदि Google Cloud Logs Explorer में इस प्रकार की त्रुटियाँ दिखाई दें:
status code: 405, reason phrase: HTTP error response: HTTP/1.1 405 Method Not Allowed
This means the webhook handler isn't registered. Common causes:
- Channel not configured: The
channels.googlechatsection is missing from your config. सत्यापित करें:
bash
openclaw config get channels.googlechat
यदि यह "Config path not found" लौटाता है, तो विन्यास जोड़ें (देखें Config highlights)।
- प्लगइन सक्षम नहीं: प्लगइन स्थिति जाँचें:
bash
openclaw plugins list | grep googlechat
यदि यह "disabled" दिखाता है, तो अपने config में plugins.entries.googlechat.enabled: true जोड़ें।
- Gateway पुनः आरंभ नहीं किया गया: config जोड़ने के बाद Gateway को पुनः आरंभ करें:
bash
openclaw gateway restart
सत्यापित करें कि चैनल चल रहा है:
openclaw channels status
# Should show: Google Chat default: enabled, configured, ...
अन्य समस्याएँ¶
- प्रमाणीकरण त्रुटियों या missing audience config के लिए
openclaw channels status --probeजाँचें। - यदि कोई संदेश नहीं पहुँचता, तो Chat ऐप के वेबहुक URL + event subscriptions की पुष्टि करें।
- यदि mention gating उत्तरों को रोकता है, तो
botUserको ऐप के user resource name पर सेट करें औरrequireMentionसत्यापित करें। - परीक्षण संदेश भेजते समय यह देखने के लिए
openclaw logs --followका उपयोग करें कि अनुरोध Gateway तक पहुँच रहे हैं या नहीं।
संबंधित दस्तावेज़: