Clientevents
Clientevents zijn events op systeemniveau die van de server naar de client worden gestuurd om realtime communicatie mogelijk te maken. Deze events leveren audio, transcriptie, agentreacties en andere essentiële informatie aan de clientapplicatie.
Zie de documentatie over events van client naar server voor informatie over events die je van de client naar de server kunt sturen.
Overzicht
Clientevents zijn essentieel om het realtime karakter van gesprekken te behouden. Ze bieden alles van initialisatiemetagegevens tot verwerkte audio en agentreacties.
Deze events maken deel uit van het WebSocket-communicatieprotocol en worden automatisch verwerkt door onze SDK’s. Inzicht hierin is cruciaal voor geavanceerde implementaties en debugging.
Typen clientevents
conversation_initiation_metadata
- Automatisch verzonden bij het starten van een gesprek
- Initialiseert gespreksinstellingen en -parameters
queue_status
- Alleen verzonden naar bellers die in de oproepwachtrij staan terwijl de agent de concurrencylimiet heeft bereikt
waitingwordt één keer verzonden, naconversation_initiation_metadataen vóór eventuele wachtmuziekadmittedoftimed_outwordt één keer verzonden wanneer het wachten eindigt. Natimed_outwordt de WebSocket gesloten met code 4300- Altijd verzonden naar bellers in de wachtrij. Dit hoeft niet te worden ingeschakeld in de
client_events-configuratie van de agent
Terwijl een beller in de wachtrij staat, komt wachtmuziek binnen als reguliere audio-events. Gebruik dit event om een
wachtstatus weer te geven in plaats van de wachtmuziek als spraak van de agent te behandelen.
ping
- Health check-event waarvoor onmiddellijk een reactie nodig is
- Automatisch verwerkt door de SDK
- Gebruikt om de WebSocket-verbinding te behouden
audio
- Bevat base64-gecodeerde audio voor afspelen
- Bevat een numerieke event-ID voor tracking en volgordebepaling
- Verwerkt streaming van spraakuitvoer
- Bevat uitlijningsgegevens met timinginformatie op tekenniveau
Via WebRTC-verbindingen wordt het audio-event niet verzonden, omdat audio rechtstreeks door LiveKit wordt verwerkt.
user_transcript
- Bevat afgeronde speech-to-textresultaten
- Vertegenwoordigt volledige uitingen van gebruikers
- Gebruikt voor gespreksgeschiedenis
agent_response
- Bevat het volledige bericht van de agent
- Wordt verzonden zodra dat bericht is voltooid, dus bij spraakgesprekken komt het meestal binnen nadat de audio van het bericht al is begonnen met streamen.
- Gebruikt voor weergave en geschiedenis
Gebruik het hieronder beschreven event agent_chat_response_part in plaats van op dit event te wachten
om de tekst van de agent weer te geven terwijl deze wordt geproduceerd.
agent_response_correction
- Bevat het afgekorte antwoord na een onderbreking
- Werkt het weergegeven bericht bij
- Behoudt de nauwkeurigheid van het gesprek
agent_response_metadata
- Bevat willekeurige metagegevens uit een custom LLM-response
- Alleen verzonden bij gebruik van een custom LLM
- Moet expliciet worden ingeschakeld in de
client_events-configuratie van de agent
Dit event is specifiek voor custom LLM-integraties. Hiermee kan je custom LLM-server aanvullende metagegevens samen met de response doorgeven die door de clientapplicatie kunnen worden gebruikt.
client_tool_call
- Vertegenwoordigt een functieaanroep die de agent door de client wil laten uitvoeren
- Bevat de toolnaam, tool call-ID en parameters
- Vereist dat de client de functie uitvoert en het resultaat terugstuurt naar de server
Als je de SDK gebruikt, zijn er callbacks beschikbaar om het resultaat terug te sturen naar de server.
agent_tool_response
- Geeft aan wanneer de agent een toolfunctie heeft uitgevoerd
- Bevat toolmetagegevens en uitvoeringsstatus
- Geeft inzicht in het toolgebruik van de agent tijdens gesprekken
agent_tool_response_full_payload
- Spiegelt
agent_tool_responseen streamt daarnaast de volledige resultpayload van de tool als string infull_tool_result. - Toont de tooluitvoer in de client voor weergave of verdere verwerking.
- Moet expliciet worden ingeschakeld in de
client_events-configuratie van de agent.
Dit event stelt het volledige toolresultaat beschikbaar aan de client en kan gevoelige gegevens bevatten. Schakel het alleen in wanneer de client vertrouwd is om de payload te verwerken. Resultaten groter dan 64 KB worden automatisch afgekort.
React
JavaScript
vad_score
- Score-event voor Voice Activity Detection
- Geeft de waarschijnlijkheid aan dat de gebruiker spreekt
- Waarden lopen van 0 tot 1, waarbij hogere waarden een grotere zekerheid van spraak aangeven
mcp_tool_call
- Geeft aan wanneer de agent een MCP-toolfunctie heeft uitgevoerd
- Bevat de toolnaam, tool call-ID en parameters
- Aangeroepen met een van vier statussen:
loading,awaiting_approval,successenfailure.
agent_chat_response_part
- Streamt de antwoordtekst van de agent terwijl deze wordt gegenereerd, als berichten
start,deltaenstop - Altijd verzonden in modus met alleen tekst; bij spraakgesprekken moet dit expliciet worden ingeschakeld in de
client_events-configuratie van de agent - Wordt niet verzonden terwijl de agent of een actieve procedure een blokkerende guardrail gebruikt, die het volledige antwoord moet evalueren voordat een deel ervan wordt vrijgegeven
response_ididentificeert het bericht dat wordt gestreamd en komt overeen met deresponse_idvan deagent_responsedie het later vastlegt
agent_reasoning_response_part
agent_reasoning_response_part streamt door het model verstrekte redeneringen tijdens gesprekken met alleen tekst.
Schakel het event in bij client_events en schakel Samenvatting van
redeneringen in voor de agent. De server verzendt
berichten start, delta en stop. Dit event wordt niet verzonden tijdens spraakgesprekken of
wanneer de agent of een actieve procedure blokkerende guardrails gebruikt.
Dit event en de bijbehorende SDK-callback zijn experimenteel. Hun gedrag en vorm kunnen in elke release veranderen.
Start- en stop-events gebruiken een lege text-waarde.
agent_response_complete
- Wordt geactiveerd wanneer de agent de response heeft voltooid, inclusief eventuele openstaande tool calls. Na dit event produceert de agent alleen verdere uitvoer als de gebruiker nieuwe invoer geeft of een turn-time-out een nieuwe turn activeert.
- Moet expliciet worden ingeschakeld in de
client_events-configuratie van de agent
guardrail_triggered
- Wordt geactiveerd wanneer een schending van een guardrail het gesprek beëindigt. Wordt niet verzonden wanneer een guardrail een nieuwe poging activeert die slaagt.
- Het event zelf is het signaal: het bevat geen payload behalve het veld
type. - Moet expliciet worden ingeschakeld in de
client_events-configuratie van de agent.
Eventstroom
Hier is een typische reeks gebeurtenissen tijdens een gesprek:
Wanneer een agent de gelijktijdigheidslimiet heeft bereikt en oproepen in de wachtrij plaatsen is ingeschakeld, stuurt de server queue_status-events tussen conversation_initiation_metadata en het eerste audio-event. Wachtmuziek wordt als audio-events geleverd totdat de beller wordt toegelaten.
Best practices
-
Foutafhandeling
- Implementeer goede foutafhandeling voor elk eventtype
- Log belangrijke events voor debugging
- Ga netjes om met verbindingsonderbrekingen
-
Audiobeheer
- Buffer audiochunks op de juiste manier
- Implementeer goede opschoning bij onderbreking
- Beheer audiobronnen
-
Verbindingsbeheer
- Reageer snel op PING-events
- Implementeer herverbindingslogica
- Controleer de verbindingsstatus
Problemen oplossen
Verbindingsproblemen
- Zorg voor een goede WebSocket-verbinding
- Controleer PING/PONG-reacties
- Controleer API-inloggegevens
Audioproblemen
- Controleer de verwerking van audiochunks
- Controleer de compatibiliteit van het audioformaat
- Controleer het geheugengebruik
Eventverwerking
- Log alle events voor debugging
- Implementeer foutgrenzen
- Controleer de registratie van eventhandlers
Bekijk onze SDK- documentatie voor gedetailleerde implementatievoorbeelden.