A few India-specific telephony problems keep coming up here and in the agents repo: outbound calls to Indian carriers timing out before any SIP response, Plivo media-anchoring hangups, and no turn detection for Tamil. I packaged what I’ve learned into a small MIT library that drops into an existing agent:
Trunks pinned to India
india_sip_uri()gives the<subdomain>.india.sip.livekit.cloudURI to hand your carrieroutbound_trunk()builds aSIPOutboundTrunkInfowithdestination_country="in"and TCP set- Setup checklists for Exotel and Plivo, including the step behind most outbound timeouts: getting LiveKit’s India egress ranges allow-listed on the carrier’s SBC
check_outbound_trunk()flags existing trunks that will fail for Indian calls
Pre-call checks (TRAI)
check_call(): the 09:00–21:00 IST window for promotional calls, a DND/NCPR hook, Indian mobile validation, and a warning when the caller ID series (140 / 1600) doesn’t match the call’s purposeopening_line(): AI disclosure plus recording notice in English, Hindi and Tamil
Turn-taking
turn_handling("ta"): the open TamilEOT smart-turn model, kept active when code-mixed Tamil gets reported asen-IN(otherwise it silently falls back to fixed timing)MultilingualModelfor Hindi and Englishshort_answers=Truecapsmax_delayat 1.2 s for yes/no and slot-picking phases (background: livekit/agents#6415)
session = AgentSession(
vad=silero.VAD.load(**vad_options("ta")),
turn_handling=turn_handling("ta", short_answers=True),
...
)
Tested against livekit-agents 1.8.6; the 70 tests need no API keys. The generic guidance for other Indian carriers (Vobiz, Tata Smartflo, Airtel) is the least verified part, so corrections from anyone running those in production would be very welcome.