4.9 KiB
| read_when | summary | title | x-i18n | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Plugin Webhook: punto di ingresso TaskFlow autenticato per automazioni esterne attendibili | Plugin Webhook |
|
Webhook (Plugin)
Il Plugin Webhooks aggiunge route HTTP autenticate che collegano l'automazione esterna agli OpenClaw TaskFlow.
Usalo quando vuoi che un sistema attendibile come Zapier, n8n, un job CI o un servizio interno crei e guidi TaskFlow gestiti senza dover prima scrivere un plugin personalizzato.
Dove viene eseguito
Il Plugin Webhooks viene eseguito all'interno del processo Gateway.
Se il tuo Gateway è in esecuzione su un'altra macchina, installa e configura il plugin su quell'host Gateway, quindi riavvia il Gateway.
Configurare le route
Imposta la configurazione sotto 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",
},
},
},
},
},
},
}
Campi della route:
enabled: facoltativo, il valore predefinito ètruepath: facoltativo, il valore predefinito è/plugins/webhooks/<routeId>sessionKey: sessione obbligatoria proprietaria dei TaskFlow associatisecret: segreto condiviso o SecretRef obbligatoriocontrollerId: id controller facoltativo per i flussi gestiti creatidescription: nota operatore facoltativa
Input secret supportati:
- Stringa semplice
- SecretRef con
source: "env" | "file" | "exec"
Se una route basata su segreto non riesce a risolvere il proprio segreto all'avvio, il plugin salta quella route e registra un avviso invece di esporre un endpoint non funzionante.
Modello di sicurezza
Ogni route è considerata attendibile per agire con l'autorità TaskFlow del
sessionKey configurato.
Questo significa che la route può ispezionare e modificare i TaskFlow di proprietà di quella sessione, quindi dovresti:
- Usare un segreto univoco forte per ogni route
- Preferire riferimenti a segreti rispetto a segreti in testo normale inline
- Associare le route alla sessione più ristretta adatta al workflow
- Esporre solo il percorso Webhook specifico di cui hai bisogno
Il plugin applica:
- Autenticazione tramite segreto condiviso
- Protezioni su dimensione del corpo della richiesta e timeout
- Limitazione della frequenza a finestra fissa
- Limitazione delle richieste in corso
- Accesso ai TaskFlow vincolato al proprietario tramite
api.runtime.tasks.managedFlows.bindSession(...)
Formato della richiesta
Invia richieste POST con:
Content-Type: application/jsonAuthorization: Bearer <secret>ox-openclaw-webhook-secret: <secret>
Esempio:
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"}'
Azioni supportate
Il plugin attualmente accetta questi valori JSON action:
create_flowget_flowlist_flowsfind_latest_flowresolve_flowget_task_summaryset_waitingresume_flowfinish_flowfail_flowrequest_cancelcancel_flowrun_task
create_flow
Crea un TaskFlow gestito per la sessione associata alla route.
Esempio:
{
"action": "create_flow",
"goal": "Review inbound queue",
"status": "queued",
"notifyPolicy": "done_only"
}
run_task
Crea un'attività figlia gestita all'interno di un TaskFlow gestito esistente.
I runtime consentiti sono:
subagentacp
Esempio:
{
"action": "run_task",
"flowId": "flow_123",
"runtime": "acp",
"childSessionKey": "agent:main:acp:worker",
"task": "Inspect the next message batch"
}
Forma della risposta
Le risposte riuscite restituiscono:
{
"ok": true,
"routeId": "zapier",
"result": {}
}
Le richieste rifiutate restituiscono:
{
"ok": false,
"routeId": "zapier",
"code": "not_found",
"error": "TaskFlow not found.",
"result": {}
}
Il plugin rimuove intenzionalmente i metadati proprietario/sessione dalle risposte Webhook.