Konzept

Webhook erklärt — HTTP-Callbacks für KI-Agenten und Messenger

Direkte Antwort: Ein Webhook ist ein HTTP-Endpoint, an den externe Dienste Events pushen, sobald etwas passiert. OpenClaw nutzt Webhooks z.B. für Telegram-Nachrichten oder GitHub-Events. Ohne Signatur-Validierung sind Webhooks ein Sicherheitsrisiko.

Was ist ein Webhook?

Ein Webhook ist ein HTTP-Endpoint auf deinem Server, den externe Dienste anrufen, wenn ein bestimmtes Event passiert. Statt dass dein Code regelmäßig nachfragt ("Gibt's was Neues?"), pusht der externe Dienst die Info aktiv zu dir, sobald sie verfügbar ist.

Beispiel: Wenn jemand deinem Telegram-Bot eine Nachricht schickt, sendet der Telegram-Server eine HTTP-POST-Anfrage an einen vorab konfigurierten Webhook-URL deines OpenClaw Gateways. Das Gateway empfängt die Nachricht und reagiert darauf.

Kontext

Webhooks sind seit etwa 2007 ein gängiges Pattern. Sie sind das Gegenteil von Polling: Statt alle X Sekunden zu fragen, ob es Updates gibt, sagt der externe Dienst Bescheid, sobald es welche gibt. Das spart Bandbreite, reduziert Latenz und ist generell effizienter.

In der OpenClaw-Welt begegnen dir Webhooks an mehreren Stellen:

  • Telegram-Bot ruft das Gateway an, wenn neue Nachricht
  • WhatsApp-Business-API postet Status-Updates
  • GitHub-Skill empfängt Events bei Pushes
  • Eigene Custom Skills, die externe Trigger empfangen

Polling vs. Webhook

| Aspekt | Polling | Webhook | | --- | --- | --- | | Initiator | Dein Code fragt | Externer Dienst pusht | | Latenz | Bis zum nächsten Poll | Sofort | | Ressourcen | Viele leere Calls | Nur bei Events | | Setup-Aufwand | Minimal | Endpoint öffentlich | | Sicherheit | Trivial (kein Endpoint) | Signatur-Validierung nötig |

OpenClaw kann beides. Telegram bietet z.B. sowohl Long-Polling als auch Webhooks. Bei kleinem Setup ist Polling oft einfacher (kein öffentlicher Endpoint), bei skalierendem Workload sind Webhooks effizienter.

Funktionsweise

Beim Webhook-Setup passieren typischerweise vier Schritte:

  1. Endpoint deklarieren: Du sagst dem externen Dienst, an welche URL er pushen soll
  2. Secret hinterlegen: Du teilst dem Dienst ein gemeinsames Geheimnis mit, mit dem er Anfragen signiert
  3. Eingehende POST-Requests verarbeiten: Dein Server nimmt die HTTP-Anfrage an, validiert die Signatur und verarbeitet das Event
  4. HTTP 200 zurückgeben: Schnelle Antwort, sonst retried der Dienst

Praxis-Beispiel

Ein simpler Telegram-Webhook-Setup:

# Webhook bei Telegram registrieren
curl -X POST "https://api.telegram.org/bot$BOT_TOKEN/setWebhook" \
  -d "url=https://my-server.example.com/webhook/telegram" \
  -d "secret_token=$SHARED_SECRET"

Auf Server-Seite (Pseudo-Code im Express-Stil):

app.post('/webhook/telegram', (req, res) => {
  // 1. Signatur validieren
  const headerSecret = req.headers['x-telegram-bot-api-secret-token'];
  if (headerSecret !== process.env.SHARED_SECRET) {
    return res.status(401).send('Invalid secret');
  }

  // 2. Event verarbeiten
  const update = req.body;
  if (update.message) {
    handleIncomingMessage(update.message);
  }

  // 3. Schnell antworten
  res.status(200).send('OK');
});

Wichtig: Innerhalb von wenigen Sekunden antworten. Lange Verarbeitung (z.B. LLM-Call) gehört in einen Background-Job, nicht in den Webhook-Handler.

Webhook-Signaturen

Eine sichere Webhook-Implementierung validiert Signaturen. Verschiedene Dienste machen das unterschiedlich:

| Dienst | Header | Methode | | --- | --- | --- | | Telegram | X-Telegram-Bot-Api-Secret-Token | Plain Token Match | | GitHub | X-Hub-Signature-256 | HMAC-SHA256 | | Stripe | Stripe-Signature | HMAC-SHA256 + Timestamp | | WhatsApp | X-Hub-Signature-256 | HMAC-SHA256 |

Bei HMAC-Signaturen rechnet der Server: HMAC(payload, secret) und vergleicht mit dem Header. Wenn nicht gleich, Anfrage verwerfen.

