Webhooks nach Anrufen
Erhalten Sie über Webhooks Benachrichtigungen, wenn Anrufe enden und die Analyse abgeschlossen ist.
Übersicht
Webhooks nach Anrufen ermöglichen Ihnen, nach Abschluss der Analyse detaillierte Informationen zu einem Anruf zu erhalten. Wenn aktiviert, sendet ElevenLabs eine POST-Anfrage mit umfassenden Anrufdaten an Ihren angegebenen Endpunkt.
ElevenLabs unterstützt drei Arten von Webhooks nach Anrufen:
- Transkriptions-Webhooks (
post_call_transcription): Enthalten vollständige Gesprächsdaten, einschließlich Transkripten, Analyseergebnissen und Metadaten - Audio-Webhooks (
post_call_audio): Enthalten minimale Daten mit Base64-kodiertem Audio des gesamten Gesprächs - Webhooks bei fehlgeschlagener Anrufinitiierung (
call_initiation_failure): Enthalten Informationen zu fehlgeschlagenen Anrufinitiierungsversuchen, einschließlich Fehlergründen und Metadaten
Webhooks nach Anrufen aktivieren
Webhooks nach Anrufen können über die Einstellungsseite von ElevenAgents für alle Agents in Ihrem Workspace aktiviert werden.

