Late routing Module
Line 5: | Line 5: | ||
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 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. | ||
+ | |||
+ | ===How it works=== | ||
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. | 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. | ||
− | + | ====Notes==== | |
* No prerouting stage takes place. Prerouting is assumed to have already happened. | * 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. | * 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. | ||
− | |||
===Configuration=== | ===Configuration=== | ||
Line 45: | Line 46: | ||
* [[Example of forking a call using lateroute]] - using lateroute from regexroute.conf | * [[Example of forking a call using lateroute]] - using lateroute from regexroute.conf | ||
+ | |||
+ | '''See also''' | ||
+ | * [[Regular expressions]] | ||
+ | * [[Register]] |
Revision as of 12:51, 19 November 2012
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.
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.
Contents |
How it works
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.
Notes
- 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.
Configuration
File lateroute.conf
[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
Usage examples
- Example of forking a call using lateroute - using lateroute from regexroute.conf
See also