setup_sip_routing

View as MarkdownOpen in Claude

Enable SIP-based routing across all registered agents. When a SIP call arrives, the server extracts the username from the SIP address and routes the request to the matching agent.

With auto_map enabled, the server automatically creates username-to-route mappings from each agent’s name and route path. You can add explicit mappings with register_sip_username().

Call this method after registering agents. Agents registered after setup_sip_routing() also receive the routing callback automatically.

Parameters

route
strDefaults to /sip

The URL path where SIP routing requests are handled. Each registered agent receives a routing callback at this path.

auto_map
boolDefaults to True

Automatically generate SIP username mappings from agent names and route paths. For example, an agent named "sales-agent" at route "/sales" gets two mappings:

  • "salesagent" (agent name, lowercase alphanumeric and underscores only)
  • "sales" (route path without leading slash)

Returns

None

Calling setup_sip_routing() more than once logs a warning and returns early. SIP routing can only be configured once per server.


register_sip_username

Create an explicit mapping from a SIP username to an agent route. The username is stored lowercase for case-insensitive matching.

SIP routing must be enabled via setup_sip_routing() before calling this method. If routing is not enabled, a warning is logged and the call is a no-op.

Parameters

username
strRequired

The SIP username to map (e.g., "sales-team"). Matched case-insensitively.

route
strRequired

The target agent route (e.g., "/sales"). A warning is logged if the route does not correspond to a registered agent.

Returns

None

Examples

SIP routing with auto-mapping

1from signalwire import AgentServer
2from signalwire import AgentBase
3
4sales = AgentBase(name="sales", route="/sales")
5sales.set_prompt_text("You are a sales assistant.")
6support = AgentBase(name="support", route="/support")
7support.set_prompt_text("You are a support assistant.")
8
9server = AgentServer(port=3000)
10server.register(sales)
11server.register(support)
12
13server.setup_sip_routing("/sip", auto_map=True)
14server.register_sip_username("help-desk", "/support")
15
16server.run()

With this configuration, SIP calls are routed as follows:

SIP AddressResolves To
sip:sales@example.com/sales (auto-mapped from route)
sip:salesagent@example.com/sales (auto-mapped from agent name)
sip:help-desk@example.com/support (manual mapping)

Manual username registration

1from signalwire import AgentServer
2from signalwire import AgentBase
3
4sales = AgentBase(name="sales", route="/sales")
5sales.set_prompt_text("You are a sales assistant.")
6
7server = AgentServer(port=3000)
8server.register(sales)
9server.setup_sip_routing("/sip")
10server.register_sip_username("sales-team", "/sales")
11server.register_sip_username("tech-support", "/support")
12server.register_sip_username("accounts", "/billing")
13server.run()