वेबहुक्स
Gateway बाहरी ट्रिगर्स के लिए एक छोटा HTTP वेबहुक एंडपॉइंट एक्सपोज़ कर सकता है।सक्षम करें
hooks.tokenआवश्यक है जबhooks.enabled=true।hooks.pathका डिफ़ॉल्ट मान/hooksहै।
प्रमाणीकरण
हर अनुरोध में हुक टोकन शामिल होना चाहिए। हेडर्स को प्राथमिकता दें:Authorization: Bearer <token>(अनुशंसित)x-openclaw-token: <token>?token=<token>(अप्रचलित; एक चेतावनी लॉग करता है और भविष्य के किसी प्रमुख रिलीज़ में हटा दिया जाएगा)
एंडपॉइंट्स
POST /hooks/wake
पेलोड:
textआवश्यक (string): इवेंट का विवरण (उदाहरण: “नया ईमेल प्राप्त हुआ”)।modeवैकल्पिक (now|next-heartbeat): क्या तुरंत हार्टबीट ट्रिगर करना है (डिफ़ॉल्टnow) या अगली आवधिक जाँच का इंतज़ार करना है।
- मुख्य सत्र के लिए एक सिस्टम इवेंट कतारबद्ध करता है
- यदि
mode=now, तो तुरंत हार्टबीट ट्रिगर करता है
POST /hooks/agent
पेलोड:
messageआवश्यक (string): एजेंट द्वारा प्रोसेस किया जाने वाला प्रॉम्प्ट या संदेश।nameवैकल्पिक (string): हुक के लिए मानव-पठनीय नाम (उदाहरण: “GitHub”), जिसे सत्र सारांशों में उपसर्ग के रूप में उपयोग किया जाता है।agentIdवैकल्पिक (string): इस हुक को किसी विशिष्ट agent तक रूट करें। अज्ञात ID डिफ़ॉल्ट एजेंट पर वापस चले जाते हैं। सेट होने पर, हुक रेज़ॉल्व किए गए एजेंट के वर्कस्पेस और कॉन्फ़िगरेशन का उपयोग करके चलता है।sessionKeyवैकल्पिक (string): एजेंट के सेशन की पहचान के लिए उपयोग की जाने वाली कुंजी। डिफ़ॉल्ट रूप से यह फ़ील्ड अस्वीकृत होती है जब तक किhooks.allowRequestSessionKey=trueसेट न हो।deliverवैकल्पिक (boolean): यदिtrueहै, तो एजेंट का उत्तर मैसेजिंग चैनल पर भेजा जाएगा। डिफ़ॉल्टtrueहै। जो प्रतिक्रियाएँ केवल हार्टबीट स्वीकृतियाँ होती हैं, उन्हें अपने आप छोड़ दिया जाता है।deliverवैकल्पिक (boolean): यदिtrueहै, तो एजेंट का उत्तर मैसेजिंग चैनल पर भेजा जाएगा। डिफ़ॉल्टtrueहै। जो प्रतिक्रियाएँ केवल हार्टबीट स्वीकृतियाँ होती हैं, उन्हें अपने आप छोड़ दिया जाता है।channelवैकल्पिक (string): डिलीवरी के लिए मैसेजिंग चैनल। इनमें से एक:last,whatsapp,telegram,discord,slack,mattermost(plugin),signal,imessage,msteams.lastपर डिफ़ॉल्ट होता है।toवैकल्पिक (string): चैनल के लिए प्राप्तकर्ता पहचानकर्ता (उदा., WhatsApp/Signal के लिए फ़ोन नंबर, Telegram के लिए चैट ID, Discord/Slack/Mattermost (plugin) के लिए चैनल ID, MS Teams के लिए conversation ID)। मुख्य सत्र में अंतिम प्राप्तकर्ता पर डिफ़ॉल्ट होता है।modelवैकल्पिक (string): मॉडल ओवरराइड (उदा.,anthropic/claude-3-5-sonnetया कोई alias)। यदि प्रतिबंधित हो, तो इसे अनुमत मॉडल सूची में होना चाहिए।timeoutSecondsवैकल्पिक (number): एजेंट रन की अधिकतम अवधि सेकंड में।timeoutSecondsवैकल्पिक (number): एजेंट रन की अधिकतम अवधि सेकंड में।
- एक पृथक एजेंट टर्न चलाता है (स्वयं की सत्र कुंजी)
- हमेशा मुख्य सत्र में एक सारांश पोस्ट करता है
- यदि
wakeMode=now, तो तुरंत हार्टबीट ट्रिगर करता है
Session key नीति (ब्रेकिंग परिवर्तन)
कस्टम hook नामhooks.mappings के माध्यम से resolved किए जाते हैं (कॉन्फ़िगरेशन देखें)। एक mapping
मनमाने payloads को wake या agent actions में बदल सकती है, वैकल्पिक templates या
code transforms के साथ।
- अनुशंसित: एक स्थिर
hooks.defaultSessionKeyसेट करें और अनुरोध ओवरराइड्स बंद रखें। - वैकल्पिक: केवल आवश्यकता होने पर अनुरोध ओवरराइड्स की अनुमति दें, और प्रीफ़िक्स को प्रतिबंधित करें।
POST /hooks/<name> (mapped)
कस्टम hook नाम hooks.mappings के माध्यम से resolved किए जाते हैं (कॉन्फ़िगरेशन देखें)। एक mapping
मनमाने payloads को wake या agent actions में बदल सकती है, वैकल्पिक templates या
code transforms के साथ।
Mapping options (summary):
hooks.presets: ["gmail"]बिल्ट-इन Gmail मैपिंग सक्षम करता है।hooks.mappingsआपको विन्यास मेंmatch,action, और टेम्पलेट्स परिभाषित करने देता है।hooks.transformsDir+transform.moduleकस्टम लॉजिक के लिए एक JS/TS मॉड्यूल लोड करता है।hooks.transformsDir(यदि सेट किया गया है) आपके OpenClaw कॉन्फ़िगरेशन डायरेक्टरी के अंतर्गत transforms रूट के भीतर ही रहना चाहिए (आमतौर पर~/.openclaw/hooks/transforms)।transform.moduleको प्रभावी transforms डायरेक्टरी के भीतर ही रेज़ॉल्व होना चाहिए (traversal/escape पथ अस्वीकृत हैं)।
match.sourceका उपयोग एक सामान्य इनजेस्ट एंडपॉइंट रखने के लिए करें (payload-आधारित रूटिंग)।- TS ट्रांसफ़ॉर्म्स के लिए TS लोडर (उदाहरण:
bunयाtsx) या रनटाइम पर प्रीकम्पाइल्ड.jsआवश्यक है। - मैपिंग्स पर
deliver: true+channel/toसेट करें ताकि उत्तरों को किसी चैट सतह पर रूट किया जा सके (channelका डिफ़ॉल्टlastहै और बैकअप के रूप में WhatsApp पर गिरता है)। agentIdहुक को एक विशिष्ट एजेंट की ओर रूट करता है; अज्ञात ID डिफ़ॉल्ट एजेंट पर वापस चले जाते हैं।hooks.allowedAgentIdsस्पष्टagentIdरूटिंग को प्रतिबंधित करता है। किसी भी एजेंट की अनुमति देने के लिए इसे छोड़ दें (या*शामिल करें)। स्पष्टagentIdरूटिंग को अस्वीकार करने के लिए[]सेट करें।hooks.defaultSessionKeyतब हुक एजेंट रन के लिए डिफ़ॉल्ट सेशन सेट करता है जब कोई स्पष्ट कुंजी प्रदान नहीं की जाती।hooks.allowRequestSessionKeyयह नियंत्रित करता है कि क्या/hooks/agentpayloadssessionKeyसेट कर सकते हैं (डिफ़ॉल्ट:false)।hooks.allowedSessionKeyPrefixesवैकल्पिक रूप से अनुरोध payloads और mappings से स्पष्टsessionKeyमानों को प्रतिबंधित करता है।allowUnsafeExternalContent: trueउस हुक के लिए बाहरी सामग्री सुरक्षा रैपर को अक्षम करता है (खतरनाक; केवल विश्वसनीय आंतरिक स्रोतों के लिए)।openclaw webhooks gmail setup,openclaw webhooks gmail runके लिएhooks.gmailकॉन्फ़िग लिखता है। पूर्ण Gmail watch flow के लिए Gmail Pub/Sub देखें।
Responses
/hooks/wakeके लिए200/hooks/agentके लिए202(async रन शुरू हुआ)- प्रमाणीकरण विफलता पर
401 - उसी क्लाइंट से बार-बार auth विफलताओं के बाद
429(Retry-Afterजांचें ) - अमान्य payload पर
400 - अत्यधिक बड़े payloads पर
413
Examples
Use a different model
उस रन के लिए मॉडल ओवरराइड करने हेतु एजेंट payload (या मैपिंग) मेंmodel जोड़ें:
agents.defaults.models लागू करते हैं, तो सुनिश्चित करें कि ओवरराइड मॉडल उसमें शामिल है।
Security
- हुक एंडपॉइंट्स को loopback, tailnet, या विश्वसनीय रिवर्स प्रॉक्सी के पीछे रखें।
- एक समर्पित हुक टोकन का उपयोग करें; Gateway प्रमाणीकरण टोकनों का पुनः उपयोग न करें।
- बार-बार auth विफलताओं को brute-force प्रयासों को धीमा करने के लिए प्रति क्लाइंट पते पर rate-limit किया जाता है।
- यदि आप multi-agent routing का उपयोग करते हैं, तो स्पष्ट
agentIdचयन को सीमित करने के लिएhooks.allowedAgentIdsसेट करें। - जब तक आपको caller-चयनित सेशन की आवश्यकता न हो,
hooks.allowRequestSessionKey=falseरखें। - यदि आप अनुरोध
sessionKeyसक्षम करते हैं, तोhooks.allowedSessionKeyPrefixesको प्रतिबंधित करें (उदाहरण के लिए,["hook:"])। - वेबहुक लॉग्स में संवेदनशील कच्चे payloads शामिल करने से बचें।
- Hook payloads को डिफ़ॉल्ट रूप से अविश्वसनीय माना जाता है और सुरक्षा सीमाओं के साथ wrap किया जाता है।
यदि किसी विशेष hook के लिए इसे अक्षम करना आवश्यक हो, तो उस hook की mapping में
allowUnsafeExternalContent: trueसेट करें (खतरनाक)।