Gmail Pub/Sub -> OpenClaw
लक्ष्य: Gmail watch -> Pub/Sub push ->gog gmail watch serve -> OpenClaw webhook।
पूर्वापेक्षाएँ
gcloudइंस्टॉल और लॉग इन (install guide).gog(gogcli) इंस्टॉल और Gmail खाते के लिए अधिकृत (gogcli.sh).- OpenClaw hooks सक्षम (देखें Webhooks).
tailscalelogged in (tailscale.com)। Supported setup public HTTPS endpoint के लिए Tailscale Funnel का उपयोग करता है। अन्य tunnel services काम कर सकती हैं, लेकिन वे DIY/unsupported हैं और manual wiring की आवश्यकता होती है। अभी के लिए, Tailscale ही वह है जिसे हम सपोर्ट करते हैं।
deliver + वैकल्पिक channel/to सेट करता हो:
channel + to सेट करें। अन्यथा channel: "last" last delivery route का उपयोग करता है (WhatsApp पर fallback करता है)।
Gmail runs के लिए सस्ता model force करने हेतु mapping में model सेट करें (provider/model या alias)। यदि आप agents.defaults.models enforce करते हैं, तो इसे वहाँ शामिल करें।
Gmail hooks के लिए विशेष रूप से डिफ़ॉल्ट मॉडल और थिंकिंग लेवल सेट करने हेतु,
अपने config में hooks.gmail.model / hooks.gmail.thinking जोड़ें:
- mapping में प्रति-hook
model/thinkingअभी भी इन डिफ़ॉल्ट्स को ओवरराइड करता है। - फॉलबैक क्रम:
hooks.gmail.model→agents.defaults.model.fallbacks→ प्राथमिक (auth/rate-limit/timeouts)। - यदि
agents.defaults.modelsसेट है, तो Gmail मॉडल allowlist में होना चाहिए। - Gmail hook content डिफ़ॉल्ट रूप से external-content safety boundaries के साथ wrap किया जाता है।
Disable करने के लिए (खतरनाक),
hooks.gmail.allowUnsafeExternalContent: trueसेट करें।
hooks.mappings जोड़ें या
hooks.transformsDir के अंतर्गत JS/TS ट्रांसफ़ॉर्म मॉड्यूल जोड़ें
(देखें Webhooks)।
विज़ार्ड (अनुशंसित)
सब कुछ एक साथ वायर करने के लिए OpenClaw हेल्पर का उपयोग करें (macOS पर brew के माध्यम से deps इंस्टॉल करता है):- सार्वजनिक पुश एंडपॉइंट के लिए Tailscale Funnel का उपयोग करता है।
openclaw webhooks gmail runके लिएhooks.gmailconfig लिखता है।- Gmail hook preset (
hooks.presets: ["gmail"]) सक्षम करता है।
tailscale.mode enabled हो, OpenClaw अपने आप hooks.gmail.serve.path को / पर सेट करता है और public path को hooks.gmail.tailscale.path (डिफ़ॉल्ट /gmail-pubsub) पर रखता है क्योंकि Tailscale proxying से पहले set-path prefix को strip कर देता है।
यदि आपको backend को prefixed path प्राप्त करने की आवश्यकता है, तो hooks.gmail.tailscale.target (या --tailscale-target) को http://127.0.0.1:8788/gmail-pubsub जैसे full URL पर सेट करें और hooks.gmail.serve.path से match करें।
क्या आपको एक कस्टम एंडपॉइंट चाहिए? --push-endpoint <url> या --tailscale off का उपयोग करें।
प्लैटफ़ॉर्म नोट: macOS पर विज़ार्ड gcloud, gogcli, और tailscale
Homebrew के माध्यम से इंस्टॉल करता है; Linux पर इन्हें पहले मैन्युअली इंस्टॉल करें।
Gateway ऑटो-स्टार्ट (अनुशंसित):
- जब
hooks.enabled=trueऔरhooks.gmail.accountसेट होता है, तो Gateway बूट परgog gmail watch serveशुरू करता है और watch को स्वतः नवीनीकृत करता है। - ऑप्ट आउट करने के लिए
OPENCLAW_SKIP_GMAIL_WATCHER=1सेट करें (उपयोगी यदि आप डेमन स्वयं चलाते हैं)। - मैन्युअल डेमन को एक ही समय पर न चलाएँ, अन्यथा
listen tcp 127.0.0.1:8788: bind: address already in useका सामना करेंगे।
gog gmail watch serve शुरू करता है + ऑटो-रिन्यू):
एक-बार का सेटअप
- उस GCP प्रोजेक्ट का चयन करें जो OAuth क्लाइंट का स्वामी है जिसका उपयोग
gogकरता है।
- APIs सक्षम करें:
- एक टॉपिक बनाएँ:
- Gmail push को प्रकाशित करने की अनुमति दें:
watch शुरू करें
history_id सहेजें (डिबगिंग के लिए)।
पुश हैंडलर चलाएँ
लोकल उदाहरण (shared token auth):--tokenपुश एंडपॉइंट (x-gog-tokenया?token=) की सुरक्षा करता है।--hook-urlOpenClaw/hooks/gmailकी ओर इशारा करता है (मैप्ड; आइसोलेटेड रन + मुख्य को सारांश)।--include-bodyऔर--max-bytesOpenClaw को भेजे जाने वाले बॉडी स्निपेट को नियंत्रित करते हैं।
openclaw webhooks gmail run उसी फ़्लो को रैप करता है और watch को स्वतः नवीनीकृत करता है।
हैंडलर को एक्सपोज़ करें (उन्नत, असमर्थित)
यदि आपको non-Tailscale टनल की आवश्यकता है, तो इसे मैन्युअली वायर करें और पुश सब्सक्रिप्शन में सार्वजनिक URL का उपयोग करें (असमर्थित, बिना गार्डरेल्स):परीक्षण
वॉच किए गए इनबॉक्स पर एक संदेश भेजें:समस्या-निवारण
Invalid topicName: प्रोजेक्ट मिसमैच (टॉपिक OAuth क्लाइंट प्रोजेक्ट में नहीं है)।User not authorized: टॉपिक परroles/pubsub.publisherअनुपस्थित।- खाली संदेश: Gmail push केवल
historyIdप्रदान करता है;gog gmail historyके माध्यम से फ़ेच करें।