Plugins
Plugin Webhooks
Plugin Webhooks dodaje uwierzytelnione trasy HTTP, które łączą zewnętrzną automatyzację z TaskFlow OpenClaw.
Użyj go, gdy chcesz, aby zaufany system, taki jak Zapier, n8n, zadanie CI lub usługa wewnętrzna, tworzył i obsługiwał zarządzane TaskFlow bez wcześniejszego pisania niestandardowego pluginu.
Gdzie działa
Plugin Webhooks działa wewnątrz procesu Gateway.
Jeśli Twój Gateway działa na innym komputerze, zainstaluj i skonfiguruj plugin na tym hoście Gateway, a następnie uruchom ponownie Gateway.
Konfigurowanie tras
Ustaw konfigurację pod 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: "Most TaskFlow Zapier",
},
},
},
},
},
},
}
Pola trasy:
enabled: opcjonalne, domyślnietruepath: opcjonalne, domyślnie/plugins/webhooks/<routeId>sessionKey: wymagana sesja, która jest właścicielem powiązanych TaskFlowsecret: wymagany współdzielony sekret lub SecretRefcontrollerId: opcjonalny identyfikator kontrolera dla utworzonych zarządzanych przepływówdescription: opcjonalna notatka operatora
Obsługiwane dane wejściowe secret:
- Zwykły ciąg znaków
- SecretRef z
source: "env" | "file" | "exec"
Jeśli trasa oparta na sekrecie nie może rozwiązać swojego sekretu podczas uruchamiania, plugin pomija tę trasę i rejestruje ostrzeżenie zamiast udostępniać niedziałający punkt końcowy.
Model zabezpieczeń
Każda trasa jest zaufana do działania z uprawnieniami TaskFlow skonfigurowanego
sessionKey.
Oznacza to, że trasa może sprawdzać i modyfikować TaskFlow należące do tej sesji, więc należy:
- Używać silnego, unikalnego sekretu dla każdej trasy
- Preferować odwołania do sekretów zamiast sekretów zapisanych jawnie w konfiguracji
- Wiązać trasy z najwęższą sesją pasującą do przepływu pracy
- Udostępniać tylko konkretną ścieżkę Webhook, której potrzebujesz
Plugin stosuje:
- Uwierzytelnianie współdzielonym sekretem
- Ograniczenia rozmiaru treści żądania i czasu oczekiwania
- Limitowanie szybkości w stałym oknie
- Limitowanie równoległych żądań w toku
- Dostęp do TaskFlow powiązany z właścicielem przez
api.runtime.tasks.managedFlows.bindSession(...)
Format żądania
Wysyłaj żądania POST z:
Content-Type: application/jsonAuthorization: Bearer <secret>lubx-openclaw-webhook-secret: <secret>
Przykład:
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"}'
Obsługiwane akcje
Plugin obecnie akceptuje następujące wartości JSON action:
create_flowget_flowlist_flowsfind_latest_flowresolve_flowget_task_summaryset_waitingresume_flowfinish_flowfail_flowrequest_cancelcancel_flowrun_task
create_flow
Tworzy zarządzany TaskFlow dla sesji powiązanej z trasą.
Przykład:
{
"action": "create_flow",
"goal": "Review inbound queue",
"status": "queued",
"notifyPolicy": "done_only"
}
run_task
Tworzy zarządzane zadanie podrzędne w istniejącym zarządzanym TaskFlow.
Dozwolone środowiska uruchomieniowe to:
subagentacp
Przykład:
{
"action": "run_task",
"flowId": "flow_123",
"runtime": "acp",
"childSessionKey": "agent:main:acp:worker",
"task": "Inspect the next message batch"
}
Kształt odpowiedzi
Pomyślne odpowiedzi zwracają:
{
"ok": true,
"routeId": "zapier",
"result": {}
}
Odrzucone żądania zwracają:
{
"ok": false,
"routeId": "zapier",
"code": "not_found",
"error": "TaskFlow not found.",
"result": {}
}
Plugin celowo usuwa metadane właściciela/sesji z odpowiedzi Webhook.