Webhooks
يمكن لـ Gateway (البوابة) كشف نقطة نهاية HTTP Webhook صغيرة للمحفزات الخارجية.التمكين
hooks.tokenمطلوب عندhooks.enabled=true.hooks.pathافتراضيًا إلى/hooks.
المصادقة
يجب أن يتضمن كل طلب رمز الـ hook. يُفضَّل استخدام الرؤوس:Authorization: Bearer <token>(موصى به)x-openclaw-token: <token>- يتم رفض رموز query-string (
?token=...تُرجع400).
نقاط النهاية
POST /hooks/wake
الحمولة:
textمطلوب (string): وصف الحدث (مثل «تم استلام بريد إلكتروني جديد»).modeاختياري (now|next-heartbeat): ما إذا كان سيتم تشغيل نبضة فورية (الافتراضيnow) أو الانتظار حتى الفحص الدوري التالي.
- إضافة حدث نظام إلى جلسة main
- إذا كان
mode=now، يتم تشغيل نبضة فورية
POST /hooks/agent
الحمولة:
messageمطلوب (string): الموجّه أو الرسالة التي سيعالجها الوكيل.nameاختياري (string): اسم مقروء للبشر للـ hook (مثل «GitHub»)، يُستخدم كبادئة في ملخصات الجلسة.agentIdاختياري (string): يوجّه هذا hook إلى وكيل محدد. المعرّفات غير المعروفة تعود إلى الوكيل الافتراضي. عند التعيين، يعمل hook باستخدام مساحة العمل والإعدادات الخاصة بالوكيل الذي تم تحديده.sessionKeyاختياري (string): المفتاح المستخدم لتعريف جلسة الوكيل. افتراضيًا يتم رفض هذا الحقل ما لم يتم تعيينhooks.allowRequestSessionKey=true.wakeModeاختياري (now|next-heartbeat): ما إذا كان سيتم تشغيل نبضة فورية (الافتراضيnow) أو الانتظار حتى الفحص الدوري التالي.deliverاختياري (boolean): إذا كانtrue، فسيتم إرسال استجابة الوكيل إلى قناة المراسلة. الافتراضيtrue. يتم تخطي الاستجابات التي تكون مجرد إقرارات نبضة تلقائيًا.channelاختياري (string): قناة المراسلة للتسليم. واحدة من:last،whatsapp،telegram،discord،slack،mattermost(plugin)،signal،imessage،msteams. الافتراضيlast.toاختياري (string): مُعرِّف المستلِم للقناة (مثل رقم الهاتف لـ WhatsApp/Signal، ومعرّف الدردشة لـ Telegram، ومعرّف القناة لـ Discord/Slack/Mattermost (plugin)، ومعرّف المحادثة لـ Microsoft Teams). الافتراضي هو آخر مستلِم في جلسة main.modelاختياري (string): تجاوز النموذج (مثلanthropic/claude-3-5-sonnetأو اسم مستعار). يجب أن يكون ضمن قائمة النماذج المسموح بها إذا كانت مقيّدة.thinkingاختياري (string): تجاوز مستوى التفكير (مثلlow،medium،high).timeoutSecondsاختياري (number): المدة القصوى لتشغيل الوكيل بالثواني.
- تشغيل دور وكيل معزول (بمفتاح جلسة خاص)
- نشر ملخص دائمًا في جلسة main
- إذا كان
wakeMode=now، يتم تشغيل نبضة فورية
سياسة مفتاح الجلسة (تغيير غير متوافق)
يتم تعطيل تجاوزاتsessionKey في حمولة /hooks/agent افتراضيًا.
- موصى به: تعيين
hooks.defaultSessionKeyثابت والإبقاء على تعطيل تجاوزات الطلب. - اختياري: السماح بتجاوزات الطلب فقط عند الحاجة، مع تقييد البادئات.
POST /hooks/<name> (مُعيَّن)
تُحل أسماء الـ hook المخصصة عبر hooks.mappings (انظر التهيئة). يمكن للتعيين
تحويل الحمولات التعسفية إلى إجراءات wake أو agent، مع قوالب اختيارية أو
تحويلات برمجية.
خيارات التعيين (ملخص):
hooks.presets: ["gmail"]يفعّل تعيين Gmail المضمّن.hooks.mappingsيتيح لك تعريفmatchوactionوالقوالب في التهيئة.hooks.transformsDir+transform.moduleلتحميل وحدة JS/TS لمنطق مخصص.hooks.transformsDir(إذا تم تعيينه) يجب أن يبقى ضمن جذر transforms داخل دليل إعداد OpenClaw (عادةً~/.openclaw/hooks/transforms).transform.moduleيجب أن يُحل ضمن دليل transforms الفعلي (سيتم رفض مسارات الاجتياز/الهروب).
- استخدم
match.sourceللإبقاء على نقطة إدخال عامة (توجيه قائم على الحمولة). - تتطلب تحويلات TS مُحمِّل TS (مثل
bunأوtsx) أو.jsمُسبقة التجميع وقت التشغيل. - عيّن
deliver: true+channel/toعلى التعيينات لتوجيه الردود إلى واجهة دردشة (channelافتراضيًا إلىlastويعود إلى WhatsApp). agentIdيوجّه الـ hook إلى وكيل محدد؛ المعرفات غير المعروفة تعود إلى الوكيل الافتراضي.hooks.allowedAgentIdsيقيّد التوجيه الصريح عبرagentId. احذفه (أو أضف*) للسماح بأي وكيل. عيّن[]لمنع التوجيه الصريح عبرagentId.hooks.defaultSessionKeyيحدد الجلسة الافتراضية لتشغيل وكيل hook عند عدم توفير مفتاح صريح.hooks.allowRequestSessionKeyيتحكم فيما إذا كانت حمولات/hooks/agentيمكنها تعيينsessionKey(الافتراضي:false).hooks.allowedSessionKeyPrefixesيقيّد اختياريًا قيمsessionKeyالصريحة القادمة من حمولات الطلبات وعمليات الربط.allowUnsafeExternalContent: trueيعطّل غلاف سلامة المحتوى الخارجي لذلك الـ hook (خطر؛ للاستخدام فقط مع مصادر داخلية موثوقة).openclaw webhooks gmail setupيكتب تهيئةhooks.gmailلـopenclaw webhooks gmail run. راجع Gmail Pub/Sub لسير عمل مراقبة Gmail الكامل.
الاستجابات
200لـ/hooks/wake202لـ/hooks/agent(بدء تشغيل غير متزامن)401عند فشل المصادقة429بعد تكرار فشل المصادقة من نفس العميل (تحقق منRetry-After)400عند حمولة غير صالحة413عند الحمولات كبيرة الحجم
أمثلة
استخدام نموذج مختلف
أضفmodel إلى حمولة الوكيل (أو التعيين) لتجاوز النموذج لهذا التشغيل:
agents.defaults.models، فتأكد من تضمين نموذج التجاوز هناك.
الأمان
- أبقِ نقاط نهاية الـ hook خلف loopback أو tailnet أو وكيل عكسي موثوق.
- استخدم رمز hook مخصصًا؛ لا تعِد استخدام رموز مصادقة Gateway.
- يتم تطبيق تحديد المعدل على حالات فشل المصادقة المتكررة لكل عنوان عميل لإبطاء محاولات التخمين القسري.
- إذا كنت تستخدم توجيه متعدد الوكلاء، فقم بتعيين
hooks.allowedAgentIdsلتقييد اختيارagentIdالصريح. - أبقِ
hooks.allowRequestSessionKey=falseما لم تكن بحاجة إلى جلسات يحددها المستدعي. - إذا قمت بتمكين
sessionKeyفي الطلب، فقيّدhooks.allowedSessionKeyPrefixes(على سبيل المثال،["hook:"]). - تجنّب تضمين حمولات خام حساسة في سجلات الـ webhook.
- تُعامَل حمولات الـ hook على أنها غير موثوقة وتُغلَّف بحدود أمان افتراضيًا.
إذا اضطررت لتعطيل ذلك لـ hook معيّن، فاضبط
allowUnsafeExternalContent: trueفي تعيين ذلك الـ hook (خطر).