Plugins
Plugin Webhooks
Le Plugin Webhooks ajoute des routes HTTP authentifiées qui relient l’automatisation externe aux TaskFlows OpenClaw.
Utilisez-le lorsque vous voulez qu’un système approuvé, comme Zapier, n8n, une tâche CI ou un service interne, crée et pilote des TaskFlows gérés sans écrire d’abord de Plugin personnalisé.
Où il s’exécute
Le Plugin Webhooks s’exécute dans le processus Gateway.
Si votre Gateway s’exécute sur une autre machine, installez et configurez le Plugin sur cet hôte Gateway, puis redémarrez le Gateway.
Configurer les routes
Définissez la configuration sous 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",
},
},
},
},
},
},
}
Champs de route :
enabled: facultatif, vauttruepar défautpath: facultatif, vaut/plugins/webhooks/<routeId>par défautsessionKey: session requise qui possède les TaskFlows liéssecret: secret partagé ou SecretRef requiscontrollerId: identifiant de contrôleur facultatif pour les flux gérés créésdescription: note opérateur facultative
Entrées secret prises en charge :
- Chaîne simple
- SecretRef avec
source: "env" | "file" | "exec"
Si une route adossée à un secret ne peut pas résoudre son secret au démarrage, le Plugin ignore cette route et journalise un avertissement au lieu d’exposer un endpoint défectueux.
Modèle de sécurité
Chaque route est approuvée pour agir avec l’autorité TaskFlow de son sessionKey configuré.
Cela signifie que la route peut inspecter et modifier les TaskFlows appartenant à cette session ; vous devriez donc :
- Utiliser un secret fort et unique par route
- Préférer les références de secrets aux secrets en texte clair intégrés
- Lier les routes à la session la plus restreinte qui convient au workflow
- Exposer uniquement le chemin Webhook précis dont vous avez besoin
Le Plugin applique :
- Authentification par secret partagé
- Protections de taille et de délai d’expiration du corps de requête
- Limitation de débit à fenêtre fixe
- Limitation des requêtes en cours
- Accès aux TaskFlows lié au propriétaire via
api.runtime.tasks.managedFlows.bindSession(...)
Format de requête
Envoyez des requêtes POST avec :
Content-Type: application/jsonAuthorization: Bearer <secret>oux-openclaw-webhook-secret: <secret>
Exemple :
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"}'
Actions prises en charge
Le Plugin accepte actuellement ces valeurs JSON action :
create_flowget_flowlist_flowsfind_latest_flowresolve_flowget_task_summaryset_waitingresume_flowfinish_flowfail_flowrequest_cancelcancel_flowrun_task
create_flow
Crée un TaskFlow géré pour la session liée de la route.
Exemple :
{
"action": "create_flow",
"goal": "Review inbound queue",
"status": "queued",
"notifyPolicy": "done_only"
}
run_task
Crée une tâche enfant gérée dans un TaskFlow géré existant.
Les runtimes autorisés sont :
subagentacp
Exemple :
{
"action": "run_task",
"flowId": "flow_123",
"runtime": "acp",
"childSessionKey": "agent:main:acp:worker",
"task": "Inspect the next message batch"
}
Forme de réponse
Les réponses réussies renvoient :
{
"ok": true,
"routeId": "zapier",
"result": {}
}
Les requêtes rejetées renvoient :
{
"ok": false,
"routeId": "zapier",
"code": "not_found",
"error": "TaskFlow not found.",
"result": {}
}
Le Plugin supprime intentionnellement les métadonnées de propriétaire/session des réponses Webhook.