Skip to main content

Intent routing

Intent routing decide what happens after the assistant understands the caller’s intent.

A router maps an intent or function name to an adapter.

Intent routers are declared under [routers].

[routers]
[routers.intent]
[routers.intent.default]
default_adapter = "hangup"
enabled = true

Intent routers

Intent routers live under [routers.intent].

[routers.intent.default]
default_adapter = "hangup"
enabled = true

In this example, the router name is default.

Policies reference this router by name:

[policies.default]
intent_router = "default"

Default adapter

The default_adapter is used when no explicit route matches.

default_adapter = "hangup"

This provides a safe fallback.

Router policies

Routers can include policy gates.

[[routers.intent.default.policies]]
intents = ["call_transfer", "hangup"]
type = "allow_list"

This example allows only the listed intents through that policy rule.

Use allow lists when you want strict control over which intents can be routed.

How routers connect to policies

A router becomes active through a policy.

[policies.concierge]
intent_router = "default"

The active profile selects the policy, and the policy selects the router.