setupSipRouting

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 autoMap enabled, the server automatically creates username-to-route mappings from each agent’s name and route path. You can add explicit mappings with registerSipUsername().

Call this method after registering agents. Agents registered after setupSipRouting() also receive SIP routing automatically.

Parameters

route
stringDefaults to /sip

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

autoMap
booleanDefaults 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

void

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


registerSipUsername

Create an explicit mapping from a SIP username to an agent route. The username is stored lowercase for case-insensitive matching. Routes are normalized: leading / is added if missing and trailing slashes are stripped.

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

Parameters

username
stringRequired

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

route
stringRequired

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

Returns

void

Examples

SIP routing with auto-mapping

1import { AgentBase, AgentServer } from '@signalwire/sdk';
2
3const sales = new AgentBase({ name: 'sales', route: '/sales' });
4sales.setPromptText('You are a sales assistant.');
5const support = new AgentBase({ name: 'support', route: '/support' });
6support.setPromptText('You are a support assistant.');
7
8const server = new AgentServer({ port: 3000 });
9server.register(sales);
10server.register(support);
11
12server.setupSipRouting('/sip', true);
13server.registerSipUsername('help-desk', '/support');
14
15await server.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

1import { AgentBase, AgentServer } from '@signalwire/sdk';
2
3const sales = new AgentBase({ name: 'sales', route: '/sales' });
4sales.setPromptText('You are a sales assistant.');
5
6const server = new AgentServer({ port: 3000 });
7server.register(sales);
8server.setupSipRouting('/sip');
9server.registerSipUsername('sales-team', '/sales');
10server.registerSipUsername('tech-support', '/support');
11server.registerSipUsername('accounts', '/billing');
12await server.run();