Late routing Module
This module can be used whenever you need to route the calls to one or several numbers or aliases whose addresses are not known in advance - like the phones or clients registered to Yate.
A very common usage is in forking the call to several numbers since when building the fork only the numbers are known - not their currently registered location. Other common use is the handling of some ENUM routes pointing back to PSTN.
How it Works
The late routing module allows making a late routing decision in Yate's message flow. Routing is possible in the call.execute message, setting a module for the outbound call leg.
The module works by intercepting specific call.execute messages (based on the callto parameter) and redispatching the message as call.route. If the routing succeeds the callto parameter is replaced with the result of routing and the message is allowed to continue processing. Any parameters added or modified during routing will reach the outbound channel as expected.
- No prerouting stage takes place. Prerouting is assumed to have already happened.
- Avoid routing loops. Take extra care to avoid routing loops when multiple servers are involved since forwarding loop avoidance information may be impossible for the interconnect protocol.
[general] ; Global settings of the late routing module ; enabled: boolean: Enable late routing module operation ;enabled=true if the list of types is not empty ; priority: int: Priority of call.execute handler ;priority=75 ; types: list: Comma separated list of target types to be late routed ; For each target of the form type/NNN a route request for NNN will be made ; The "pstn" and "voice" types must be enabled in the ENUM module ;types=lateroute,route,pstn,voice ; regexp: string: Regular expression describing callto match rules ; OBSOLETE - do not use, for backwards compatibility only ;regexp= ; called: string: Template for creating calling number from regexp match ; OBSOLETE - do not use, for backwards compatibility only ;called=\0
- Example of forking a call using lateroute - using lateroute from regexroute.conf