Voximplant
L’integrazione con Voximplant è disponibile in misura limitata e viene abilitata per workspace. Contatta il tuo referente ElevenLabs prima di instradare il traffico dei clienti.
Panoramica
L’integrazione con Voximplant collega direttamente una chiamata in uno scenario VoxEngine a un agente in ElevenAgents tramite WebSocket, usando Voximplant Media Streams. Voximplant gestisce la telefonia: effettua o risponde alla chiamata e decide cosa succede dopo. ElevenAgents gestisce la conversazione. Non sono richiesti trunk SIP né middleware.
Le chiamate in entrata e in uscita funzionano allo stesso modo: una volta connessa la chiamata, lo scenario apre un WebSocket per chiamata verso ElevenLabs. Al termine della conversazione, ElevenLabs invia allo scenario un singolo evento decisionale che indica se trasferire il chiamante a un operatore, riagganciare o considerare la chiamata come un timeout.
Come funziona l’integrazione
- Il tuo scenario VoxEngine risponde a una chiamata in entrata o ne effettua una in uscita.
- Lo scenario apre un WebSocket verso l’endpoint ElevenLabs del tuo agente, autenticandosi con una chiave API ElevenLabs come bearer token.
- Lo scenario avvia il flusso multimediale con
call.sendMediaTo(), passando eventualicustomParameters. ElevenLabs trasforma ogni parametro in una variabile dinamica e risponde con il propriostart. - Voximplant ed ElevenLabs scambiano audio PCM lineare a 16 bit e 8 kHz in messaggi
media. - Al termine della conversazione, ElevenLabs invia il resto dell’ultima frase dell’agente, un
evento personalizzato
elevenlabs-decisione un messaggiostop. Lo scenario chiude quindi il WebSocket e agisce in base alla decisione.
Requisiti
Prima di iniziare, assicurati di avere:
- Un account Voximplant con un’applicazione, un numero di telefono o la possibilità di effettuare chiamate in uscita e l’autorizzazione a modificare gli scenari.
- Un workspace ElevenLabs con l’integrazione Voximplant abilitata.
- Un agente ElevenLabs e una chiave API dedicata.
Configura ElevenLabs
Crea o seleziona un agente
Crea l’agente in ElevenAgents. Imposta un primo messaggio se deve parlare non appena la chiamata si connette. I formati audio sono impostati dall’integrazione, quindi i formati configurati dell’agente non vengono usati per le chiamate Voximplant.
Abilita Termina chiamata
In Agente → Strumenti → Strumenti di sistema, abilita Termina chiamata affinché l’agente possa concludere la conversazione. Il motivo fornito dall’agente quando termina la chiamata viene inviato al tuo scenario insieme alla decisione.
Aggiungi una regola di trasferimento Voximplant (facoltativo)
Per consentire all’agente di trasferire il chiamante a un operatore, assegnagli lo strumento di sistema Trasferisci a numero con una
regola di trasferimento la cui configurazione del provider sia voximplant. La regola non ha destinazione: la
conversazione termina con una decisione transfer-to-agent e il tuo scenario instrada il chiamante. Le regole di trasferimento
vengono configurate tramite l’API. Aggiungi lo strumento con un PATCH sull’agente:
Invia l’intero oggetto built_in_tools dell’agente, inclusi gli strumenti che possiede già, come end_call.
L’opzione che l’agente restituisce è il token fisso voximplant, quindi è sufficiente una regola Voximplant per strumento.
I numeri di telefono e gli URI SIP configurati per altri provider non vengono offerti nelle chiamate Voximplant.
Le regole di trasferimento sono un’impostazione gestita tramite API. Configura e aggiorna lo strumento Trasferisci a numero di un agente che le usa tramite l’API, come sopra; l’editor degli strumenti nella dashboard funziona con l’elenco di trasferimento per numero.
Crea una chiave API dedicata
Crea una chiave API nello stesso workspace dell’agente e limitane l’ambito a ElevenAgents. Per accettare
connessioni soltanto da Voximplant, limita gli indirizzi IP consentiti della chiave ai server multimediali Voximplant,
elencati da Voximplant all’indirizzo
https://api.voximplant.com/getMediaResources?with_mediaservers.
Annota l'URL WebSocket
Lo scenario si connette a un URL che contiene l’ID del tuo agente:
Per fissare un branch dell’agente, aggiungi ?branch_id=<branch_id>.
Se il tuo account ElevenLabs si trova in un ambiente di residenza isolato, sostituisci <region> con il codice della tua
regione. Consulta la pagina sulla residenza dei dati per le regioni
disponibili.
Configura Voximplant
Crea un'applicazione
Nel pannello di controllo Voximplant, apri Applications
e fai clic su Create application. Assegnale un nome, ad esempio elevenlabs-agent, quindi fai clic su
Create.

