Вебхуки Clawdbot

Интегрируйте ИИ-ассистента Clawdbot с внешними сервисами с помощью вебхуков. Узнайте, как получать и отправлять события вебхуков для автоматизации.

Обзор вебхуков Clawdbot

Clawdbot поддерживает вебхуки для интеграции с внешними сервисами. Вебхуки обеспечивают событийную автоматизацию, внешние триггеры и межсервисное взаимодействие.

Входящие вебхуки

Конфигурация

{
  "webhooks": {
    "incoming": {
      "enabled": true,
      "port": 3011,
      "secret": "your-webhook-secret"
    }
  }
}

Конечная точка

POST http://localhost:3011/webhook/<hook-id>

Аутентификация

curl -X POST http://localhost:3011/webhook/my-hook \
  -H "X-Webhook-Secret: your-webhook-secret" \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello from external service"}'

Обработчики вебхуков

Определение обработчика

{
  "webhooks": {
    "handlers": [
      {
        "id": "github-events",
        "path": "/github",
        "action": "run_agent",
        "agentId": "devops",
        "template": "New GitHub event: {{event.action}} on {{event.repository.name}}"
      }
    ]
  }
}

Действия обработчика

ДействиеОписание
send_messageОтправка сообщения в канал
run_agentЗапуск агента с промптом
forwardПересылка на другую конечную точку
customПользовательская функция обработчика

Управление сессиями

Ключи сессий вебхуков

Вебхуки используют выделенные сессии:

hook:<uuid>

Параметры сессий

{
  "webhooks": {
    "handlers": [
      {
        "id": "alerts",
        "sessionMode": "persistent",
        "sessionKey": "alerts-session"
      }
    ]
  }
}

Исходящие вебхуки

Конфигурация

{
  "webhooks": {
    "outgoing": [
      {
        "id": "slack-notify",
        "url": "https://hooks.slack.com/services/xxx",
        "events": ["message_received", "agent_response"],
        "method": "POST"
      }
    ]
  }
}

Типы событий

СобытиеОписание
message_receivedПолучено новое сообщение
agent_responseАгент сгенерировал ответ
session_startedСоздана новая сессия
session_endedСессия истекла/закрыта
errorПроизошла ошибка

Формат полезной нагрузки

Входящая нагрузка

{
  "event": "custom_event",
  "data": {
    "key": "value"
  },
  "timestamp": "2024-01-15T10:30:00Z"
}

Исходящая нагрузка

{
  "type": "message_received",
  "session": "agent:main:whatsapp",
  "message": {
    "from": "+15551234567",
    "text": "Hello",
    "timestamp": "2024-01-15T10:30:00Z"
  }
}

Безопасность

Проверка секрета

{
  "webhooks": {
    "incoming": {
      "secretHeader": "X-Webhook-Secret",
      "secret": "your-secret"
    }
  }
}

Белый список IP

{
  "webhooks": {
    "incoming": {
      "allowedIPs": [
        "192.168.1.0/24",
        "10.0.0.1"
      ]
    }
  }
}

Обработка ошибок

Конфигурация повторных попыток

{
  "webhooks": {
    "outgoing": [
      {
        "id": "notify",
        "retry": {
          "maxAttempts": 3,
          "backoff": "exponential"
        }
      }
    ]
  }
}

Обработка сбоев

  • Неудачные вебхуки записываются в журнал
  • Повторные попытки с экспоненциальной задержкой
  • Опциональная очередь недоставленных сообщений

Примеры

Интеграция с GitHub

{
  "webhooks": {
    "handlers": [
      {
        "id": "github",
        "path": "/github",
        "action": "send_message",
        "target": {
          "channel": "discord",
          "peer": "dev-channel"
        },
        "template": "🔔 {{event.action}}: {{event.pull_request.title}}"
      }
    ]
  }
}

Пересылка оповещений

{
  "webhooks": {
    "handlers": [
      {
        "id": "alerts",
        "path": "/alerts",
        "action": "run_agent",
        "agentId": "oncall",
        "template": "Alert: {{alert.name}} - {{alert.message}}"
      }
    ]
  }
}

Следующие шаги