SDK JavaScript
SDK ElevenAgents: distribuisci agenti vocali interattivi e personalizzati in pochi minuti.
Installazione
Installa il pacchetto nel tuo progetto tramite un package manager.
Stai eseguendo l’upgrade da una versione precedente? Esegui npx skills add elevenlabs/packages per installare la
skill elevenlabs:sdk-migration per il tuo agente di coding IA, che automatizza le modifiche agli import e gli
aggiornamenti dell’API.
Utilizzo
Questa libreria è pensata principalmente per lo sviluppo in progetti JavaScript vanilla o come base per librerie adattate a framework specifici. Ti consigliamo di verificare se il tuo framework specifico dispone di una propria libreria. Tuttavia, puoi usare questa libreria in qualsiasi progetto basato su JavaScript.
Inizializza una conversazione
Per prima cosa, crea una nuova sessione di conversazione con Conversation.startSession:
Verrà stabilita una connessione e verrà avviato l’uso del microfono per comunicare con l’agente ElevenLabs Agents. Prima di avviare la conversazione, valuta di spiegare e consentire l’accesso al microfono nell’interfaccia della tua app:
Configurazione della sessione
Le opzioni passate a startSession specificano come viene stabilita la sessione. Le conversazioni possono essere avviate con agenti pubblici o privati.
Agenti pubblici
Gli agenti che non richiedono autenticazione possono essere usati per avviare una conversazione tramite l’ID dell’agente. Puoi ottenere l’ID dell’agente tramite l’interfaccia di ElevenLabs.
Per gli agenti pubblici, puoi usare direttamente l’ID:
Il tipo di connessione viene dedotto automaticamente in base alla modalità della conversazione. Le conversazioni vocali
usano WebRTC e quelle solo testuali usano WebSocket per impostazione predefinita. Se necessario, puoi comunque specificare esplicitamente
connectionType: 'webrtc' o connectionType: 'websocket'.
Agenti privati
Se la conversazione richiede autorizzazione, dovrai aggiungere al server un endpoint dedicato che richieda un URL firmato (se usi il tipo di connessione WebSockets) oppure un token di conversazione (se usi WebRTC) tramite l’API di ElevenLabs, quindi lo restituisca al client.
Ecco un esempio per una connessione WebSocket:
Ecco un esempio per WebRTC:
Una volta ottenuto il token, passarlo a startSession avvierà la conversazione tramite WebRTC.
Callback facoltativi
Le opzioni passate a startSession possono essere usate anche per registrare callback facoltativi:
- onConnect - handler chiamato quando viene stabilita la connessione WebSocket della conversazione.
- onDisconnect - handler chiamato quando termina la connessione WebSocket della conversazione.
- onMessage - handler chiamato quando viene ricevuto un nuovo messaggio di testo. Può trattarsi di trascrizioni provvisorie o finali della voce dell’utente, oppure di risposte prodotte dall’LLM. Viene usato principalmente per gestire la trascrizione della conversazione.
- onError - handler chiamato quando si verifica un errore.
- onStatusChange - handler chiamato ogni volta che cambia lo stato della connessione. Può essere
connected,connectingodisconnected(iniziale). - onModeChange - handler chiamato quando cambia uno stato, ad esempio quando l’agente passa da
speakingalisteningo viceversa. - onCanSendFeedbackChange - handler chiamato quando l’invio di feedback diventa disponibile o non disponibile.
- onAudioAlignment - handler chiamato quando vengono ricevuti dati di allineamento audio, che forniscono informazioni temporali a livello di carattere per il parlato dell’agente.
Non tutti gli eventi client sono abilitati per impostazione predefinita per un agente. Se hai abilitato un callback ma non ricevi eventi, assicurati che il tuo agente ElevenLabs abbia abilitato l’evento corrispondente. Puoi farlo nella scheda “Advanced” delle impostazioni dell’agente nella dashboard di ElevenLabs.
Valore restituito
startSession restituisce un’istanza di conversazione (VoiceConversation o TextConversation a seconda della modalità) che può essere usata per controllare la sessione. Il metodo genera un errore se non è possibile stabilire la sessione. Ciò può accadere se l’utente nega l’accesso al microfono o se la connessione non riesce.
endSession
Un metodo per terminare manualmente la conversazione. Il metodo termina la conversazione e disconnette dal WebSocket. Successivamente, l’istanza della conversazione non sarà più utilizzabile e potrà essere eliminata in sicurezza.
getId
Un metodo che restituisce l’ID della conversazione.
setVolume
Un metodo per impostare il volume di output della conversazione. Accetta un oggetto con un campo volume compreso tra 0 e 1.
getInputVolume / getOutputVolume
Metodi che restituiscono il volume attuale di input/output su una scala da 0 a 1, dove 0 corrisponde a -100 dB e 1 a -30 dB.
sendFeedback
Un metodo per inviare feedback binario all’agente. Il metodo accetta un valore booleano, dove true rappresenta un feedback positivo e false un feedback negativo.
Il feedback è sempre associato alla risposta più recente dell’agente e può essere inviato una sola volta per risposta.
Puoi ascoltare onCanSendFeedbackChange per sapere se è possibile inviare feedback in un determinato momento.
sendContextualUpdate
Un metodo per inviare aggiornamenti contestuali all’agente. Può essere usato per informare l’agente sulle azioni dell’utente che non sono direttamente correlate alla conversazione, ma che possono influenzare le risposte dell’agente.
sendUserMessage
Invia un messaggio di testo all’agente.
Può essere usato per consentire all’utente di digitare il messaggio anziché usare il microfono. A differenza di sendContextualUpdate, verrà trattato come un messaggio dell’utente e inviterà l’agente a prendere il proprio turno nella conversazione.
sendUserActivity
Notifica all’agente l’attività dell’utente.
L’agente non tenterà di parlare per almeno 2 secondi dopo il rilevamento dell’attività dell’utente.
Può essere usato per evitare che l’agente interrompa l’utente mentre sta digitando.
setMicMuted
Un metodo per attivare o disattivare l’audio del microfono.
changeInputDevice
Ti consente di cambiare il dispositivo di input audio durante una conversazione vocale attiva. Questo metodo è disponibile solo per le conversazioni vocali.
In modalità WebRTC, il formato di input e la frequenza di campionamento sono impostati rispettivamente su pcm e 48000.
Modificare questi valori quando cambi il dispositivo di input non ha alcun effetto.
Se l’ID del dispositivo non è valido, verrà usato il dispositivo predefinito.
changeOutputDevice
Ti consente di cambiare il dispositivo di output audio durante una conversazione vocale attiva. Questo metodo è disponibile solo per le conversazioni vocali.
In modalità WebRTC, il formato di output e la frequenza di campionamento sono impostati rispettivamente su pcm e 48000.
Modificare questi valori quando cambi il dispositivo di output non ha alcun effetto.
Il cambio di dispositivo funziona solo per le conversazioni vocali. Se non viene fornito un deviceId specifico,
il browser userà la selezione del dispositivo predefinita. Puoi elencare i dispositivi disponibili tramite l’API
MediaDevices.enumerateDevices().
getInputByteFrequencyData / getOutputByteFrequencyData
Metodi che restituiscono Uint8Array contenenti i dati di frequenza attuali di input/output. Per ulteriori informazioni, consulta AnalyserNode.getByteFrequencyData.
Questi metodi sono disponibili solo per le conversazioni vocali. In modalità WebRTC, l’audio è impostato per
usare pcm_48000, quindi qualsiasi visualizzazione che usa i dati restituiti potrebbe mostrare schemi diversi
rispetto alle connessioni WebSocket.