https://livekit.io logo
Join Slack
Powered by
# sip
  • b

    busy-arm-79178

    07/27/2025, 7:18 PM
    Hello, Has anyone experienced this issue before? I’ve been running LiveKit (self-hosted) with the livekit/sip bridge and my FreePBX server, and everything works fine in my local environment—calls connect and audio/media flows as expected. However, I’m now trying to migrate to LiveKit Cloud. When I connect my local FreePBX server to the LiveKit Cloud SIP endpoint, calls are picked up (answered), but there is *no RTP media received on either side*—so there’s no audio in either direction. Some details about my setup: • FreePBX RTP Ports: 18000–18100 (UDP) • LiveKit Cloud SIP: I noticed it is sending RTP from ports in the 55xxx range to my PBX • Firewall: I have allowed inbound UDP on my FreePBX server for both my local RTP range and for the high ports used by LiveKit Cloud (55xxx) • In my local self-hosted deployment, I used different RTP port ranges for LiveKit and FreePBX without issue, so I don’t think it’s a port conflict. Is there something I’m missing when connecting FreePBX to LiveKit Cloud versus a local deployment? Do I need to make any special NAT or firewall configurations for LiveKit Cloud to allow RTP/media to pass through correctly? Any help or advice would be greatly appreciated!
    👍 2
    👀 1
    m
    • 2
    • 9
  • c

    crooked-agent-9740

    07/28/2025, 12:45 AM
    has anyone used jambonz to connect to carriers asking for static ip.
    q
    • 2
    • 1
  • s

    salmon-balloon-35737

    07/28/2025, 9:55 AM
    Hi everyone, Anybody integrated Livekit server with freeswitch for incomming calls? workflow is as below: 1. From zoiper the user dials an extension. 2. In freeswitch i am registering this and have created a gateway. 3. This shall dial Livekit and agent should answer the call. In this the issue what i am facing is, that when i dial the call is been hitting livekit sip server but the agent is not accepting..
    m
    q
    • 3
    • 3
  • b

    brainy-twilight-23481

    07/28/2025, 1:23 PM
    Hey everyone! I'm running a voice AI agent on LiveKit with SIP telephony integration. My setup: • Python agent using LiveKit Agents framework • Multiple SIP trunk providers (including Twilio) • Agent dispatch working correctly, calls visible in dashboard Issue: ALL outbound SIP calls fail with "transaction failed to complete (0 intermediate responses)" regardless of provider. Even calls to LiveKit's own
    <http://echo.sip.livekit.io:5060|echo.sip.livekit.io:5060>
    fail with the same error. What works: Agent registration, job dispatch, room creation What fails: Any SIP INVITE request - zero responses from any destination Since even LiveKit's echo server fails, this seems like a service-side routing issue rather than my trunk configuration. Any solution to this?
    q
    • 2
    • 1
  • e

    enough-nest-60267

    07/28/2025, 2:16 PM
    Hi all! How can I determine if a phone call has been answered? I’m using Twilio as the provider.
  • d

    dry-helmet-74553

    07/28/2025, 3:06 PM
    Hi all! Is anyone here using Twilio SIP? I've done thousands of tests with
    AgentSession
    , but I still haven't found the secret sauce. When I use the real-time model, it skips the greeting and jumps straight into the conversation. But when I switch to regular TTS/STT, the LLM response latency increases — I get replies with a 3–5 second delay. Does anyone know how to fix or optimize these issues?
    • 1
    • 1
  • b

    brave-printer-20093

    07/28/2025, 4:48 PM
    Hi Livekit team. Recently Meta released Whatsapp Calling, and I assume there will be increasing interest deploying voice agents behind it given Whatsapp's reach. I'm attempting to connect it to Livekit via SIP (https://developers.facebook.com/docs/whatsapp/cloud-api/calling/sip) but am hitting roadblocks that I'm unsure is due to current limitations of the SIP bridge or misconfiguration. Is there anyone who can work with me to debug this and identify a path forward? There is already a successful integration of whatsapp calling integrated with livekit via an asterisk intermediary, but I'm hoping to keep our telephony infra minimal like with Twilio or Telnyx.
    w
    • 2
    • 2
  • o

    orange-salesclerk-64602

    07/29/2025, 5:51 AM
    Hi E everyone , i am new to this and i am trying to integrate exotel for my telephony solution but i am not able to understand how to start as i don't find any documentation on integrating exotel with livekit... if anyone has done can you please help me out.
  • w

    white-parrot-89852

    07/29/2025, 9:18 AM
    We have a self-hosted setup and are currently testing private AWS EKS behind NAT. log Livekit Server _______________________
    Copy code
    2025-07-29T08:47:20.641Z    ERROR    livekit    supervisor/participant_supervisor.go:156    supervisor error on publication    {"room": "test-room", "roomID": "RM_DxrCUxKkWBfi", "participant": "test-caller", "pID": "PA_KheovC9SjDyK", "remote": false, "trackID": "TR_AMzQL5c5k5EKLC", "error": "publish time out"}
    <http://github.com/livekit/livekit-server/pkg/rtc/supervisor.(*ParticipantSupervisor).checkPublications|github.com/livekit/livekit-server/pkg/rtc/supervisor.(*ParticipantSupervisor).checkPublications>
        /workspace/pkg/rtc/supervisor/participant_supervisor.go:156
    <http://github.com/livekit/livekit-server/pkg/rtc/supervisor.(*ParticipantSupervisor).checkState|github.com/livekit/livekit-server/pkg/rtc/supervisor.(*ParticipantSupervisor).checkState>
        /workspace/pkg/rtc/supervisor/participant_supervisor.go:145
    log Livekit SIP
    Copy code
    2025-07-29T08:46:48.774Z    INFO    sip    v2@v2.9.2-0.20250606164215-22b67ed30bd9/localparticipant.go:148    published track    {"nodeID": "NE_FDsNNkH6SS34", "sipTrunk": "ST_TohipyYZmZDK", "callID": "SCL_UoWekBjQxuWS", "room": "test-room", "participant": "test-caller", "participantName": "", "fromHost": "", "fromUser": "02xxxxxxx", "toHost": "<http://xx.yalecom.com:5060|xx.yalecom.com:5060>", "toUser": "06xxxxxxxx", "jitterBuf": false, "name": "test-caller", "source": "MICROPHONE", "trackID": "TR_AMzQL5c5k5EKLC"}
    2025-07-29T08:46:48.774Z    DEBUG    sip    sip/outbound.go:505    SDP offer    {"nodeID": "NE_FDsNNkH6SS34", "sipTrunk": "ST_TohipyYZmZDK", "callID": "SCL_UoWekBjQxuWS", "room": "test-room", "participant": "test-caller", "participantName": "", "fromHost": "", "fromUser": "02xxxxxxx", "toHost": "<http://xx.yalecom.com:5060|xx.yalecom.com:5060>", "toUser": "06xxxxxxxx", "jitterBuf": false, "sdp": "v=0\r\no=- 9650335128064874553 9650335128064874553 IN IP4 54.255.225.247\r\ns=LiveKit\r\nc=IN IP4 54.255.225.247\r\nt=0 0\r\nm=audio 14078 RTP/AVP 9 0 8 101\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:101 telephone-event/8000\r\na=fmtp:101 0-16\r\na=ptime:20\r\na=sendrecv\r\n"}
    2025-07-29T08:46:48.808Z    DEBUG    sip    v2@v2.9.2-0.20250606164215-22b67ed30bd9/engine.go:429    successfully set publisher answer    {"nodeID": "NE_FDsNNkH6SS34", "sipTrunk": "ST_TohipyYZmZDK", "callID": "SCL_UoWekBjQxuWS", "room": "test-room", "participant": "test-caller", "participantName": "", "fromHost": "", "fromUser": "02xxxxxxx", "toHost": "<http://xx.yalecom.com:5060|xx.yalecom.com:5060>", "toUser": "06xxxxxxxx", "jitterBuf": false}
    2025-07-29T08:47:20.806Z    DEBUG    Client transaction destroyed    {"nodeID": "NE_FDsNNkH6SS34", "caller": "transaction.Layer", "tx": "z9hG4bK.XcN0E4TsRFEFrZSv__INVITE"}
    2025-07-29T08:47:20.806Z    DEBUG    Client transaction destroyed    {"nodeID": "NE_FDsNNkH6SS34", "caller": "transaction.Layer", "tx": "z9hG4bK.XcN0E4TsRFEFrZSv__INVITE"}
    2025-07-29T08:47:20.806Z    INFO    sip    sip/outbound.go:535    SIP invite failed    {"nodeID": "NE_FDsNNkH6SS34", "sipTrunk": "ST_TohipyYZmZDK", "callID": "SCL_UoWekBjQxuWS", "room": "test-room", "participant": "test-caller", "participantName": "", "fromHost": "", "fromUser": "02xxxxxxx", "toHost": "<http://xx.yalecom.com:5060|xx.yalecom.com:5060>", "toUser": "06xxxxxxxx", "jitterBuf": false, "error": "transaction failed to complete (0 intermediate responses)"}
    2025-07-29T08:47:20.806Z    INFO    sip    sip/outbound.go:308    SIP call failed    {"nodeID": "NE_FDsNNkH6SS34", "sipTrunk": "ST_TohipyYZmZDK", "callID": "SCL_UoWekBjQxuWS", "room": "test-room", "participant": "test-caller", "participantName": "", "fromHost": "", "fromUser": "02xxxxxxx", "toHost": "<http://xx.yalecom.com:5060|xx.yalecom.com:5060>", "toUser": "06xxxxxxxx", "jitterBuf": false, "error": "transaction failed to complete (0 intermediate responses)"}
    2025-07-29T08:47:20.806Z    WARN    sip    sip/outbound.go:264    Closing outbound call with error    {"nodeID": "NE_FDsNNkH6SS34", "sipTrunk": "ST_TohipyYZmZDK", "callID": "SCL_UoWekBjQxuWS", "room": "test-room", "participant": "test-caller", "participantName": "", "fromHost": "", "fromUser": "02xxxxxxx", "toHost": "<http://xx.yalecom.com:5060|xx.yalecom.com:5060>", "toUser": "06xxxxxxxx", "jitterBuf": false, "reason": "invite-failed"}
    2025-07-29T08:47:20.815Z    INFO    sip    sip/outbound.go:283    call statistics    {"nodeID": "NE_FDsNNkH6SS34", "sipTrunk": "ST_TohipyYZmZDK", "callID": "SCL_UoWekBjQxuWS", "room": "test-room", "participant": "test-caller", "participantName": "", "fromHost": "", "fromUser": "02xxxxxxx", "toHost": "<http://xx.yalecom.com:5060|xx.yalecom.com:5060>", "toUser": "06xxxxxxxx", "jitterBuf": false, "stats": {"port":{"streams":0,"packets":0,"packets_ignored":0,"packets_input":0,"mux_packets":0,"mux_bytes":0,"audio_packets":0,"audio_bytes":0,"dtmf_packets":0,"dtmf_bytes":0},"room":{"input_packets":0,"input_bytes":0,"mixer_samples":0,"mixer_frames":0,"output_samples":1548480,"output_frames":1613},"mixer":{"tracks":0,"tracks_total":0,"restarts":0,"mixes":1613,"mixes_timed":607,"mixes_jump":1006,"mixes_zero":503,"input_samples":0,"input_frames":0,"mixed_samples":0,"mixed_frames":0,"output_samples":1548480,"output_frames":1613}}}
    2025-07-29T08:47:20.831Z    DEBUG    sip    v2@v2.9.2-0.20250606164215-22b67ed30bd9/engine.go:798    received leave request    {"nodeID": "NE_FDsNNkH6SS34", "sipTrunk": "ST_TohipyYZmZDK", "callID": "SCL_UoWekBjQxuWS", "room": "test-room", "participant": "test-caller", "participantName": "", "fromHost": "", "fromUser": "02xxxxxxx", "toHost": "<http://xx.yalecom.com:5060|xx.yalecom.com:5060>", "toUser": "06xxxxxxxx", "jitterBuf": false, "action": "DISCONNECT"}
    2025-07-29T08:47:20.831Z    INFO    sip    v2@v2.9.2-0.20250606164215-22b67ed30bd9/engine.go:803    server initiated leave    {"nodeID": "NE_FDsNNkH6SS34", "sipTrunk": "ST_TohipyYZmZDK", "callID": "SCL_UoWekBjQxuWS", "room": "test-room", "participant": "test-caller", "participantName": "", "fromHost": "", "fromUser": "02xxxxxxx", "toHost": "<http://xx.yalecom.com:5060|xx.yalecom.com:5060>", "toUser": "06xxxxxxxx", "jitterBuf": false, "reason": "CLIENT_INITIATED"}
  • w

    wide-pager-36831

    07/29/2025, 12:34 PM
    Hi everyone, Livekit cloud user here... I want to perform call transfer using twilio sdk when user from livekit room requests for transfer : response = VoiceResponse() response.dial(record='record-from-answer-dual').number(transfer_number) twiml = str(response) self.log('info', f"Generated TwiML for transfer: {twiml}") # Update the call with new TwiML using SDK (like NHSAudioAI) _try_: self.twilio_client.calls(target_call_sid).update(twiml=twiml) the problem is that from twilio side I get error: Error Description ## Warning - 13214 ### Dial: Invalid callerId value callerId must be the calling number, called number, or a validated outgoing number. Additionally, if the calling leg is a client leg, the caller ID is required and must be a validated outgoing number. See the <a href='/docs/api/twiml/dial#callerId'>Dial Verb</a> API Reference for more information. Possible Solutions To work around this, your application should recognize invalid caller IDs, and substitute them with a valid Caller ID to construct the subsequent <Dial>. Possible Causes Carriers may send invalid Caller IDs on Incoming calls to Twilio. If a specific Caller ID is not explicitly defined on the <Dial> verb, the invalid Caller ID will be passed to the destination. This may cause some destination providers to reject the call, and Twilio will mark it as failed. <?xml version="1.0" encoding="UTF-8"?><Response><Dial record="record-from-answer-dual"><Number>+441234567890</Number></Dial></Response>
  • e

    enough-nest-60267

    07/29/2025, 2:54 PM
    Hi everyone, has anyone experienced receiving 2–3 call attempts after rejecting the first call? The subsequent calls are not connected to the LiveKit agent. It seems like the telephony system is retrying the number. How can we handle this scenario so that when a customer rejects the call, all participants are properly disconnected?
  • p

    proud-processor-44533

    07/29/2025, 3:29 PM
    Hi everyone 👋 We’re currently working on extending the LiveKit SIP Gateway with video support, and I’d like to share our approach to ensure it aligns with the community’s expectations and can be accepted upstream. We’ve reviewed the discussions in issue #24 and PR #35, and fully support the vision outlined there — specifically: • Keeping SIP support audio-first, with video as an optional, non-core feature. • Ensuring the video logic is cleanly isolated and opt-in (e.g., via a build flag or runtime config). • Avoiding any hard dependencies or architectural changes that would affect existing SIP audio workflows. Our current focus is implementing a video forwarding logic based on VAD Last N speaker. The goal is to dynamically forward only the active video speaker (from LiveKit to SIP), optimizing bandwidth and improving integration. We're planning to: • Use a flexible VAD-based video routing component • Maintain compatibility with current SIP audio flows • Provide a default off / opt-in toggle for video support Would love your input before we start — especially on: • Best practices to isolate and optionally compile/activate the feature • Whether you foresee any blockers or concerns upstream Happy to align our contribution with LiveKit’s vision. Looking forward to your feedback!
    • 1
    • 1
  • q

    quiet-airplane-65783

    07/29/2025, 4:08 PM
    Hello everyone! I'm running a voice AI agent on LiveKit with SIP telephony integration and Plivo as my SIP trunk provider. However, the transcription quality is very poor - any idea on how this can be improved? Using Plivo in India - I do not think there is any method to improve the incoming audio quality. What i have tried so far - 1. Tried adding a gain function in the STT node before transcription happens. No benefit 2. Tried different STT providers - Deepgram Nova 3 and Nova 2 phonecall provide the best transcription, but the transcription quality is still unreasonable for single word responses.
    m
    • 2
    • 4
  • m

    mysterious-waitress-22500

    07/29/2025, 8:38 PM
    Does anyone have a list of known IP addresses for the LiveKit Hosted Outbound Trunks? Our carrier needs a list of IP's to white list - Thus far we've seen three different IP's across 10 test calls
  • b

    billions-book-73023

    07/30/2025, 1:13 AM
    🚨 Telnyx SIP: 486 Busy Here (Twilio works fine) Getting persistent 486 Busy Here with Telnyx SIP integration. Exact same LiveKit setup works perfectly with Twilio, so this is Telnyx-specific. Anyone successfully integrated Telnyx with LiveKit? Looking for insights on Telnyx-specific configuration requirements. Detailed config and logs in thread below..
    • 1
    • 4
  • r

    ripe-farmer-27598

    07/30/2025, 6:18 AM
    Hello Team, we are working on building the SIP trunk service for inbound and outbound calls. I would like to understand the server setup in India, as we plan to use an Indian SIP trunk provider. Additionally, which SIP trunk providers are supported in India with Livekit?
  • b

    bitter-crowd-18639

    07/30/2025, 10:43 AM
    Hi everyone, We are trying to use the SIP API (ListSIPOutboundTrunk and CreateSIPParticipant) on LiveKit Cloud, but we keep running into 401 invalid token errors. Here’s what we did: • Generated an API key & secret from the LiveKit Cloud dashboard (Project → Settings → API keys). • Created a JWT with HS256, using the API secret. • The payload we generated looks like this: { "iss": "APIWnyxGgTka2eP", "sub": "sip_admin", "exp": 1753871700, "sip": { "admin": true, "call": true } }
  • b

    bitter-crowd-18639

    07/30/2025, 10:45 AM
    • Then we tried calling the SIP API endpoint: curl -X POST "https://revoliq-1o4vy1v4.livekit.cloud/twirp/livekit.SIP/ListSIPOutboundTrunk" \ -H "Authorization: Bearer <generated_JWT>" \ -H "Content-Type: application/json" \ -d '{}'*But the response is always:*401 invalid token: <JWT>, error: go-jose/go-jose: error in cryptographic primitive。 Questions: 1. Are there any special requirements for API keys when using the SIP API (different from regular project keys)? 2. Is there a working example (Python or curl) for calling ListSIPOutboundTrunk with a valid JWT? 3. Do we need a different signing method, grant structure, or endpoint for SIP API calls? Thanks in advance for any help!
  • f

    faint-telephone-41876

    07/30/2025, 10:47 AM
    Hi! I'm integrating LiveKit SIP with Asterisk PBX. My agent terminates correctly but LiveKit SIP doesn't send BYE to Asterisk, so the call stays active. Any config I'm missing to make LiveKit SIP send BYE to Asterisk when agent disconnects? Thanks!
    c
    • 2
    • 1
  • s

    salmon-microphone-81072

    07/30/2025, 1:15 PM
    Hey folks. I've an issue with call quality. I use Twilio and Livekit SIP endpoint. It seems, that there is no latency or jitter, but the codec is really low (PCMU 8k). Do you know if there's a way to improve it?
    q
    b
    • 3
    • 8
  • d

    dry-helmet-74553

    07/30/2025, 5:10 PM
    Why does voice agent skip the initial greeting and continue the conversation from where the previous call ended, especially on second or later calls? Even i delete rooms
    • 1
    • 2
  • p

    plain-solstice-34504

    07/31/2025, 12:44 AM
    Hey everyone! 👋 I noticed in the official docs that “LiveKit does not support deployment to serverless and/or private kubernetes clusters because extra NAT layers make WebRTC unhappy.” But I’m curious if anyone here has actually pulled this off: • Environment: Azure AKS (private cluster) • Pods: LiveKit Server, SIP Server, Redis, and LiveKit Agent • Network: Private AKS connected to our SIP trunk provider via Azure ExpressRoute (so no public endpoints at all) Is this fully-private setup even feasible, or does WebRTC inevitably need some public IP exposure?
  • r

    ripe-arm-36009

    07/31/2025, 5:00 AM
    👋 Hello, team!
  • e

    early-pharmacist-32348

    07/31/2025, 5:02 AM
    🚨 LiveKit SIP Transfer Issue - Need Support Hey team, we're building a multi-lingual telephony support routing system using LiveKit with SIP (via Twilio), and we’re hitting a blocker with SIP URI-based call transfers. 🔧 What we're trying to do: • Caller reaches a switch agent via Twilio SIP trunk • Based on language, switch agent transfers the call to a specific LiveKit agent (SIP username) • All agents are part of the same LiveKit project, e.g.,
    <sip:agent1@project.sip>.livekit.cloud
    ❗️*Issue:* • Transfers using phone numbers work fine (
    sip_<phonenumber>
    identity appears). • Transfers using SIP URIs fail (
    LiveKit 408
    ,
    Twilio 503
    ) and target agents don’t show up in dashboard with correct SIP usernames. • This happens whether the call is from Twilio or an internal agent. • Docs are unclear about SIP identity registration, token usage, and agent setup for SIP routing. ❓ We need to confirm: • Does LiveKit Cloud support SIP URI-based internal transfers like
    sip:username@...
    ? • Should agents appear with SIP usernames when available? • Any token creation, project settings, or dispatch rules required? • Is there a code/config example for this flow? • Can we get debug help or a support session to resolve this? This SIP transfer functionality is central to our architecture — would appreciate any help or guidance!
  • c

    colossal-midnight-90278

    07/31/2025, 11:06 AM
    Can we transfer sip participants to different rooms?
  • a

    ancient-umbrella-90337

    07/31/2025, 4:05 PM
    Hey for the Analytics API is there anyway to get the data presented on the calls page of the cloud dashboard?
    • 1
    • 1
  • m

    mysterious-doctor-96559

    08/01/2025, 6:25 AM
    Hello team, Im new on livekit, im using livekit cloud for inbound calls twillio and voice agent I try to set it with sip trunk. It worked well with twilml app in all countries. But with sip trunk its failing with 407 in some countries, while i run the livekit agent locally front livekit cloud. On twillio i have: 1. active phone numbers 2. Sip trunk 3. Origination to sip livekit cloud 4. I tried to set credentials (didnt help) 5. Do i need sip domain ? 6. Sip ip ranges? When i deploy it to a server in germany nothing is working anymore. Im a bit lost
    h
    • 2
    • 1
  • n

    nutritious-receptionist-94656

    08/01/2025, 10:55 AM
    Hey Folks, doing a small research and who ever participate will be gifted a Amazon gift card . It will be one on one call. Is there a need for an alternative to twilio? If yes what are the shortcomings of twilio and what is missing? DM me if you want to talk about this and give some user feedback.
  • h

    helpful-lizard-52428

    08/02/2025, 10:35 AM
    Problem: Voice agent not responding despite correct configuration Context: • LiveKit agent deployed on Render.com • SIP configuration with existing trunk (+18148902469) • OpenAI API key hard-coded and functional • Agent successfully receives calls (logs show "received job request") Symptoms: 1. ✅ Agent starts correctly 2. ✅ It receives calls (job requests) 3. ✅ OpenAI API key is configured 4. ❌ Agent does not generate voice response Current configuration:
    Copy code
    # RealtimeModel with correct capabilities
    capabilities = RealtimeCapabilities(
        message_truncation=True,
        turn_detection=True,
        user_transcription=True,
        auto_tool_reply_generation=True
    )
    llm = RealtimeModel(capabilities=capabilities)
    
    # Session with audio options
    session = AgentSession(
        llm=llm,
        room_input_options=RoomInputOptions(
            close_on_disconnect=False,
            auto_send_audio=True,
        )
    )
    
    # Response generation
    await session.generate_reply(
        instructions="Greet the user in French..."
    )
    Questions for the community: 1. Why doesn't session.generate_reply() generate a voice response? 2. Are there specific logs to enable for debugging response generation? 3. Is the auto_send_audio=True configuration sufficient? 4. Do we need to configure anything else for the agent to speak automatically? Current logs: • Agent connects to the room • Waits 3 seconds • Attempts to generate a response • But no voice response is heard Tested: • ✅ OpenAI API key functional (tested locally) • ✅ SIP trunk configured and functional • ✅ Agent receives calls • ❌ Voice response generation doesn't work Can you help us identify why the agent doesn't speak despite a configuration that seems correct?
    a
    • 2
    • 1
  • d

    dazzling-printer-76295

    08/02/2025, 8:57 PM
    Has anyone experienced issue that agent is not responding after successful connection over outbound call? I see this issue when using LK agent v1.x. It works fine for v0.x