Plugins
Plugin de Webhooks
El Plugin Webhooks agrega rutas HTTP autenticadas que vinculan la automatización externa con los TaskFlows de OpenClaw.
Úsalo cuando quieras que un sistema de confianza, como Zapier, n8n, un trabajo de CI o un servicio interno, cree y dirija TaskFlows gestionados sin escribir primero un plugin personalizado.
Dónde se ejecuta
El Plugin Webhooks se ejecuta dentro del proceso Gateway.
Si tu Gateway se ejecuta en otra máquina, instala y configura el plugin en ese host de Gateway y luego reinicia el Gateway.
Configurar rutas
Define la configuración en 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",
},
},
},
},
},
},
}
Campos de ruta:
enabled: opcional, el valor predeterminado estruepath: opcional, el valor predeterminado es/plugins/webhooks/<routeId>sessionKey: sesión obligatoria propietaria de los TaskFlows vinculadossecret: secreto compartido o SecretRef obligatoriocontrollerId: id de controlador opcional para los flujos gestionados creadosdescription: nota opcional para el operador
Entradas secret compatibles:
- Cadena de texto sin formato
- SecretRef con
source: "env" | "file" | "exec"
Si una ruta respaldada por un secreto no puede resolver su secreto al iniciar, el plugin omite esa ruta y registra una advertencia en lugar de exponer un endpoint dañado.
Modelo de seguridad
Cada ruta es de confianza para actuar con la autoridad de TaskFlow de su
sessionKey configurada.
Esto significa que la ruta puede inspeccionar y mutar TaskFlows propiedad de esa sesión, por lo que deberías:
- Usar un secreto único y robusto por ruta
- Preferir referencias a secretos en lugar de secretos en texto claro en línea
- Vincular rutas a la sesión más restringida que se ajuste al flujo de trabajo
- Exponer solo la ruta de webhook específica que necesitas
El plugin aplica:
- Autenticación mediante secreto compartido
- Guardas de tamaño del cuerpo de la solicitud y de tiempo de espera
- Limitación de tasa de ventana fija
- Limitación de solicitudes en curso
- Acceso a TaskFlow vinculado al propietario mediante
api.runtime.tasks.managedFlows.bindSession(...)
Formato de solicitud
Envía solicitudes POST con:
Content-Type: application/jsonAuthorization: Bearer <secret>ox-openclaw-webhook-secret: <secret>
Ejemplo:
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"}'
Acciones compatibles
Actualmente, el plugin acepta estos valores JSON de action:
create_flowget_flowlist_flowsfind_latest_flowresolve_flowget_task_summaryset_waitingresume_flowfinish_flowfail_flowrequest_cancelcancel_flowrun_task
create_flow
Crea un TaskFlow gestionado para la sesión vinculada de la ruta.
Ejemplo:
{
"action": "create_flow",
"goal": "Review inbound queue",
"status": "queued",
"notifyPolicy": "done_only"
}
run_task
Crea una tarea secundaria gestionada dentro de un TaskFlow gestionado existente.
Los runtimes permitidos son:
subagentacp
Ejemplo:
{
"action": "run_task",
"flowId": "flow_123",
"runtime": "acp",
"childSessionKey": "agent:main:acp:worker",
"task": "Inspect the next message batch"
}
Forma de la respuesta
Las respuestas correctas devuelven:
{
"ok": true,
"routeId": "zapier",
"result": {}
}
Las solicitudes rechazadas devuelven:
{
"ok": false,
"routeId": "zapier",
"code": "not_found",
"error": "TaskFlow not found.",
"result": {}
}
El plugin elimina intencionalmente los metadatos de propietario/sesión de las respuestas de webhook.