```participant disconnect reason: 12 Call not pick...
# ask-ai
c
Copy code
participant disconnect reason: 12
Call not picked up. Disconnect reason: 12
Participant disconnected during pickup wait: 12
CALL_ENDED | ended_by=AGENT | reason=USER_REJECTED (call was rejected)
✅ 1
t
Thanks for reaching out, Yash. I'm an AI assistant and I'm here to help. Give me a moment while I research this topic.
Thanks — I’m responding about the three log lines you shared: the
disconnect reason: 12
entries and the
CALL_ENDED | reason=USER_REJECTED (call was rejected)
. • Disconnect reason 12 corresponds to STATE_MISMATCH. This means the SFU detected the media connection state between server and client fell out of sync (an issue on the media path, not signaling). • Common causes: an unclean client disconnect (crash or abrupt shutdown), a network blackout that prevents ICE/STUN keep-alives, or the client failing to send a proper Leave/cleanup. The SFU usually detects this after about ~20s of missing keep-alives. • The
USER_REJECTED
/
ended_by=AGENT
line means the agent rejected or explicitly ended the call (the agent-side logic terminated the session). What you can check next: • On the client: any crashes, abrupt app exits, or logs showing failed ICE/DTLS negotiation around the timestamp. • Network: packet loss, NAT/firewall issues, or periods where keep-alives stopped. • Agent/session logic: whether code paths (e.g., explicit call rejection,
session.shutdown()
, or tools that end calls) ran at that time. If you want, share: • timestamps for these events, • the room/participant IDs, • client logs around the same time (ICE/DTLS/peerConnection events)— and I’ll help correlate them and suggest targeted fixes. Sources: Understanding the STATE_MISMATCH Disconnect Reason | Agent session | LiveKit Documentation | Python Agents: Handling exceptions in your entrypoint | LiveKit | How to do call transfers with Five9 | LiveKit | EndCallTool | LiveKit Documentation, with interactive elements