React SDK
ElevenAgents SDK: driftsätt anpassade, interaktiva röstassistenter på några minuter.
Se översikten över ElevenAgents för en förklaring av hur ElevenAgents fungerar.
Installation
Installera paketet i ditt projekt via 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,
omslutning med ConversationProvider och API-uppdateringar.
@elevenlabs/react återexporterar allt från @elevenlabs/client, så du behöver inte installera
båda paketen.
Användning
Här är ett minimalt fungerande exempel som ansluter till en agent och låter användaren starta och avsluta en röstkonversation:
Avsnitten nedan förklarar varje del i detalj.
ConversationProvider
Alla konversations-hooks måste användas i en ConversationProvider. Omslut din app (eller relevant delträd) med denna provider.
Provider-props
Providern accepterar samma alternativ som useConversation — inklusive callbacks, klientverktyg, åsidosättningar och serverplats — så att du kan konfigurera dem på provider-nivå i stället för i varje hook-konsument.
Kontrollerad avstängningsstatus
Providern stöder propsen isMuted och onMutedChange för hantering av kontrollerad avstängningsstatus, så att du kan spara avstängningsstatus externt (t.ex. mellan sessioner).
useConversation
En praktisk React-hook som kombinerar alla detaljerade hooks till ett enda returvärde. Kräver en överordnad ConversationProvider.
För bättre renderingsprestanda bör du överväga att använda detaljerade hooks i stället.
useConversation utlöser en omrendering vid alla statusändringar, medan de detaljerade hooks endast
omrenderar när deras specifika del av statusen ändras.
Initiera konversation
Observera att ElevenAgents kräver mikrofonåtkomst för röstkonversationer. Överväg att förklara detta och bevilja åtkomst i appens gränssnitt innan konversationen startar.
Alternativ
Hooken kan valfritt initieras med alternativ. De kan också skickas på ConversationProvider-nivå.
Alternativen omfattar:
- clientTools - objektdefinition för klientverktyg som kan anropas av agenten. Se nedan för mer information.
- overrides - objektdefinition för åsidosättningar av konversationsinställningar. Se nedan för mer information.
- textOnly - om konversationen ska köras i läget endast text. Se nedan för mer information.
- serverLocation - anger serverplatsen (
"us","eu-residency","in-residency","global"). Standardvärdet är"us".
Översikt över callbacks
- onConnect - hanterare som anropas när konversationsanslutningen har upprättats.
- onDisconnect - hanterare som anropas när konversationsanslutningen avslutas.
- onMessage - hanterare som anropas när ett nytt meddelande tas emot. Det kan vara preliminära eller slutliga transkriberingar av användarens röst, svar från LLM eller felsökningsmeddelanden när ett felsökningsalternativ är aktiverat.
- onError - hanterare som anropas när ett fel uppstår.
- onAudio - hanterare som anropas när ljuddata tas emot.
- onModeChange - hanterare som anropas när konversationsläget ändras (talar/lyssnar).
- onStatusChange - hanterare som anropas när anslutningsstatusen ändras.
- onCanSendFeedbackChange - hanterare som anropas när möjligheten att skicka feedback ändras.
- onDebug - hanterare som anropas när felsökningsinformation är tillgänglig.
- onUnhandledClientToolCall - hanterare som anropas när ett ohanterat anrop av ett klientverktyg påträffas.
- onVadScore - hanterare som anropas när poängen för röstaktivitetsdetektering ändras.
- onAudioAlignment - hanterare som anropas när ljudjusteringsdata tas emot och ger tidsinformation på teckennivå för agentens tal.
- onAgentChatResponsePart - hanterare som anropas med agentens svarstext när den genereras, som start-, delta- och stopphändelser. Skickas alltid i läget endast text. För röstkonversationer aktiverar du
agent_chat_response_parti agentensclient_events-konfiguration.
Klientverktyg
Klientverktyg gör det möjligt för agenten att anropa funktionalitet på klientsidan. De kan användas för att utlösa åtgärder i klienten, som att öppna en modal eller göra ett API-anrop åt användaren.
Definitionen av klientverktyg är ett objekt med funktioner och måste vara identisk med din konfiguration i ElevenLabs UI, där du kan namnge och beskriva olika verktyg samt konfigurera parametrarna som skickas av agenten.
Om funktionen returnerar ett värde skickas det tillbaka till agenten som ett svar.
Verktyget måste uttryckligen ställas in för att blockera konversationen i ElevenLabs UI så att agenten kan invänta och reagera på svaret. Annars förutsätter agenten att åtgärden lyckades och fortsätter konversationen.
För ett mer React-anpassat sätt att registrera klientverktyg, se useConversationClientTool.
Åsidosättningar av konversationer
Du kan välja att åsidosätta olika inställningar för konversationen och ange dem dynamiskt baserat på andra användarinteraktioner.
Vi stöder åsidosättning av olika inställningar. Dessa inställningar är valfria och kan användas för att anpassa konversationsupplevelsen.
Följande inställningar är tillgängliga:
Endast text
Om din agent är konfigurerad för att köras i läget endast text, dvs. inte skickar eller tar emot ljudmeddelanden, kan du använda denna flagga för att använda en lättare version av konversationen. I så fall ombeds användaren inte om mikrofonbehörighet och inget ljudkontext skapas.
Kontrollerad status
Du kan styra vissa delar av konversationsstatusen direkt via hook-alternativen:
Dataresidens
Du kan ange vilken ElevenLabs-serverregion som ska anslutas till. Mer information finns i guiden för dataresidens.
Metoder
startSession
Metoden startSession upprättar anslutningen och börjar använda mikrofonen för att kommunicera med ElevenLabs Agents-agenten. Metoden accepterar ett alternativobjekt, där signedUrl, conversationToken eller agentId krävs.
Agent-ID:t kan hämtas via ElevenLabs UI.
Vi rekommenderar också att du skickar med dina egna slutanvändar-ID:n för att koppla konversationer till dina användare.
Anslutningstypen härleds automatiskt utifrån konversationsläget. Röstkonversationer
använder WebRTC och konversationer med endast text använder WebSocket som standard. Du kan fortfarande uttryckligen ange
connectionType vid behov.
För offentliga agenter (dvs. agenter utan aktiverad autentisering) krävs endast agentId.
Om konversationen kräver auktorisering använder du REST API:t för att generera signerade länkar för en WebSocket-anslutning eller en konversationstoken för en WebRTC-anslutning.
startSession returnerar ett löfte som löses till ett conversationId. Värdet är ett globalt unikt konversations-ID som du kan använda för att identifiera separata konversationer.
WebSocket-anslutning
WebRTC-anslutning
endSession
En metod för att manuellt avsluta konversationen. Metoden kopplar från och avslutar konversationen.
setVolume
Ställer in konversationens utgående volym. Accepterar ett objekt med fältet volume mellan 0 och 1.
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.
sendContextualUpdate
Skickar kontextinformation till agenten utan att utlösa ett svar.
sendFeedback
Ge feedback om konversationens kvalitet. Det hjälper till att förbättra agentens prestanda.
sendUserActivity
Meddelar agenten om användaraktivitet för att förhindra avbrott. Användbart när användaren aktivt använder appen och agenten bör pausa talet, t.ex. när användaren skriver i en chatt.
Agenten pausar talet i cirka 2 sekunder efter att ha tagit emot denna signal.
changeInputDevice
Byt ljudinmatningsenhet under en aktiv röstkonversation. Denna metod är endast tillgänglig för röstkonversationer.
changeOutputDevice
Byt ljudutmatningsenhet under en aktiv röstkonversation. Denna metod är endast tillgänglig för röstkonversationer.
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
API:t MediaDevices.enumerateDevices().
getId
Returnerar det aktuella konversations-ID:t.
getInputVolume / getOutputVolume
Metoder som returnerar aktuella volymnivåer för inmatning/utmatning (skala 0–1).
getInputByteFrequencyData / getOutputByteFrequencyData
Metoder som returnerar Uint8Array:er som innehåller aktuella frekvensdata för inmatning/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 för att
använda pcm_48000, vilket innebär att visualiseringar som använder returnerade data kan visa andra mönster
än WebSocket-anslutningar.
sendMCPToolApprovalResult
Skickar godkännanderesultat för MCP-verktygsanrop (Model Context Protocol).
Returvärden
Utöver metoderna ovan returnerar useConversation följande reaktiva status:
- status - aktuell anslutningsstatus (
"disconnected","connecting","connected"). - isSpeaking - om agenten talar just nu.
- isListening - om agenten lyssnar just nu.
- mode - aktuellt konversationsläge (
"speaking"eller"listening"). - isMuted - om mikrofonen är avstängd just nu.
- setMuted - funktion för att stänga av/slå på mikrofonen.
- canSendFeedback - om feedback kan skickas för den aktuella konversationen.
- message - det senaste meddelandet från konversationen.
Detaljerade hooks
För bättre renderingsprestanda använder du dessa hooks i stället för useConversation. Varje hook prenumererar endast på sin specifika del av statusen, så komponenter omrenderas bara när data som de använder ändras.
Alla detaljerade hooks kräver en överordnad ConversationProvider.
useConversationControls
Returnerar åtgärdsmetoder för att styra konversationen. Denna hook orsakar inga omrenderingar eftersom den endast tillhandahåller stabila funktionsreferenser.
useConversationStatus
Returnerar aktuell anslutningsstatus och ett valfritt statusmeddelande.
useConversationInput
Returnerar avstängningsstatus och en setter för att slå på eller stänga av mikrofonen.
useConversationMode
Returnerar tal-/lyssningsstatus för agenten.
useConversationFeedback
Returnerar feedbacktillgänglighet och en metod för att skicka feedback.
useRawConversation
Returnerar den råa konversationsinstansen. Detta är en reservutväg för avancerade användningsfall där du behöver direkt åtkomst till det underliggande objektet VoiceConversation eller TextConversation.
useConversationClientTool
En hook för att dynamiskt registrera klientverktyg från React-komponenter. Verktyg avregistreras automatiskt när komponenten avmonteras.
Detta är användbart när ett verktygs hanterare behöver åtkomst till komponentstatus eller props som inte är tillgängliga på provider-nivå.
Hooken använder alltid hanterarens senaste closure-värde, så du behöver inte oroa dig för inaktuell status.