5.4 KiB
| read_when | summary | title | x-i18n | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Plugin Webhooks: إدخال TaskFlow موثّق لأتمتة خارجية موثوقة | Plugin Webhooks |
|
Plugin Webhooks
تضيف Plugin Webhooks مسارات HTTP موثّقة تربط الأتمتة الخارجية بـ TaskFlows في OpenClaw.
استخدمها عندما تريد لنظام موثوق مثل Zapier أو n8n أو وظيفة CI أو خدمة داخلية أن ينشئ TaskFlows مُدارة ويقودها من دون كتابة Plugin مخصصة أولًا.
مكان التشغيل
تعمل Plugin Webhooks داخل عملية Gateway.
إذا كانت Gateway تعمل على جهاز آخر، فقم بتثبيت Plugin وتهيئتها على مضيف Gateway ذاك، ثم أعد تشغيل Gateway.
تهيئة المسارات
اضبط التهيئة تحت plugins.entries.webhooks.config:
{
plugins: {
entries: {
webhooks: {
enabled: true,
config: {
routes: {
zapier: {
path: "/plugins/webhooks/zapier",
sessionKey: "agent:main:main",
secret: {
source: "env",
provider: "default",
id: "OPENCLAW_WEBHOOK_SECRET",
},
controllerId: "webhooks/zapier",
description: "جسر TaskFlow لـ Zapier",
},
},
},
},
},
},
}
حقول المسار:
enabled: اختياري، والافتراضيtruepath: اختياري، والافتراضي/plugins/webhooks/<routeId>sessionKey: الجلسة المطلوبة التي تملك TaskFlows المرتبطةsecret: السر المشترك المطلوب أو SecretRefcontrollerId: معرّف متحكم اختياري للتدفقات المُدارة التي تم إنشاؤهاdescription: ملاحظة اختيارية للمشغّل
مدخلات secret المدعومة:
- سلسلة عادية
- SecretRef مع
source: "env" | "file" | "exec"
إذا تعذر على مسار مدعوم بسر أن يحل سره عند بدء التشغيل، فإن Plugin تتخطى ذلك المسار وتسجل تحذيرًا بدلًا من كشف نقطة نهاية معطلة.
نموذج الأمان
يُوثق بكل مسار لكي يتصرف بسلطة TaskFlow الخاصة بـ
sessionKey المهيأة له.
وهذا يعني أن المسار يمكنه فحص وتعديل TaskFlows المملوكة لتلك الجلسة، لذلك يجب عليك:
- استخدام سر قوي وفريد لكل مسار
- تفضيل مراجع الأسرار على الأسرار النصية الصريحة المضمنة
- ربط المسارات بأضيق جلسة تناسب سير العمل
- كشف مسار Webhook المحدد الذي تحتاجه فقط
تطبق Plugin ما يلي:
- مصادقة السر المشترك
- حدود حجم جسم الطلب وحمايات المهلة
- تحديد المعدل بنافذة ثابتة
- تحديد الطلبات الجارية
- وصول TaskFlow مقيّد بالمالك عبر
api.runtime.taskFlow.bindSession(...)
تنسيق الطلب
أرسل طلبات POST مع:
Content-Type: application/jsonAuthorization: Bearer <secret>أوx-openclaw-webhook-secret: <secret>
مثال:
curl -X POST https://gateway.example.com/plugins/webhooks/zapier \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_SHARED_SECRET' \
-d '{"action":"create_flow","goal":"Review inbound queue"}'
الإجراءات المدعومة
تقبل Plugin حاليًا قيم action التالية في JSON:
create_flowget_flowlist_flowsfind_latest_flowresolve_flowget_task_summaryset_waitingresume_flowfinish_flowfail_flowrequest_cancelcancel_flowrun_task
create_flow
تنشئ TaskFlow مُدارة لجلسة المسار المرتبطة.
مثال:
{
"action": "create_flow",
"goal": "Review inbound queue",
"status": "queued",
"notifyPolicy": "done_only"
}
run_task
تنشئ مهمة فرعية مُدارة داخل TaskFlow مُدارة موجودة.
أوقات التشغيل المسموح بها هي:
subagentacp
مثال:
{
"action": "run_task",
"flowId": "flow_123",
"runtime": "acp",
"childSessionKey": "agent:main:acp:worker",
"task": "Inspect the next message batch"
}
شكل الاستجابة
تعيد الاستجابات الناجحة:
{
"ok": true,
"routeId": "zapier",
"result": {}
}
أما الطلبات المرفوضة فتعيد:
{
"ok": false,
"routeId": "zapier",
"code": "not_found",
"error": "لم يتم العثور على TaskFlow.",
"result": {}
}
وتقوم Plugin عمدًا بتنقية بيانات المالك/الجلسة الوصفية من استجابات Webhook.