Zum Inhalt springen

Webhook-Format

Selu unterstützt Webhooks für Integrationen mit externen Diensten. Eingehende Webhooks erlauben es externen Systemen, Ereignisse an Selu zu senden, etwa wenn eine CI-Pipeline einen Agenten benachrichtigt. Ausgehende Webhooks erlauben es Selu, Ereignisse an deine eigenen Dienste zu schicken, zum Beispiel an Slack, wenn ein Gespräch abgeschlossen ist.

Externe Systeme senden HTTP-POST-Anfragen an den Endpunkt für eingehende Webhooks von Selu.

POST /api/v1/webhooks/inbound/{webhook_id}

Jeder eingehende Webhook hat eine eindeutige webhook_id, die erzeugt wird, wenn du ihn über Dashboard oder CLI mit selu webhook create --direction inbound anlegst.

{
"event": "custom.build_complete",
"timestamp": "2026-03-03T14:22:00Z",
"source": "ci-pipeline",
"data": {
"repo": "selu-bot/web-search",
"branch": "main",
"commit": "a1b2c3d",
"status": "success",
"duration_seconds": 142
}
}
FeldTypErforderlichBeschreibung
eventstringJaBezeichner des Ereignistyps. Verwende einen Namensraum mit Punkten, etwa custom.deploy_complete.
timestampstringJaISO-8601-Zeitstempel des Ereignisses
sourcestringNeinKennung des Ursprungssystems
dataobjectJaBeliebiges Payload. Es wird unverändert an den Agenten weitergegeben.

Übermittle das Webhook-Secret im Header X-Selu-Signature. Der Wert ist ein HMAC-SHA256-Hash des rohen Request-Bodys in Hex-Form, berechnet mit dem Secret, das beim Erstellen des Webhooks angezeigt wurde.

X-Selu-Signature: sha256=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

Wenn ein abonnierter Event-Typ eintritt, sendet Selu HTTP-POST-Anfragen an eine von dir konfigurierte URL.

EreignisBeschreibung
conversation.startedEin neues Gespräch wurde angelegt
conversation.completedEin Gespräch wurde als abgeschlossen markiert
agent.installedEin neuer Agent wurde installiert
agent.errorBei einem Agenten ist ein Laufzeitfehler aufgetreten
capability.invokedEine Capability wurde von einem Agenten aufgerufen
{
"webhook_id": "wh_outbound_abc123",
"event": "conversation.completed",
"timestamp": "2026-03-03T15:00:00Z",
"data": {
"conversation_id": "conv_abc123",
"agent_name": "research-assistant",
"channel": "telegram",
"message_count": 8,
"capabilities_used": ["web-search"],
"duration_seconds": 45
}
}

Selu versucht fehlgeschlagene Zustellungen, also Antworten ohne 2xx-Status, mit exponentiellem Backoff erneut: nach 10 Sekunden, 30 Sekunden, 90 Sekunden und 270 Sekunden. Nach vier Fehlversuchen wird die Zustellung als fehlgeschlagen markiert. Im Dashboard unter Settings → Webhooks kannst du den Zustellungsverlauf ansehen und manuell erneut auslösen.

Terminal-Fenster
# Inbound
selu webhook create --direction inbound --name "CI Notifications"
# Outbound
selu webhook create --direction outbound \
--name "Slack Notifier" \
--url https://example.com/hooks/selu \
--events conversation.completed,agent.error