Webhooks Clawdbot

Intégrez l'assistant IA Clawdbot avec des services externes en utilisant des webhooks. Apprenez à recevoir et envoyer des événements webhook pour l'automatisation.

Aperçu des Webhooks Clawdbot

Clawdbot prend en charge les webhooks pour l'intégration avec des services externes. Les webhooks permettent l'automatisation événementielle, les déclencheurs externes et la communication inter-services.

Webhooks entrants

Configuration

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

Point de terminaison

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

Authentification

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"}'

Gestionnaires de Webhooks

Définir un gestionnaire

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

Actions du gestionnaire

ActionDescription
send_messageEnvoyer un message au canal
run_agentDéclencher l'agent avec un prompt
forwardTransférer vers un autre point de terminaison
customFonction de gestionnaire personnalisée

Gestion des sessions

Clés de session Webhook

Les webhooks utilisent des sessions dédiées :

hook:<uuid>

Options de session

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

Webhooks sortants

Configuration

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

Types d'événements

ÉvénementDescription
message_receivedNouveau message reçu
agent_responseL'agent a généré une réponse
session_startedNouvelle session créée
session_endedSession expirée/fermée
errorUne erreur s'est produite

Format de charge utile

Charge utile entrante

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

Charge utile sortante

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

Sécurité

Vérification du secret

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

Liste blanche d'IP

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

Gestion des erreurs

Configuration des tentatives

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

Gestion des échecs

  • Les webhooks échoués sont journalisés
  • Réessai avec recul exponentiel
  • File d'attente de messages morts optionnelle

Exemples

Intégration GitHub

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

Transfert d'alertes

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

Prochaines étapes