JavaScript SDK
ElevenAgents SDK: driftsätt anpassade, interaktiva röstassistenter på några minuter.
Installation
Installera paketet i ditt projekt med en pakethanterare.
Uppgraderar du från en tidigare version? Kör npx skills add elevenlabs/packages för att installera
färdigheten elevenlabs:sdk-migration för din AI-kodningsagent, som automatiserar ändringar av importer och
API-uppdateringar.
Användning
Det här biblioteket är främst avsett för utveckling i vanliga JavaScript-projekt, eller som grund för bibliotek anpassade för specifika ramverk. Vi rekommenderar att du kontrollerar om ditt specifika ramverk har ett eget bibliotek. Du kan dock använda det här biblioteket i alla JavaScript-baserade projekt.
Initiera konversation
Skapa först en ny konversationssession med Conversation.startSession:
Detta upprättar en anslutning och börjar använda mikrofonen för att kommunicera med ElevenLabs Agents-agenten. Överväg att förklara och be om mikrofonåtkomst i appens gränssnitt innan du startar konversationen:
Sessionskonfiguration
Alternativen som skickas till startSession anger hur sessionen upprättas. Konversationer kan startas med offentliga eller privata agenter.
Offentliga agenter
Agenter som inte kräver autentisering kan användas för att starta en konversation med agent-ID:t. Agent-ID:t kan hämtas via ElevenLabs-gränssnittet.
För offentliga agenter kan du använda ID:t direkt:
Anslutningstypen härleds automatiskt baserat på konversationsläget. Röstkonversationer
använder WebRTC och konversationer med enbart text använder WebSocket som standard. Du kan fortfarande uttryckligen ange
connectionType: 'webrtc' eller connectionType: 'websocket' vid behov.
Privata agenter
Om konversationen kräver auktorisering måste du lägga till en särskild slutpunkt på din server som antingen begär en signerad URL (om du använder anslutningstypen WebSockets) eller en konversationstoken (om du använder WebRTC) med ElevenLabs API och skickar tillbaka den till klienten.
Här är ett exempel för en WebSocket-anslutning:
Här är ett exempel för WebRTC:
När du har tokenen startar konversationen via WebRTC när du skickar den till startSession.
Valfria callbacks
Alternativen som skickas till startSession kan också användas för att registrera valfria callbacks:
- onConnect - hanterare som anropas när konversationens WebSocket-anslutning har upprättats.
- onDisconnect - hanterare som anropas när konversationens WebSocket-anslutning avslutas.
- onMessage - hanterare som anropas när ett nytt textmeddelande tas emot. Dessa kan vara preliminära eller slutliga transkriberingar av användarens röst eller svar som producerats av LLM. Används främst för att hantera konversationstranskribering.
- onError - hanterare som anropas när ett fel uppstår.
- onStatusChange - hanterare som anropas när anslutningsstatusen ändras. Kan vara
connected,connectingochdisconnected(initialt). - onModeChange - hanterare som anropas när en status ändras, till exempel när agenten växlar från
speakingtilllistening, eller tvärtom. - onCanSendFeedbackChange - hanterare som anropas när det blir möjligt eller omöjligt att skicka feedback.
- onAudioAlignment - hanterare som anropas när ljudjusteringsdata tas emot och ger tidsinformation på teckennivå för agentens tal.
Alla klienthändelser är inte aktiverade som standard för en agent. Om du har aktiverat en callback men inte ser att några händelser kommer fram ska du kontrollera att din ElevenLabs-agent har motsvarande händelse aktiverad. Du kan göra detta på fliken “Advanced” i agentinställningarna i ElevenLabs-instrumentpanelen.
Returvärde
startSession returnerar en konversationsinstans (VoiceConversation eller TextConversation beroende på läge) som kan användas för att styra sessionen. Metoden utlöser ett fel om sessionen inte kan upprättas. Detta kan hända om användaren nekar mikrofonåtkomst eller om anslutningen misslyckas.
endSession
En metod för att avsluta konversationen manuellt. Metoden avslutar konversationen och kopplar från WebSocket. Därefter går konversationsinstansen inte att använda och kan utan problem kasseras.
getId
En metod som returnerar konversations-ID:t.
setVolume
En metod för att ställa in konversationens utgående volym. Tar emot ett objekt med ett volymfält mellan 0 och 1.
getInputVolume / getOutputVolume
Metoder som returnerar aktuell in- respektive utvolym på en skala från 0 till 1, där 0 är -100 dB och 1 är -30 dB.
sendFeedback
En metod för att skicka binär feedback till agenten. Metoden tar emot ett booleskt värde, där true representerar positiv feedback och false negativ feedback.
Feedback kopplas alltid till agentens senaste svar och kan endast skickas en gång per svar.
Du kan lyssna på onCanSendFeedbackChange för att veta om feedback kan skickas vid tillfället.
sendContextualUpdate
En metod för att skicka kontextuella uppdateringar till agenten. Detta kan användas för att informera agenten om användaråtgärder som inte är direkt relaterade till konversationen, men som kan påverka agentens svar.
sendUserMessage
Skickar ett textmeddelande till agenten.
Kan användas för att låta användaren skriva meddelandet i stället för att använda mikrofonen. Till skillnad från sendContextualUpdate behandlas detta som ett användarmeddelande och uppmanar agenten att ta sin tur i konversationen.
sendUserActivity
Meddelar agenten om användaraktivitet.
Agenten försöker inte tala under minst 2 sekunder efter att användaraktivitet har upptäckts.
Detta kan användas för att hindra agenten från att avbryta användaren när hen skriver.
setMicMuted
En metod för att stänga av eller slå på mikrofonen.
changeInputDevice
Gör det möjligt att ändra ljudinmatningsenhet under en aktiv röstkonversation. Den här metoden är endast tillgänglig för röstkonversationer.
I WebRTC-läge är inmatningsformatet och samplingsfrekvensen hårdkodade till respektive pcm och 48000.
Att ändra dessa värden när du byter inmatningsenhet har ingen effekt.
Om enhets-ID:t är ogiltigt används standardenheten i stället.
changeOutputDevice
Gör det möjligt att ändra ljudutmatningsenhet under en aktiv röstkonversation. Den här metoden är endast tillgänglig för röstkonversationer.
I WebRTC-läge är utmatningsformatet och samplingsfrekvensen hårdkodade till respektive pcm och 48000.
Att ändra dessa värden när du byter utmatningsenhet har ingen effekt.
Enhetsbyte fungerar endast för röstkonversationer. Om inget specifikt deviceId anges använder
webbläsaren sitt standardval av enhet. Du kan lista tillgängliga enheter med
MediaDevices.enumerateDevices()
API:t.
getInputByteFrequencyData / getOutputByteFrequencyData
Metoder som returnerar Uint8Array:er med aktuell frekvensdata för in- respektive utmatning. Se AnalyserNode.getByteFrequencyData för mer information.
Dessa metoder är endast tillgängliga för röstkonversationer. I WebRTC-läge är ljudet hårdkodat att
använda pcm_48000, vilket innebär att visualiseringar som använder den returnerade datan kan visa andra mönster
än WebSocket-anslutningar.