Webhooks nach Anrufen müssen einen Statuscode 200 zurückgeben, um als erfolgreich zu gelten. Webhooks, die wiederholt fehlschlagen, werden automatisch deaktiviert, wenn 10 oder mehr aufeinanderfolgende Fehler auftreten und die letzte erfolgreiche Zustellung mehr als 7 Tage zurückliegt oder noch nie eine erfolgreiche Zustellung erfolgt ist.
Webhooks nach Anrufen können bei Fehlschlägen automatisch erneut versucht werden. Siehe Webhook- Wiederholungen.
Authentifizierung
Der Listener muss alle eingehenden Webhooks validieren. Webhooks unterstützen derzeit die Authentifizierung über HMAC-Signaturen. So richten Sie die HMAC-Authentifizierung ein:
- Speichern Sie das beim Erstellen des Webhooks generierte gemeinsame Geheimnis sicher.
- Verifizieren Sie den Header ElevenLabs-Signature in Ihrem Endpunkt mithilfe des SDK.
Das JavaScript-SDK stellt constructEvent bereit, das Python-SDK construct_event mit rawBody, sig_header und secret (diese heißen in Python nicht payload / signature). Beide verifizieren die Signatur, validieren den Zeitstempel und parsen die JSON-Nutzlast.
Python
JavaScript
Beispiel für einen Webhook-Handler mit FastAPI:
Benutzerdefinierte Request-Header
Zusätzlich zur HMAC-Signaturvalidierung können Sie jeder Webhook-Zustellung benutzerdefinierte Header hinzufügen. Das ist nützlich, um API-Schlüssel, Bearer-Token oder andere Authentifizierungs-Header zu übermitteln, die Ihr empfangender Endpunkt benötigt.
Dashboard
CLI
SDK
Benutzerdefinierte Header können derzeit nicht über das ElevenAgents-Dashboard konfiguriert werden. Verwenden Sie das SDK oder die API, um benutzerdefinierte Header festzulegen.
Benutzerdefinierte Header funktionieren zusammen mit der HMAC-Authentifizierung. auth_type muss weiterhin auf hmac gesetzt sein,
und benutzerdefinierte Header werden zusätzlich zum Header ElevenLabs-Signature gesendet.
Benutzerdefinierte Header sind nur schreibbar. Der Endpunkt zum Auflisten von Webhooks
gibt request_headers nicht in seiner Antwort zurück, daher können Sie nicht auslesen, welche Header
für einen Webhook konfiguriert sind.
IP-Zulassungslisten
Für zusätzliche Sicherheit können Sie die statischen ausgehenden IP-Adressen von ElevenLabs zu Ihrer Zulassungsliste hinzufügen. Die vollständige Liste der IP-Adressen finden Sie unter IP-Zulassungslisten.
Die Kombination von IP-Zulassungslisten mit HMAC-Signaturvalidierung bietet mehrere Sicherheitsebenen.
Webhook-Überschreibungen pro Agent
Standardmäßig verwenden alle Agents in Ihrem Workspace den Webhook, der in Ihren Workspace-Einstellungen konfiguriert ist. Sie können dies pro Agent überschreiben, um Daten nach Anrufen für verschiedene Agents an unterschiedliche Endpunkte zu senden.
Dashboard
CLI
SDK
Agent-Einstellungen öffnen
Navigieren Sie zu Ihrem Agent im ElevenAgents-Dashboard und öffnen Sie Einstellungen.
post_call_webhook_id muss auf einen Webhook verweisen, der bereits in Ihrem Workspace vorhanden ist. Mit dem Array events können Sie auch festlegen, welche Ereignistypen gesendet werden:
Struktur der Webhook-Antwort
ElevenLabs sendet drei verschiedene Arten von Webhooks nach Anrufen, jeweils mit unterschiedlichen Datenstrukturen:
Transkriptions-Webhooks (post_call_transcription)
Enthalten umfassende Gesprächsdaten, einschließlich vollständiger Transkripte, Analyseergebnisse und Metadaten.
Felder der obersten Ebene
Struktur des Datenobjekts
Das Objekt data enthält:
Audio-Webhooks (post_call_audio)
Enthalten minimale Daten mit dem vollständigen Gesprächsaudio als Base64-kodiertes MP3.
Felder der obersten Ebene
Struktur des Datenobjekts
Das Objekt data enthält nur:
Audio-Webhooks enthalten nur die drei oben aufgeführten Felder. Sie enthalten KEINE Transkriptionsdaten, Metadaten, Analyseergebnisse oder andere Gesprächsdetails.
Webhooks bei fehlgeschlagener Anrufinitiierung (call_initiation_failure)
Enthalten Informationen zu Versuchen, Telefonanrufe zu initiieren, einschließlich Fehlergründen und Metadaten des Telefonieanbieters.
Webhook-Ereignisse bei fehlgeschlagener Anrufinitiierung werden gesendet, wenn ein Anruf aufgrund von Verbindungsfehlern, einer Ablehnung durch den Benutzer oder weil der Benutzer nicht abnimmt, nicht initiiert werden kann. Wenn ein Anruf an die Mailbox geht oder von einem automatisierten Dienst angenommen wird, wird kein Webhook bei fehlgeschlagener Anrufinitiierung gesendet, da der Anruf erfolgreich initiiert wurde.
Felder der obersten Ebene
Struktur des Datenobjekts
Das Objekt data enthält:
Bei über Twilio getätigten ausgehenden Anrufen wird failure_reason aus dem Twilio-CallStatus abgeleitet: busy und no-answer werden unverändert übernommen, failed wird als unknown gemeldet. Andere Twilio-Anrufstatus senden keinen Webhook bei fehlgeschlagener Anrufinitiierung.
Struktur des Metadatenobjekts
Die Struktur des Objekts metadata variiert je nachdem, ob der ausgehende Anruf über Twilio oder über SIP-Trunking getätigt wurde. Das Objekt enthält ein Feld type, das zwischen den beiden unterscheidet, sowie ein Feld body mit anbieterspezifischen Details.
SIP-Metadaten (type: "sip"):
Das Objekt body für SIP-Metadaten enthält:
Twilio-Metadaten (type: "twilio"):
Beispiel-Webhook-Payloads
Beispiel für einen Transkriptions-Webhook
Beispiel für einen Audio-Webhook
Beispiele für Webhooks bei fehlgeschlagener Anrufinitiierung
Beispiel für Twilio-Metadaten
Beispiel für SIP-Metadaten
Zustellung von Audio-Webhooks
Audio-Webhooks werden getrennt von Transkriptions-Webhooks zugestellt und enthalten nur die wesentlichen Felder zur Identifizierung des Gesprächs sowie die Base64-kodierten Audiodaten.
Audio-Webhooks können mit dem Schalter “Audiodaten senden” in Ihren Webhook- Einstellungen aktiviert oder deaktiviert werden. Diese Einstellung kann sowohl auf Workspace-Ebene (in den ElevenAgents-Einstellungen) als auch auf Agent-Ebene (in individuellen Agent-Webhook-Überschreibungen) konfiguriert werden.
Streaming-Zustellung
Audio-Webhooks werden als Streaming-HTTP-Anfragen mit dem Header transfer-encoding: chunked zugestellt, um große Audiodateien effizient zu verarbeiten. Jede Anfrage läuft nach 5 Minuten ab.
Wiederholungen
Wenn Wiederholungen für den Webhook aktiviert sind, werden fehlgeschlagene Audio-Zustellungen nach demselben Zeitplan wie Transkriptions-Webhooks erneut versucht. Bei einer Wiederholung wird die vollständige Audio-Payload erneut gesendet. Deduplizieren Sie daher nach conversation_id. Den Zeitplan, wiederholbare Fehler und Größenlimits für Audio finden Sie unter Webhook-Wiederholungen.
Audio-Webhooks verarbeiten
Da Audio-Webhooks über Chunked Transfer Encoding zugestellt werden, müssen Sie Streaming-Daten korrekt verarbeiten:
Audio-Webhooks können große Dateien sein. Stellen Sie daher sicher, dass Ihr Webhook-Endpunkt Streaming-Anfragen verarbeiten kann und über ausreichend Speicher- bzw. Speicherkapazität verfügt. Das Audio wird im MP3-Format zugestellt.
Anwendungsfälle
Automatisierte Nachbearbeitung von Anrufen
Webhooks nach Anrufen ermöglichen Ihnen, automatisierte Workflows zu erstellen, die unmittelbar nach Ende eines Anrufs ausgelöst werden. Hier sind einige praktische Anwendungen:
CRM-Integration
Aktualisieren Sie Ihr Customer-Relationship-Management-System mit Gesprächsdaten, sobald ein Anruf abgeschlossen ist:
Zustandsbehaftete Gespräche
Bewahren Sie den Gesprächskontext über mehrere Interaktionen hinweg, indem Sie den Zustand speichern und abrufen:
- Wenn ein Anruf beginnt, übergeben Sie Ihre Benutzer-ID als dynamische Variable.
- Wenn ein Anruf endet, richten Sie Ihren Webhook-Endpunkt so ein, dass er Gesprächsdaten anhand der aus
dynamic_variablesextrahierten Benutzer-ID in Ihrer Datenbank speichert. - Wenn der Benutzer erneut anruft, können Sie diesen Kontext abrufen und ihn als dynamische Variable
{{previous_topics}}an das neue Gespräch übergeben. - Dadurch entsteht ein nahtloses Erlebnis, bei dem sich der Agent an frühere Interaktionen “erinnert”.