React SDK
ElevenAgents SDK: implementeer aangepaste, interactieve spraakagenten in enkele minuten.
Bekijk het ElevenAgents-overzicht voor een uitleg over hoe ElevenAgents werkt.
Installatie
Installeer het pakket in je project via een package manager.
Upgrade je vanaf een eerdere versie? Voer npx skills add elevenlabs/packages uit om de
vaardigheid elevenlabs:sdk-migration voor je AI-codingagent te installeren. Deze automatiseert wijzigingen aan imports,
het wrappen met ConversationProvider en API-updates.
@elevenlabs/react exporteert alles uit @elevenlabs/client opnieuw, dus je hoeft
niet beide pakketten te installeren.
Gebruik
Hier is een minimaal werkend voorbeeld dat verbinding maakt met een agent en de gebruiker een spraakgesprek laat starten en beëindigen:
In de onderstaande secties wordt elk onderdeel uitgebreid uitgelegd.
ConversationProvider
Alle gesprekshooks moeten binnen een ConversationProvider worden gebruikt. Wrap je app (of de relevante substructuur) met deze provider.
Provider-props
De provider accepteert dezelfde opties als useConversation — waaronder callbacks, client tools, overrides en serverlocatie — zodat je ze op providerniveau kunt configureren in plaats van bij elke hookgebruiker.
Beheerde dempingsstatus
De provider ondersteunt de props isMuted en onMutedChange voor beheerd statusbeheer van demping. Zo kun je de dempingsstatus extern bewaren (bijvoorbeeld tussen sessies).
useConversation
Een handige React-hook die alle gedetailleerde hooks combineert in één returnwaarde. Vereist een bovenliggende ConversationProvider.
Gebruik voor betere renderprestaties liever de gedetailleerde hooks.
useConversation veroorzaakt een re-render bij elke statuswijziging, terwijl de gedetailleerde hooks alleen
re-renderen wanneer hun specifieke deel van de status verandert.
Gesprek initialiseren
Houd er rekening mee dat ElevenAgents microfoontoegang vereist voor spraakgesprekken. Overweeg om dit in de UI van je app uit te leggen en toegang toe te staan voordat het gesprek begint.
Opties
De hook kan optioneel met opties worden geïnitialiseerd. Je kunt deze ook doorgeven op het niveau van ConversationProvider.
Opties zijn onder andere:
- clientTools - objectdefinitie voor client tools die door de agent kunnen worden aangeroepen. Bekijk hieronder de details.
- overrides - objectdefinitie voor overrides van gespreksinstellingen. Bekijk hieronder de details.
- textOnly - of het gesprek alleen in tekstmodus moet worden uitgevoerd. Bekijk hieronder de details.
- serverLocation - geef de serverlocatie op (
"us","eu-residency","in-residency","global"). Standaard is dit"us".
Overzicht callbacks
- onConnect - handler die wordt aangeroepen wanneer de gespreksverbinding tot stand is gebracht.
- onDisconnect - handler die wordt aangeroepen wanneer de gespreksverbinding wordt beëindigd.
- onMessage - handler die wordt aangeroepen wanneer een nieuw bericht wordt ontvangen. Dit kunnen voorlopige of definitieve transcripties van de stem van de gebruiker zijn, antwoorden van een LLM of debugberichten wanneer een debugoptie is ingeschakeld.
- onError - handler die wordt aangeroepen wanneer er een fout optreedt.
- onAudio - handler die wordt aangeroepen wanneer audiogegevens worden ontvangen.
- onModeChange - handler die wordt aangeroepen wanneer de gespreksmodus verandert (spreken/luisteren).
- onStatusChange - handler die wordt aangeroepen wanneer de verbindingsstatus verandert.
- onCanSendFeedbackChange - handler die wordt aangeroepen wanneer de mogelijkheid om feedback te verzenden verandert.
- onDebug - handler die wordt aangeroepen wanneer debuginformatie beschikbaar is.
- onUnhandledClientToolCall - handler die wordt aangeroepen wanneer een niet-afgehandelde client-toolaanroep optreedt.
- onVadScore - handler die wordt aangeroepen wanneer de score voor spraakactiviteitsdetectie verandert.
- onAudioAlignment - handler die wordt aangeroepen wanneer audio-uitlijningsgegevens worden ontvangen, met timinginformatie per teken voor de spraak van de agent.
- onAgentChatResponsePart - handler die wordt aangeroepen met de antwoordtekst van de agent terwijl deze wordt gegenereerd, als start-, delta- en stopgebeurtenissen. Wordt altijd verzonden in alleen-tekstmodus; schakel voor spraakgesprekken
agent_chat_response_partin declient_events-configuratie van de agent in.
Client tools
Met client tools kan een agent client-sidefunctionaliteit aanroepen. Je kunt hiermee acties in de client starten, zoals een modal openen of namens de gebruiker een API-aanroep uitvoeren.
De definitie van client tools is een object met functies en moet identiek zijn aan je configuratie in de ElevenLabs UI, waar je verschillende tools kunt benoemen en beschrijven en de parameters kunt instellen die door de agent worden doorgegeven.
Als de functie een waarde retourneert, wordt deze als antwoord teruggestuurd naar de agent.
De tool moet in de ElevenLabs UI expliciet zo worden ingesteld dat deze het gesprek blokkeert, zodat de agent op het antwoord kan wachten en erop kan reageren. Anders gaat de agent uit van succes en vervolgt het gesprek.
Voor een meer React-idiomatische aanpak voor het registreren van client tools, bekijk je useConversationClientTool.
Gespreksoverrides
Je kunt verschillende instellingen van het gesprek overschrijven en deze dynamisch instellen op basis van andere gebruikersinteracties.
We ondersteunen het overschrijven van verschillende instellingen. Deze instellingen zijn optioneel en kunnen worden gebruikt om de gesprekservaring aan te passen.
De volgende instellingen zijn beschikbaar:
Alleen tekst
Als je agent is geconfigureerd om in alleen-tekstmodus te draaien, dat wil zeggen geen audioberichten verzendt of ontvangt, kun je deze flag gebruiken voor een lichtere versie van het gesprek. In dat geval wordt de gebruiker niet om microfoonmachtigingen gevraagd en wordt er geen audiocontext gemaakt.
Beheerde status
Je kunt bepaalde aspecten van de gespreksstatus rechtstreeks beheren via de hookopties:
Dataresidentie
Je kunt opgeven met welke ElevenLabs-serverregio verbinding moet worden gemaakt. Bekijk voor meer informatie de gids voor dataresidentie.
Methoden
startSession
De methode startSession brengt de verbinding tot stand en begint de microfoon te gebruiken om met de ElevenLabs Agents-agent te communiceren. De methode accepteert een optiesobject, waarbij signedUrl, conversationToken of agentId vereist is.
Je kunt de agent-ID verkrijgen via de ElevenLabs UI.
We raden ook aan je eigen eindgebruikers-ID’s door te geven om gesprekken aan je gebruikers te koppelen.
Het verbindingstype wordt automatisch afgeleid op basis van de gespreksmodus. Spraakgesprekken
gebruiken standaard WebRTC en alleen-tekstgesprekken gebruiken WebSocket. Je kunt indien nodig nog steeds expliciet
connectionType opgeven.
Voor public agents (dat wil zeggen agents waarvoor authenticatie niet is ingeschakeld) is alleen agentId vereist.
Als het gesprek autorisatie vereist, gebruik je de REST API om signed links voor een WebSocket-verbinding of een gesprekstoken voor een WebRTC-verbinding te genereren.
startSession retourneert een promise die wordt opgelost met een conversationId. De waarde is een wereldwijd unieke gespreks-ID die je kunt gebruiken om afzonderlijke gesprekken te identificeren.
WebSocket-verbinding
WebRTC-verbinding
endSession
Een methode om het gesprek handmatig te beëindigen. De methode verbreekt en beëindigt het gesprek.
setVolume
Stelt het uitvoervolume van het gesprek in. Accepteert een object met een veld volume tussen 0 en 1.
sendUserMessage
Verstuurt een tekstbericht naar de agent.
Kan worden gebruikt om de gebruiker het bericht te laten typen in plaats van de microfoon te gebruiken. In tegenstelling tot sendContextualUpdate wordt dit behandeld als een gebruikersbericht en zet het de agent aan om zijn beurt in het gesprek te nemen.
sendContextualUpdate
Stuurt contextuele informatie naar de agent die geen reactie activeert.
sendFeedback
Geef feedback over de gesprekskwaliteit. Dit helpt de prestaties van de agent te verbeteren.
sendUserActivity
Brengt de agent op de hoogte van gebruikersactiviteit om onderbrekingen te voorkomen. Handig wanneer de gebruiker de app actief gebruikt en de agent moet stoppen met spreken, bijvoorbeeld wanneer de gebruiker in een chat typt.
De agent stopt na ontvangst van dit signaal ongeveer 2 seconden met spreken.
changeInputDevice
Wissel het audio-invoerapparaat tijdens een actief spraakgesprek. Deze methode is alleen beschikbaar voor spraakgesprekken.
changeOutputDevice
Wissel het audio-uitvoerapparaat tijdens een actief spraakgesprek. Deze methode is alleen beschikbaar voor spraakgesprekken.
Wisselen tussen apparaten werkt alleen voor spraakgesprekken. Als er geen specifieke deviceId wordt opgegeven,
gebruikt de browser de standaardapparaatselectie. Je kunt beschikbare apparaten weergeven met de
MediaDevices.enumerateDevices()
API.
getId
Retourneert de huidige gespreks-ID.
getInputVolume / getOutputVolume
Methoden die de huidige invoer-/uitvoervolumeniveaus retourneren (schaal 0-1).
getInputByteFrequencyData / getOutputByteFrequencyData
Methoden die Uint8Arrays retourneren met de huidige invoer-/uitvoerfrequentiegegevens. Bekijk AnalyserNode.getByteFrequencyData voor meer informatie.
Deze methoden zijn alleen beschikbaar voor spraakgesprekken. In de WebRTC-modus is de audio hardcoded om
pcm_48000 te gebruiken, wat betekent dat visualisaties met de geretourneerde gegevens mogelijk andere patronen tonen
dan WebSocket-verbindingen.
sendMCPToolApprovalResult
Verstuurt het goedkeuringsresultaat voor MCP-toolaanroepen (Model Context Protocol).
Returnwaarden
Naast de bovenstaande methoden retourneert useConversation de volgende reactieve status:
- status - de huidige verbindingsstatus (
"disconnected","connecting","connected"). - isSpeaking - of de agent momenteel spreekt.
- isListening - of de agent momenteel luistert.
- mode - de huidige gespreksmodus (
"speaking"of"listening"). - isMuted - of de microfoon momenteel is gedempt.
- setMuted - functie om de microfoon te dempen/demping op te heffen.
- canSendFeedback - of feedback voor het huidige gesprek kan worden verzonden.
- message - het meest recente bericht uit het gesprek.
Gedetailleerde hooks
Gebruik voor betere renderprestaties deze hooks in plaats van useConversation. Elke hook abonneert zich alleen op het specifieke deel van de status, zodat componenten alleen opnieuw renderen wanneer de gegevens die ze gebruiken veranderen.
Alle gedetailleerde hooks vereisen een bovenliggende ConversationProvider.
useConversationControls
Retourneert actiemethoden voor het beheren van het gesprek. Deze hook veroorzaakt geen re-renders, omdat deze alleen stabiele functiereferenties biedt.
useConversationStatus
Retourneert de huidige verbindingsstatus en een optioneel statusbericht.
useConversationInput
Retourneert de dempingsstatus en een setter om de microfoon in of uit te schakelen.
useConversationMode
Retourneert de spreek-/luisterstatus van de agent.
useConversationFeedback
Retourneert de beschikbaarheid van feedback en een methode om feedback te versturen.
useRawConversation
Retourneert de onbewerkte gespreksinstantie. Dit is een uitweg voor geavanceerde gebruikssituaties waarin je directe toegang nodig hebt tot het onderliggende object VoiceConversation of TextConversation.
useConversationClientTool
Een hook om client tools dynamisch te registreren vanuit React-componenten. Tools worden automatisch afgemeld wanneer de component wordt ontkoppeld.
Dit is handig wanneer de handler van een tool toegang nodig heeft tot de status of props van de component die niet beschikbaar zijn op providerniveau.
De hook gebruikt altijd de nieuwste closurewaarde van de handler, dus je hoeft je geen zorgen te maken over verouderde status.