Klienthändelser
Förstå och hantera realtidshändelser som klienten tar emot i konversationsapplikationer.
Klienthändelser är händelser på systemnivå som skickas från servern till klienten och möjliggör kommunikation i realtid. Dessa händelser levererar ljud, transkribering, agentsvar och annan viktig information till klientapplikationen.
Information om händelser som du kan skicka från klienten till servern finns i dokumentationen för händelser från klient till server.
Översikt
Klienthändelser är viktiga för att upprätthålla konversationernas realtidskaraktär. De tillhandahåller allt från initialiseringsmetadata till bearbetat ljud och agentsvar.
Dessa händelser är en del av WebSocket-kommunikationsprotokollet och hanteras automatiskt av våra SDK:er. Det är avgörande att förstå dem för avancerade implementationer och felsökning.
Typer av klienthändelser
conversation_initiation_metadata
- Skickas automatiskt när en konversation startas
- Initierar konversationsinställningar och parametrar
queue_status
- Skickas endast till uppringare som hålls i samtalskön medan agenten är vid sin samtidighetsgräns
waitingskickas en gång, efterconversation_initiation_metadataoch före vänteljudadmittedellertimed_outskickas en gång när väntan avslutas. Eftertimed_outstängs WebSocket med kod 4300- Skickas alltid till uppringare i kö. Den behöver inte aktiveras i agentens
client_events-konfiguration
När en uppringare står i kö kommer vänteljud som vanliga audio-händelser. Använd den här händelsen för att visa ett vänteläge i stället för att behandla vänteljudet som agentspråk.
ping
- Hälsokontrollhändelse som kräver omedelbart svar
- Hanteras automatiskt av SDK
- Används för att upprätthålla WebSocket-anslutningen
audio
- Innehåller base64-kodat ljud för uppspelning
- Inkluderar numeriskt händelse-ID för spårning och sekvensering
- Hanterar strömning av röstutdata
- Inkluderar justeringsdata med timinginformation på teckennivå
Via WebRTC-anslutningar skickas inte audio-händelsen eftersom ljud hanteras direkt av LiveKit.
user_transcript
- Innehåller slutförda resultat från tal-till-text
- Representerar kompletta användaryttranden
- Används för konversationshistorik
agent_response
- Innehåller agentens kompletta meddelande
- Skickas när meddelandet är klart, så i röstkonversationer kommer det vanligtvis efter att meddelandets ljud redan har börjat strömma.
- Används för visning och historik
Om du vill visa agentens text medan den skapas använder du händelsen agent_chat_response_part
som beskrivs nedan i stället för att vänta på denna händelse.
agent_response_correction
- Innehåller avkortat svar efter avbrott
- Uppdaterar det visade meddelandet
- Bevarar konversationens noggrannhet
agent_response_metadata
- Innehåller godtyckliga metadata från ett anpassat LLM-svar
- Skickas endast när du använder en anpassad LLM
- Måste uttryckligen aktiveras i agentens
client_events-konfiguration
Den här händelsen är specifik för anpassade LLM-integreringar. Den låter din anpassade LLM-server skicka ytterligare metadata tillsammans med svaret som kan användas av klientapplikationen.
client_tool_call
- Representerar ett funktionsanrop som agenten vill att klienten ska köra
- Innehåller verktygsnamn, verktygsanrops-ID och parametrar
- Kräver att funktionen körs på klientsidan och att resultatet skickas tillbaka till servern
Om du använder SDK tillhandahålls callbacks för att hantera att resultatet skickas tillbaka till servern.
agent_tool_response
- Anger när agenten har kört en verktygsfunktion
- Innehåller verktygsmetadata och körningsstatus
- Ger insyn i agentens verktygsanvändning under konversationer
agent_tool_response_full_payload
- Speglar
agent_tool_responseoch strömmar dessutom verktygets fullständiga resultatinnehåll som en sträng ifull_tool_result. - Visar verktygsutdata i klienten för visning eller vidare bearbetning.
- Måste uttryckligen aktiveras i agentens
client_events-konfiguration.
Den här händelsen exponerar hela verktygsresultatet för klienten och kan innehålla känsliga data. Aktivera den endast när klienten är betrodd att hantera innehållet. Resultat större än 64 KB avkortas automatiskt.
React
JavaScript
vad_score
- Poänghändelse för röstaktivitetsdetektering
- Anger sannolikheten att användaren talar
- Värden sträcker sig från 0 till 1, där högre värden anger större säkerhet på att tal förekommer
mcp_tool_call
- Anger när agenten har kört en MCP-verktygsfunktion
- Innehåller verktygsnamn, verktygsanrops-ID och parametrar
- Anropas med ett av fyra tillstånd:
loading,awaiting_approval,successochfailure.
agent_chat_response_part
- Strömmar agentens svarstext medan den genereras, som meddelandena
start,deltaochstop - Skickas alltid i läget med endast text; i röstkonversationer måste den uttryckligen aktiveras i agentens
client_events-konfiguration - Skickas inte medan agenten eller en aktiv procedur använder ett blockerande skyddsräcke, som måste utvärdera hela svaret innan någon del av det släpps
response_ididentifierar meddelandet som strömmas och matcharresponse_idför detagent_responsesom senare bekräftar det
agent_reasoning_response_part
agent_reasoning_response_part strömmar resonemang från modellen under konversationer med endast text.
Aktivera händelsen i client_events och slå på Sammanfattning av
resonemang för agenten. Servern skickar
meddelandena start, delta och stop. Den skickar inte denna händelse under röstkonversationer eller
medan agenten eller en aktiv procedur använder blockerande skyddsräcken.
Denna händelse och motsvarande SDK-callback är experimentella. Deras beteende och struktur kan ändras i vilken version som helst.
Start- och stopphändelser använder ett tomt text-värde.
agent_response_complete
- Utlöses när agenten har avslutat sitt svar, inklusive väntande verktygsanrop. Efter denna händelse producerar agenten bara ytterligare utdata om användaren ger ny inmatning eller om en turtimeout utlöser en ny tur.
- Måste uttryckligen aktiveras i agentens
client_events-konfiguration
guardrail_triggered
- Utlöses när en överträdelse av ett skyddsräcke avslutar konversationen. Skickas inte när ett skyddsräcke utlöser ett återförsök som lyckas.
- Händelsen i sig är signalen – den har inget innehåll utöver fältet
type. - Måste uttryckligen aktiveras i agentens
client_events-konfiguration.
Händelseflöde
Här är en typisk händelsesekvens under en konversation:
När en agent har nått sin samtidighetsgräns och samtalsköer är aktiverade skickar servern queue_status-händelser mellan conversation_initiation_metadata och den första audio-händelsen. Kömusik levereras som audio-händelser tills uppringaren släpps in.
Rekommenderade metoder
-
Felhantering
- Implementera korrekt felhantering för varje händelsetyp
- Logga viktiga händelser för felsökning
- Hantera anslutningsavbrott på ett smidigt sätt
-
Ljudhantering
- Buffra ljudsegment på lämpligt sätt
- Implementera korrekt rensning vid avbrott
- Hantera ljudresurser
-
Anslutningshantering
- Svara snabbt på PING-händelser
- Implementera logik för återanslutning
- Övervaka anslutningens status
Felsökning
Anslutningsproblem
- Kontrollera att WebSocket-anslutningen är korrekt
- Kontrollera PING/PONG-svar
- Verifiera API-autentiseringsuppgifter
Ljudproblem
- Kontrollera hanteringen av ljudsegment
- Verifiera kompatibiliteten för ljudformat
- Övervaka minnesanvändningen
Händelsehantering
- Logga alla händelser för felsökning
- Implementera felgränser
- Kontrollera registreringen av händelsehanterare
Se vår SDK- dokumentation för detaljerade implementationsexempel.