Plugins
Plugin Webhookها
Plugin Webhooks مسیرهای HTTP احراز هویتشدهای اضافه میکند که اتوماسیون خارجی را به TaskFlowهای OpenClaw متصل میکنند.
از آن زمانی استفاده کنید که میخواهید یک سامانه قابل اعتماد مانند Zapier، n8n، یک کار CI، یا یک سرویس داخلی، بدون نوشتن یک Plugin سفارشی در ابتدا، TaskFlowهای مدیریتشده را ایجاد و هدایت کند.
محل اجرا
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: "Zapier TaskFlow bridge",
},
},
},
},
},
},
}
فیلدهای مسیر:
enabled: اختیاری، پیشفرضtrueاستpath: اختیاری، پیشفرض/plugins/webhooks/<routeId>استsessionKey: نشست الزامی که مالک TaskFlowهای متصلشده استsecret: secret مشترک یا SecretRef الزامیcontrollerId: شناسه کنترلر اختیاری برای جریانهای مدیریتشده ایجادشدهdescription: یادداشت اختیاری برای اپراتور
ورودیهای پشتیبانیشده secret:
- رشته ساده
- SecretRef با
source: "env" | "file" | "exec"
اگر یک مسیر متکی به secret نتواند secret خود را هنگام راهاندازی resolve کند، Plugin آن مسیر را نادیده میگیرد و بهجای نمایان کردن یک endpoint خراب، هشدار ثبت میکند.
مدل امنیتی
هر مسیر مورد اعتماد است تا با اختیار TaskFlow مربوط به sessionKey پیکربندیشدهاش عمل کند.
یعنی مسیر میتواند TaskFlowهای متعلق به آن نشست را بررسی و تغییر دهد، بنابراین باید:
- برای هر مسیر از یک secret قوی و یکتا استفاده کنید
- ارجاعهای secret را به secretهای متن ساده درونخطی ترجیح دهید
- مسیرها را به محدودترین نشستی متصل کنید که برای گردش کار مناسب است
- فقط همان مسیر Webhook مشخصی را که نیاز دارید در معرض دسترس قرار دهید
Plugin اعمال میکند:
- احراز هویت با secret مشترک
- محافظهای اندازه بدنه درخواست و زمانپایان
- محدودسازی نرخ با پنجره ثابت
- محدودسازی درخواستهای در حال اجرا
- دسترسی TaskFlow مقید به مالک از طریق
api.runtime.tasks.managedFlows.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 در حال حاضر این مقادیر JSON action را میپذیرد:
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 not found.",
"result": {}
}
Plugin عمداً فراداده مالک/نشست را از پاسخهای Webhook پاک میکند.