Webhook post-chiamata
Ricevi notifiche tramite webhook quando le chiamate terminano e l’analisi è completata.
Panoramica
I webhook post-chiamata ti consentono di ricevere informazioni dettagliate su una chiamata dopo il completamento dell’analisi. Quando sono abilitati, ElevenLabs invierà una richiesta POST all’endpoint specificato con dati completi sulla chiamata.
ElevenLabs supporta tre tipi di webhook post-chiamata:
- Webhook di trascrizione (
post_call_transcription): contengono dati completi della conversazione, incluse trascrizioni, risultati dell’analisi e metadati - Webhook audio (
post_call_audio): contengono dati minimi con l’audio dell’intera conversazione codificato in base64 - Webhook per l’errore di avvio della chiamata (
call_initiation_failure): contengono informazioni sui tentativi di avvio della chiamata non riusciti, inclusi motivi dell’errore e metadati
Abilitare i webhook post-chiamata
Puoi abilitare i webhook post-chiamata per tutti gli agenti del tuo workspace dalla pagina delle impostazioni di ElevenAgents.

Per essere considerati riusciti, i webhook post-chiamata devono restituire un codice di stato 200. I webhook che non riescono ripetutamente vengono disabilitati automaticamente se si verificano 10 o più errori consecutivi e l’ultima consegna riuscita risale a più di 7 giorni fa o non è mai stata completata con successo.
I webhook post-chiamata possono essere ritentati automaticamente in caso di errore. Consulta i nuovi tentativi dei webhook .
Autenticazione
È importante che il listener convalidi tutti i webhook in arrivo. I webhook supportano attualmente l’autenticazione tramite firme HMAC. Configura l’autenticazione HMAC:
- Archiviando in modo sicuro il segreto condiviso generato alla creazione del webhook
- Verificando l’header ElevenLabs-Signature nel tuo endpoint tramite l’SDK
L’SDK JavaScript espone constructEvent; l’SDK Python espone construct_event con rawBody, sig_header e secret (in Python non si chiamano payload / signature). Entrambi verificano la firma, convalidano il timestamp e analizzano il payload JSON.
Python
JavaScript
Esempio di gestore webhook con FastAPI:
Allowlist di IP
Per una maggiore sicurezza, puoi aggiungere gli IP di uscita statici di ElevenLabs alla tua allowlist. Consulta l’allowlist di IP per l’elenco completo degli indirizzi IP.
L’uso di un’allowlist di IP insieme alla convalida della firma HMAC offre più livelli di sicurezza.
Struttura della risposta webhook
ElevenLabs invia tre tipi distinti di webhook post-chiamata, ciascuno con strutture dati diverse:
Webhook di trascrizione (post_call_transcription)
Contiene dati completi sulla conversazione, inclusi trascrizioni complete, risultati dell’analisi e metadati.
Campi di primo livello
Struttura dell’oggetto data
L’oggetto data contiene:
Webhook audio (post_call_audio)
Contiene dati minimi e l’audio completo della conversazione come MP3 codificato in base64.
Campi di primo livello
Struttura dell’oggetto data
L’oggetto data contiene solo:
I webhook audio contengono solo i tre campi elencati sopra. NON includono dati di trascrizione, metadati, risultati dell’analisi o altri dettagli della conversazione.
Webhook per errori di avvio della chiamata (call_initiation_failure)
Contiene informazioni sui tentativi di avvio delle chiamate telefoniche, incluse le ragioni dell’errore e i metadati del provider di telefonia.
Gli eventi webhook per errori di avvio della chiamata vengono inviati quando una chiamata non riesce ad avviarsi a causa di errori di connessione, del rifiuto della chiamata da parte dell’utente o perché l’utente non risponde. Se una chiamata viene inoltrata alla segreteria telefonica o viene risposta da un servizio automatizzato, non viene inviato alcun webhook per errore di avvio, poiché la chiamata è stata avviata correttamente.
Campi di primo livello
Struttura dell’oggetto data
L’oggetto data contiene:
Struttura dell’oggetto metadata
La struttura dell’oggetto metadata varia a seconda che la chiamata in uscita sia stata effettuata tramite Twilio o trunking SIP. L’oggetto include un campo type che distingue tra i due e un campo body contenente dettagli specifici del provider.
Metadati SIP (type: "sip"):
L’oggetto body per i metadati SIP contiene:
Metadati Twilio (type: "twilio"):
Esempi di payload webhook
Esempio di webhook di trascrizione
Esempio di webhook audio
Esempi di webhook per errori di avvio della chiamata
Esempio di metadati Twilio
Esempio di metadati SIP
Consegna dei webhook audio
I webhook audio vengono inviati separatamente dai webhook di trascrizione e contengono solo i campi essenziali per identificare la conversazione, insieme ai dati audio codificati in base64.
Puoi abilitare o disabilitare i webhook audio usando l’interruttore “Invia dati audio” nelle impostazioni del webhook. Puoi configurare questa impostazione sia a livello di workspace (nelle impostazioni di ElevenAgents) sia a livello di agente (negli override webhook dei singoli agenti).
Consegna in streaming
I webhook audio vengono inviati come richieste HTTP in streaming con l’header transfer-encoding: chunked per gestire in modo efficiente file audio di grandi dimensioni. Ogni richiesta scade dopo 5 minuti.
Nuovi tentativi
Quando i nuovi tentativi sono abilitati sul webhook, le consegne audio non riuscite vengono ritentate con la stessa pianificazione dei webhook di trascrizione. Un nuovo tentativo invia di nuovo l’intero payload audio, quindi rimuovi i duplicati in base a conversation_id. Consulta nuovi tentativi dei webhook per la pianificazione, gli errori per cui è possibile eseguire un nuovo tentativo e i limiti delle dimensioni audio.
Elaborare i webhook audio
Poiché i webhook audio vengono inviati tramite codifica di trasferimento chunked, devi gestire correttamente i dati in streaming:
I webhook audio possono essere file di grandi dimensioni, quindi assicurati che il tuo endpoint webhook possa gestire richieste in streaming e disponga di capacità di memoria/archiviazione sufficienti. L’audio viene inviato in formato MP3.
Casi d’uso
Follow-up automatici delle chiamate
I webhook post-chiamata ti consentono di creare workflow automatizzati che si attivano subito dopo la fine di una chiamata. Ecco alcune applicazioni pratiche:
Integrazione CRM
Aggiorna il tuo sistema di gestione delle relazioni con i clienti con i dati della conversazione non appena una chiamata si conclude:
Conversazioni con stato
Mantieni il contesto della conversazione tra più interazioni archiviando e recuperando lo stato:
- All’avvio di una chiamata, passa il tuo ID utente come variabile dinamica.
- Al termine di una chiamata, configura l’endpoint webhook in modo che archivi i dati della conversazione nel database in base all’ID utente estratto da dynamic_variables.
- Quando l’utente richiama, puoi recuperare questo contesto e passarlo alla nuova conversazione in una variabile dinamica {{previous_topics}}.
- In questo modo crei un’esperienza fluida in cui l’agente “ricorda” le interazioni precedenti.