Перейти до основного вмісту

Webhooks (плагін)

Плагін Webhooks додає автентифіковані HTTP-маршрути, які прив’язують зовнішню автоматизацію до TaskFlows в OpenClaw. Використовуйте його, якщо хочете, щоб довірена система, така як Zapier, n8n, завдання CI або внутрішній сервіс, створювала та керувала керованими TaskFlows без потреби спочатку писати власний плагін.

Де він працює

Плагін Webhooks працює всередині процесу Gateway. Якщо ваш Gateway працює на іншій машині, установіть і налаштуйте плагін на цьому хості 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 bridge для TaskFlow",
            },
          },
        },
      },
    },
  },
}
Поля маршруту:
  • enabled: необов’язкове, типове значення — true
  • path: необов’язкове, типове значення — /plugins/webhooks/<routeId>
  • sessionKey: обов’язковий сеанс, якому належать прив’язані TaskFlows
  • secret: обов’язковий спільний секрет або SecretRef
  • controllerId: необов’язковий ідентифікатор контролера для створених керованих потоків
  • description: необов’язкова примітка для оператора
Підтримувані варіанти secret:
  • Звичайний рядок
  • SecretRef із source: "env" | "file" | "exec"
Якщо маршрут на основі секрету не може визначити свій секрет під час запуску, плагін пропускає цей маршрут і записує попередження в журнал замість того, щоб відкривати зламану кінцеву точку.

Модель безпеки

Кожен маршрут вважається довіреним і діє з повноваженнями TaskFlow свого налаштованого sessionKey. Це означає, що маршрут може перевіряти та змінювати TaskFlows, які належать цьому сеансу, тому вам слід:
  • Використовувати сильний унікальний секрет для кожного маршруту
  • Віддавати перевагу посиланням на секрети замість вбудованих plaintext-секретів
  • Прив’язувати маршрути до найвужчого сеансу, який підходить для цього робочого процесу
  • Відкривати лише конкретний шлях webhook, який вам потрібен
Плагін застосовує:
  • Автентифікацію зі спільним секретом
  • Обмеження розміру тіла запиту та таймаутів
  • Обмеження частоти запитів із фіксованим вікном
  • Обмеження кількості одночасних запитів у польоті
  • Доступ до TaskFlow, прив’язаний до власника, через api.runtime.taskFlow.bindSession(...)

Формат запиту

Надсилайте запити POST з такими параметрами:
  • Content-Type: application/json
  • Authorization: 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"}'

Підтримувані дії

Наразі плагін приймає такі значення JSON action:
  • create_flow
  • get_flow
  • list_flows
  • find_latest_flow
  • resolve_flow
  • get_task_summary
  • set_waiting
  • resume_flow
  • finish_flow
  • fail_flow
  • request_cancel
  • cancel_flow
  • run_task

create_flow

Створює керований TaskFlow для сеансу, прив’язаного до маршруту. Приклад:
{
  "action": "create_flow",
  "goal": "Review inbound queue",
  "status": "queued",
  "notifyPolicy": "done_only"
}

run_task

Створює кероване дочірнє завдання всередині наявного керованого TaskFlow. Дозволені runtime:
  • subagent
  • acp
Приклад:
{
  "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": {}
}
Плагін навмисно очищає метадані власника/сеансу з відповідей webhook.

Пов’язана документація