|
Home Resources Products
Developers |
Main • Routing
Routing modulesYate supports multiple routing modules that can be used together:
The priority of each of these modules can be adjusted to implement fallbacks to other methods. Round-robin routingCombining the callfork module with the rotate function from regexroute it is possible to implement round-robin routing, with or without fallback. Let's suppose we route all numbers starting with 031 through two main SIP providers and we have one H.323 provider as fallback. ^031.*$=fork $(rotate,$idx031,| sip/sip:\0@provider1.net,| sip/sip:\0@provider2.net) | h323/1010\0@provider3.net);maxcall=20000 We defined a list of two SIP call targets inside a rotate function. We also use a global (persistent between calls) variable conveniently named $idx031 so we remember it only rotates calls to the 031 prefix. Any other global variable name could be used. The H.323 fallback route is placed outside the rotate function so it's always called last. The maxcall parameter of the message applies to all outgoing calls. There is currently no way of setting separate parameters for each individual call. The first call comes in - let's suppose for 0310123. The initial value of variable $idx031 is undefined so zero will be assumed. SIP: sip:0310123@provider1.net The first that answers will continue the call. If any of them fails the call will attempt the next target. Now a call comes in for 0319876. Since the previous call has changed $idx031 to 1 the attempted targets will be: SIP: sip:0319876@provider2.net Finally, if instead of rotate we use the index function we will get round-robin routing without fallback between the two SIP providers, only with H.323 fallback route. Suppose we route: ^031.*$=fork $(index,$idx031,| sip/sip:\0@provider1.net,| sip/sip:\0@provider2.net) | h323/1010\0@provider3.net;maxcall=20000 The same incoming calls will generate outgoing calls to: SIP: sip:0310123@provider1.net and respectively: SIP: sip:0319876@provider2.net |
3 May 2010: 8 March 2010: 6-7 February 2010: 2 Nov 2009: 6 Aug 2008: 4 Aug 2008: 10 Jul 2008: Feb 2008: 21 Jan 2008: 3 September: 14 August: 16 April: 25 September: 25 September: 11 July 2006: 10 July 2006: June 1st 2006: |