Webhooks nach Anrufende
Übersicht
Webhooks nach Anrufende ermöglichen es Ihnen, detaillierte Informationen über einen Anruf zu erhalten, nachdem die Analyse abgeschlossen ist. Wenn sie aktiviert sind, sendet ElevenLabs eine POST-Anfrage mit umfassenden Anrufdaten an Ihren angegebenen Endpunkt.
ElevenLabs unterstützt drei Arten von Webhooks nach Anrufende:
- 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 vollständigen Gesprächs - Webhooks bei fehlgeschlagener Anrufinitiierung (
call_initiation_failure): Enthalten Informationen über fehlgeschlagene Anrufinitiierungsversuche, einschließlich Fehlergründen und Metadaten
Webhooks nach Anrufende aktivieren
Webhooks nach Anrufende können über die Einstellungsseite von ElevenAgents für alle Agents in Ihrem Workspace aktiviert werden.

Webhooks nach Anrufende müssen einen Statuscode 200 zurückgeben, um als erfolgreich zu gelten. Webhooks, die wiederholt fehlschlagen, werden automatisch deaktiviert, wenn mindestens 10 aufeinanderfolgende Fehler auftreten und die letzte erfolgreiche Zustellung mehr als 7 Tage zurückliegt oder noch nie eine erfolgreiche Zustellung erfolgt ist.
Webhooks nach Anrufende können bei Fehlern automatisch wiederholt werden. Weitere Informationen finden Sie unter 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 Anfrage-Header
Zusätzlich zur HMAC-Signaturvalidierung können Sie jeder Webhook-Zustellung benutzerdefinierte Header hinzufügen. Dies ist nützlich, um API-Schlüssel, Bearer-Token oder andere Authentifizierungs-Header zu übergeben, 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. Sie können daher nicht auslesen, welche Header
für einen Webhook konfiguriert sind.
IP-Zulassungslisten
Für zusätzliche Sicherheit können Sie die statischen ausgehenden IPs von ElevenLabs zu Ihrer Zulassungsliste hinzufügen. Die vollständige Liste der IP-Adressen finden Sie unter IP-Zulassungslisten.
Die Verwendung einer IP-Zulassungsliste zusammen mit der HMAC-Signaturvalidierung bietet mehrere Sicherheitsebenen.
Webhook-Überschreibungen pro Agent
Standardmäßig verwenden alle Agents in Ihrem Workspace den in Ihren Workspace-Einstellungen konfigurierten Webhook. Sie können dies pro Agent überschreiben, um Daten nach Anrufende 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.
Die post_call_webhook_id muss auf einen Webhook verweisen, der bereits in Ihrem Workspace vorhanden ist. Mit dem Array events können Sie auch angeben, welche Ereignistypen gesendet werden sollen:
Struktur der Webhook-Antwort
ElevenLabs sendet drei unterschiedliche Arten von Webhooks nach Anrufende, 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 oben aufgeführten Felder. Sie enthalten KEINE Transkriptionsdaten, Metadaten, Analyseergebnisse oder andere Gesprächsdetails.
Webhooks bei fehlgeschlagener Anrufinitiierung (call_initiation_failure)
Enthalten Informationen über Versuche zur Initiierung von Telefonanrufen, 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 ausgehenden Anrufen über Twilio wird failure_reason vom Twilio-CallStatus abgeleitet: busy und no-answer werden unverändert übernommen, und failed wird als unknown gemeldet. Bei anderen Twilio-Anrufstatus wird kein Webhook bei fehlgeschlagener Anrufinitiierung gesendet.
Struktur des Metadatenobjekts
Die Struktur des Objekts metadata variiert je nachdem, ob der ausgehende Anruf über Twilio oder SIP-Trunking getätigt wurde. Das Objekt enthält ein Feld type, das zwischen 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 einzelnen 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 Audiozustellungen nach demselben Zeitplan wie Transkriptions-Webhooks wiederholt. Bei einer Wiederholung wird die vollständige Audio-Payload erneut gesendet. Deduplizieren Sie daher anhand von conversation_id. Informationen zu Zeitplan, wiederholbaren Fehlern und Audiogrößenlimits finden Sie unter Webhook-Wiederholungen.
Audio-Webhooks verarbeiten
Da Audio-Webhooks per 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 ausreichende Speicher- und Speicherkapazität verfügt. Das Audio wird im MP3-Format zugestellt.
Anwendungsfälle
Automatisierte Nachfassaktionen nach Anrufen
Webhooks nach Anrufende ermöglichen Ihnen, automatisierte Workflows zu erstellen, die unmittelbar nach Ende eines Anrufs ausgelöst werden. 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 Status 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 basierend auf 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 vorherige Interaktionen “erinnert”.