getting this error on outbound call. ```livekit-1 ...
# ask-ai
g
getting this error on outbound call.
Copy code
livekit-1  | 2026-03-02T12:08:04.888Z   INFO    livekit.api     service/twirp.go:145    API SIP.CreateSIPParticipant    {"service": "SIP", "method": "CreateSIPParticipant", "room": "outbound-agent-GYXPwtHb7lQxjXPRmXUqbJYsHA-15ac39e845a34d1e92524f6f7677da5c_+917289008054", "participant": "+917289008054", "toUser": "+917289008054", "trunkID": "ST_oSeyfGvvk99Y", "callID": "SCL_NW6YJuvVVune", "fromUser": "+911171366938", "toHost": "<http://5338273d.sip.vobiz.ai|5338273d.sip.vobiz.ai>", "duration": "4.392842351s", "status": "500", "error": "twirp error unknown: unexpected status from INVITE response: sip status: 482: Request merged", "code": "internal"}
livekit-1  | 2026-03-02T12:08:05.549Z   INFO    livekit rtc/participant.go:1367 participant closing     {"room": "outbound-agent-GYXPwtHb7lQxjXPRmXUqbJYsHA-15ac39e845a34d1e92524f6f7677da5c_+917289008054", "roomID": "RM_chYKSn7V7S5N", "participant": "agent_GYXPwtHb7lQxjXPRmXUqbJYsHA_agent_AJ_CnfgzN9gFP98", "pID": "PA_992ugTKy83iR", "remote": false, "sendLeave": true, "reason": "CLIENT_REQUEST_LEAVE", "isExpectedToResume": false}
livekit-1  | 2026-03-02T12:08:05.551Z   WARN    livekit.transport       rtc/transport.go:919    error reading data channel      {"room": "outbound-agent-GYXPwtHb7lQxjXPRmXUqbJYsHA-15ac39e845a34d1e92524f6f7677da5c_+917289008054", "roomID": "RM_chYKSn7V7S5N", "participant": "agent_GYXPwtHb7lQxjXPRmXUqbJYsHA_agent_AJ_CnfgzN9gFP98", "pID": "PA_992ugTKy83iR", "remote": false, "transport": "PUBLISHER", "label": "_lossy", "error": "dtls timeout: read/write timeout: context deadline exceeded"}
livekit-1  | 2026-03-02T12:08:05.551Z   WARN    livekit.transport       rtc/transport.go:919    error reading data channel      {"room": "outbound-agent-GYXPwtHb7lQxjXPRmXUqbJYsHA-15ac39e845a34d1e92524f6f7677da5c_+917289008054", "roomID": "RM_chYKSn7V7S5N", "participant": "agent_GYXPwtHb7lQxjXPRmXUqbJYsHA_agent_AJ_CnfgzN9gFP98", "pID": "PA_992ugTKy83iR", "remote": false, "transport": "PUBLISHER", "label": "_reliable", "error": "dtls timeout: read/write timeout: context deadline exceeded"}
livekit-1  | 2026-03-02T12:08:05.551Z   WARN    livekit.transport       rtc/transport.go:1276   error reading data channel      {"room": "outbound-agent-GYXPwtHb7lQxjXPRmXUqbJYsHA-15ac39e845a34d1e92524f6f7677da5c_+917289008054", "roomID": "RM_chYKSn7V7S5N", "participant": "agent_GYXPwtHb7lQxjXPRmXUqbJYsHA_agent_AJ_CnfgzN9gFP98", "pID": "PA_992ugTKy83iR", "remote": false, "transport": "SUBSCRIBER", "label": "_lossy", "error": "dtls timeout: read/write timeout: context deadline exceeded"}
livekit-1  | 2026-03-02T12:08:05.551Z   WARN    livekit.transport       rtc/transport.go:1276   error reading data channel      {"room": "outbound-agent-GYXPwtHb7lQxjXPRmXUqbJYsHA-15ac39e845a34d1e92524f6f7677da5c_+917289008054", "roomID": "RM_chYKSn7V7S5N", "participant": "agent_GYXPwtHb7lQxjXPRmXUqbJYsHA_agent_AJ_CnfgzN9gFP98", "pID": "PA_992ugTKy83iR", "remote": false, "transport": "SUBSCRIBER", "label": "_reliable", "error": "dtls timeout: read/write timeout: context deadline exceeded"}
livekit-1  | 2026-03-02T12:08:05.551Z   INFO    livekit.agents  agent/worker.go:530     job ended       {"workerID": "AW_AaPfRhN4Uz7y", "agentName": "osvi-agents-local-ashu", "jobType": "JT_ROOM", "jobID": "AJ_CnfgzN9gFP98", "status": "JS_FAILED", "error": "agent worker left the room"}
livekit-1  | 2026-03-02T12:08:25.601Z   INFO    livekit.room    rtc/room.go:807 closing room    {"room": "outbound-agent-GYXPwtHb7lQxjXPRmXUqbJYsHA-15ac39e845a34d1e92524f6f7677da5c_+917289008054", "roomID": "RM_chYKSn7V7S5N"}
livekit-1  | 2026-03-02T12:08:25.602Z   INFO    livekit service/roommanager.go:187      deleting room state     {"room": "outbound-agent-GYXPwtHb7lQxjXPRmXUqbJYsHA-15ac39e845a34d1e92524f6f7677da5c_+917289008054"}
livekit-1  | 2026-03-02T12:08:25.603Z   INFO    livekit.room    service/roommanager.go:667      room closed     {"room": "outbound-agent-GYXPwtHb7lQxjXPRmXUqbJYsHA-15ac39e845a34d1e92524f6f7677da5c_+917289008054", "roomID": "RM_chYKSn7V7S5N"}
livekit-1  | 2026-03-02T12:08:25.603Z   INFO    livekit.room    rtc/room.go:791 closing idle room       {"room": "outbound-agent-GYXPwtHb7lQxjXPRmXUqbJYsHA-15ac39e845a34d1e92524f6f7677da5c_+917289008054", "roomID": "RM_chYKSn7V7S5N", "reason": "departure timeout"}
livekit-1  | 2026-03-02T12:10:56.601Z   INFO    livekit.room    rtc/room.go:807 closing room    {"room": "outbound-agent-GYXPwtHb7lQxjXPRmXUqbJYsHA-13788e0c203045d5b2ff5864d24606d0_+917289008054", "roomID": "RM_YZXyEu6zzHtP"}
livekit-1  | 2026-03-02T12:10:56.601Z   INFO    livekit service/roommanager.go:187      deleting room state     {"room": "outbound-agent-GYXPwtHb7lQxjXPRmXUqbJYsHA-13788e0c203045d5b2ff5864d24606d0_+917289008054"}
livekit-1  | 2026-03-02T12:10:56.602Z   INFO    livekit.room    service/roommanager.go:667      room closed     {"room": "outbound-agent-GYXPwtHb7lQxjXPRmXUqbJYsHA-13788e0c203045d5b2ff5864d24606d0_+917289008054", "roomID": "RM_YZXyEu6zzHtP"}
livekit-1  | 2026-03-02T12:10:56.602Z   INFO    livekit.room    rtc/room.go:791 closing idle room       {"room": "outbound-agent-GYXPwtHb7lQxjXPRmXUqbJYsHA-13788e0c203045d5b2ff5864d24606d0_+917289008054", "roomID": "RM_YZXyEu6zzHtP", "reason": "empty timeout"}
t
Thanks for reaching out, ashutosh. I'm an AI assistant and I'm here to help. Give me a moment while I research this topic.
Thanks — I reviewed the logs you sent. You’re seeing a SIP 482 "Request merged" on the INVITE and then DTLS timeouts and the agent leaving the room. I’ll walk through what that means, likely causes, and concrete steps you can take to resolve it. What the logs show • The SIP INVITE returned: 482 Request merged — the downstream SIP endpoint (5338273d.sip.vobiz.ai) rejected the INVITE as a duplicate. (Log line: "unexpected status from INVITE response: sip status: 482: Request merged") • After the failed INVITE the participant closed and DTLS read/write timeouts occurred — the media path never completed because call setup failed. Why this happens • 482 Request merged means the SIP server detected two (or more) identical INVITEs (same Call‑ID and From tags) and rejected the later one(s) to avoid duplicate sessions. • Common causes: ◦ Duplicate INVITEs being sent from your side (retries or race conditions). ◦ Reuse/collision of Call-ID or participant identity across attempts. ◦ SIP provider (PBX) strict duplicate-detection behavior that treats very close retries as duplicates. Recommended steps to troubleshoot and fix 1. Prevent duplicate outbound attempts (first, easiest check) ◦ Confirm your application does not call
CreateSIPParticipant
more than once for the same outbound number at the same time. ◦ If you have retry logic around outbound calls, temporarily disable it and test a single attempt. 1. Add deduplication for dialing attempts ◦ Use a short-lived lock keyed by the target number or a unique call attempt id so only one INVITE is sent at a time for that target. ◦ Example approach: mark number as "dialing" until the request completes/fails, and ignore additional attempts while set. 1. Ensure unique Call identifiers ◦ Avoid reusing participant identities or Call‑IDs across attempts. Generate unique identifiers per call attempt (UUID fragment or timestamp suffix). 1. Review retry/backoff behavior ◦ If retries are necessary, introduce exponential backoff + jitter and limit retry count (avoid immediate back-to-back retries). ◦ Wait several seconds before reattempting to avoid being classified as a duplicate by the provider. 1. Inspect SIP logs (if available) ◦ If possible, gather the raw SIP traces (INVITE/ACK/CANCEL responses) from LiveKit and from 5338273d.sip.vobiz.ai so you can see whether multiple INVITEs were actually sent and their timestamps. ◦ The provider’s logs are especially useful to confirm which requests they treated as duplicates. 1. Verify trunk/outbound settings ◦ Check your outbound trunk configuration (URI formatting, proxies, any retries at the trunk level). Misconfigured outbound proxies or parallel forking could also produce duplicate INVITEs. ◦ If you are using any intermediary that might fork the INVITE (load balancer or proxy), confirm it’s not causing duplicate forwarding. 1. Handle 482 gracefully in application logic ◦ If you receive 482, avoid aggressive automatic retries. Log the condition, apply backoff, and surface it for operator review. ◦ Treat the DTLS timeouts as a downstream effect of the failed call setup — they should disappear once INVITE duplication is resolved. When to involve the SIP provider • If after ensuring you’re not sending duplicate INVITEs you still get 482 responses, share SIP traces with vobiz.ai and ask: ◦ Whether they see multiple INVITEs for the Call-ID/from-tag in their logs. ◦ What policy they use for duplicate detection and whether closely-timed retries are treated as duplicates. If you’d like, I can help next with either: • A short checklist you can run against your call creation flow to find duplicates, or • Reviewing a sample of the raw SIP INVITE/response trace (timestamps + headers) if you can paste it here — that will make it possible to confirm whether multiple INVITEs are being sent or if the provider is merging similar requests. Relevant docs • Agents telephony integration: https://docs.livekit.io/agents/start/telephony/ • SIP lifecycle for agents: https://docs.livekit.io/recipes/sip_lifecycle • Outbound calling script guidance: https://docs.livekit.io/recipes/make_call Tell me which you'd prefer — a checklist to inspect your code/trunk config, or paste a SIP trace and I’ll help analyze it. Sources: Agents telephony integration | LiveKit Documentation | SIP Lifecycle Management Agent | LiveKit Documentation | Outbound Calling Script | LiveKit Documentation