Salva la chiave API come segreto
Nell’applicazione, apri Secrets e fai clic su Add secret. Assegna il nome ELEVENLABS_API_KEY, incolla
in Value la chiave API creata per il workspace dell’agente e fai clic su Add secret. Lo
scenario la legge con VoxEngine.getSecretValue(), quindi la chiave non appare mai nel codice dello scenario.

Crea lo scenario
Apri Scenarios, fai clic su Create scenario, chiamalo elevenlabs_agent, incolla il codice qui sotto,
sostituisci l’ID dell’agente in ELEVENLABS_URL e fai clic su Save. Risponde a una chiamata in entrata, la trasmette
all’agente e agisce in base alla decisione al termine della conversazione. Per una chiamata in uscita, apri
il WebSocket nel gestore CallEvents.Connected della chiamata effettuata.

Instrada le chiamate allo scenario
Apri Routing, fai clic su Create rule, assegnale un nome e assegna lo scenario elevenlabs_agent.
Il pattern predefinito .* invia ogni chiamata all’applicazione tramite lo scenario;
limitalo a un numero di telefono se l’applicazione gestisce anche altre chiamate. Per instradare un numero di telefono,
collegalo all’applicazione in Numbers.

Effettua una chiamata di prova
Puoi chiamare l’applicazione dal browser senza un numero di telefono:
-
Apri Users, fai clic su Create user e crea un utente con una password.

-
In Routing, fai clic su Test tools, poi su Softphone. Accedi come quell’utente, consenti l’accesso al microfono, inserisci una destinazione qualsiasi e chiama. L’agente risponde con il suo primo messaggio.
-
Al termine della chiamata, apri Call history. Ogni chiamata elenca una sessione WebSocket accanto alla chiamata stessa. Fai clic su View log per visualizzare la sessione.

Il log mostra la decisione inviata da ElevenLabs, la chiusura del WebSocket e cosa ha fatto poi lo scenario. In questo esempio il chiamante ha chiesto di parlare con una persona, quindi la decisione è
transfer-to-agentcon il motivo fornito dall’agente.
Agisci in base all’evento elevenlabs-decision, non a MEDIA_ENDED. Voximplant attiva MEDIA_ENDED dopo
circa un secondo senza audio da ElevenLabs, cosa che può accadere nel mezzo di una conversazione.
Variabili dinamiche
Ogni chiave in customParameters diventa una variabile dinamica con lo stesso nome. I valori che non sono
stringhe vengono convertiti in testo, ad esempio true diventa "true". customParameters può essere un
oggetto o una stringa codificata in JSON. Le chiavi che iniziano con system__ o integration__ sono riservate e
vengono ignorate.
Eventi decisionali
Al termine della conversazione, ElevenLabs invia esattamente una decisione prima del messaggio stop:
Se lo scenario invia prima stop o chiude il WebSocket, ad esempio perché il chiamante ha riagganciato,
ElevenLabs non invia alcuna decisione.
Audio
Voximplant ed ElevenLabs scambiano PCM lineare mono a 16 bit e 8 kHz in entrambe le direzioni. ElevenLabs riproduce l’audio dell’agente a un ritmo vicino al tempo reale, quindi quando il chiamante interrompe l’agente, vengono ancora riprodotti al massimo circa 0,4 secondi della risposta interrotta.
Errori di autenticazione
ElevenLabs chiude il WebSocket con codice 1008 e motivo bad auth token quando l’header
Authorization è assente o non valido, la chiave API non è valida o non è consentita dall’indirizzo IP di
connessione, la chiave appartiene a un altro workspace oppure l’utente della chiave non può accedere a un
agente con l’autenticazione abilitata.
Limitazioni e funzionalità non supportate
- Gli strumenti client e lo strumento di sistema Riproduci tono tastiera non sono supportati. Trasferisci a numero funziona soltanto tramite una regola di trasferimento Voximplant; lo scenario decide dove inviare il chiamante.
- Gli override di configurazione, come un primo messaggio diverso, non possono essere passati dallo scenario; sono possibili soltanto le variabili dinamiche.
- I risultati della raccolta dati non vengono inviati allo scenario. Usa il webhook post-chiamata per ottenerli.