Hi LiveKit Team,
We are building a healthcare voice AI platform using LiveKit Agents and LiveKit Telephony.
We have a specific architecture question and would appreciate a short meeting with someone from the LiveKit team.
Our requirement is:
-
One hospital has one AI voice agent/persona.
-
The hospital can have multiple phone numbers.
-
We want to link multiple phone numbers to the same AI agent.
-
Calls coming to any of those numbers should be handled by the same agent.
-
At the same time, our application needs to know which phone number was called so that we can identify the hospital/number and apply the appropriate configuration.
We would like to confirm whether this architecture is supported with LiveKit SIP/Telephony and understand the recommended implementation.
Could you please arrange a short meeting with someone from your telephony/agents team?
We would be happy to share our current architecture and use case during the meeting.
Best regards,
Lily
Quto AI
@Lily_Singhal, This architecture is supported, and it needs nothing custom. Put all of the hospital’s numbers on one inbound trunk: the trunk’s numbers field is a list, so many DIDs share a single trunk (inbound trunk). Then use one dispatch rule that names your agent, so a call to any of those numbers is handled by the same agent (dispatch rule).
The “which number was called” part arrives on the SIP participant. LiveKit sets sip.trunkPhoneNumber to the number that was dialed and sip.phoneNumber to the caller, and your agent reads them from participant attributes (workflow setup). So you branch the hospital config on the dialed number:
# once the SIP caller has joined, on the SIP participant:
dialed = participant.attributes.get("sip.trunkPhoneNumber") # the hospital number that was called
caller = participant.attributes.get("sip.phoneNumber") # the patient's caller ID
config = hospital_config_for(dialed) # pick persona/config by dialed number
That covers all four points with one trunk, one dispatch rule, one agent, and a lookup on the dialed number. You need separate trunks or rules only when a number requires different SIP-level handling, not for per-hospital persona logic, which is app-level. If you still want a live architecture review, LiveKit support or sales can arrange it, but the pattern itself is standard and documented.