gorgeous-hydrogen-44699
03/02/2026, 12:12 PMlivekit-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"}tall-airline-16756
03/02/2026, 12:12 PMtall-airline-16756
03/02/2026, 12:13 PMCreateSIPParticipant 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