Sicherheits-Best-Practices

  1. Signatur immer validieren: Niemals einfach POST-Body verarbeiten ohne Auth
  2. HTTPS Pflicht: HTTP-Webhooks sind ein Sniffer-Paradies
  3. Idempotenz: Webhook-Dienste senden Events oft doppelt. Dedupliziere via Event-ID
  4. Rate-Limiting: Auch wenn Signatur passt, kann Brute-Force kommen. Limits einbauen
  5. Logs: Jede Webhook-Anfrage loggen (anonymisiert) für Debugging
  6. Timeout-Verhalten: Wenn dein Endpoint nicht in X Sekunden antwortet, retried der Dienst. Bei langer Verarbeitung schnell 200 zurück und Logik in Background-Queue

OpenClaw-Webhook-Endpoints

Wenn dein OpenClaw-Server Webhooks empfangen soll, brauchst du:

  1. Eine öffentliche URL (Domain mit HTTPS, z.B. https://oc.example.com)
  2. Einen Reverse-Proxy (nginx/Caddy), der den Webhook-Endpoint zum Gateway-Port routet
  3. SSL-Zertifikat (Caddy/Let's Encrypt automatisiert das)
  4. UFW muss Port 443 erlauben

Falls du keine Public-URL haben willst (kein Reverse-Proxy, kein offener Port): Tools wie ngrok oder Cloudflare Tunnels reichen die externen Webhook-Calls durch eine outbound-only Verbindung an deinen Server.

Häufige Fehler / Stolperfallen

  1. Signatur ignoriert: Reine Convenience kann teuer werden. Alle großen Webhook-Bypässe waren "wir validieren das nicht so genau".
  2. Webhook-Endpoint ohne Auth offen: Bots scannen das Internet. Ein offener /webhook-Endpoint ist ein Spam-Magnet.
  3. Lange Verarbeitung im Handler: Dienst retried nach Timeout, du verarbeitest Event zweimal. Schnelle 200 + async-Queue.
  4. Webhook-URL geheimhalten gedacht: Security through obscurity funktioniert nicht. URL kann geleaked werden, also die Signatur ist die echte Sicherheit.
  5. Lokaler dev ohne Tunnel: Lokaler Telegram-Bot-Test braucht eine öffentliche URL. ngrok ist dein Freund.

Verwandte Begriffe

Webhook-Setup für Telegram/WhatsApp: Modul 3 der Masterclass.

Tipp: OpenClaw braucht einen Server, auf dem es 24/7 läuft. Hostinger KVM 2 in Frankfurt reicht für den Anfang und kostet nur wenige Euro im Monat. Hostinger ansehenAffiliate-Link — wir erhalten eine Provision, wenn du über diesen Link bestellst. Für dich ändert sich am Preis nichts.

Weitere Begriffe

Soul.md

Die Persönlichkeits-Datei deines OpenClaw-Agenten.

Heartbeat

Das System, das deinen OpenClaw-Agenten proaktiv arbeiten lässt.

Model Context Protocol (MCP)

Ein Standard-Protokoll für die Kommunikation zwischen KI-Agenten und externen Tools.

Identity File

Die Grundkonfiguration, die festlegt, wer dein Agent ist und wie er sich verhält.

OpenClaw Skills

Vorgefertigte Fähigkeiten, die deinem Agent beibringen, externe Tools zu nutzen.

OpenClaw Gateway

Der laufende Prozess, der deinen Agenten mit Messengern verbindet.

Anthropic API

Pay-per-Use API für Claude — die direkte Schnittstelle zu Anthropics LLMs.

Claude Token

Authentifizierungs-Token für Claude Pro und Max — günstiger als API-Pay-per-Use.

Tool Use

Mechanismus, mit dem LLMs externe Funktionen aufrufen — die Grundlage agentischer Systeme.

RAG (Retrieval-Augmented Generation)

KI-Antworten mit zusätzlichem Wissen aus Dokumenten oder Vektor-Datenbanken anreichern.

Cron / Crontab

Linux-Standard für zeitgesteuerte Aufgaben — die Grundlage proaktiver KI-Agenten.

systemd

Linux Service-Manager — startet OpenClaw automatisch und überwacht den Prozess.

fail2ban

Brute-Force-Schutz für SSH und andere Dienste — sperrt verdächtige IPs automatisch.

UFW (Uncomplicated Firewall)

Einfache Firewall-Konfiguration unter Ubuntu — Default-Deny mit selektiven Allows.

Tailscale

Mesh-VPN — sicherer Remote-Zugriff auf den eigenen KI-Server ohne offene Ports.

Prompt Injection

Angriffstechnik gegen LLM-Systeme — OWASP-LLM-Top-1-Risiko.

User.md

Datei mit Nutzer-Infos für Personalisierung deines OpenClaw-Agenten.