Currently this is an unofficial module that must be manually installed. It can be downloaded from this unofficial repository. See this FreePBX module tutorial if you need help understanding how to install it.
Alternately, here is how to get and install this file (version 0.0.1) using wget:
tar -xzvf extendedrouting-0.0.1.tgz
rm -f extendedrouting-0.0.1.tgz
This unofficial FreePBX module adds Extended Routing capabilities to FreePBX. It adds a failover destination to outbound routes, and also allows you to choose an outbound route as a destination from other parts of the dialplan.
Some possible uses for this module (just as examples, there are many others):
Use #1 - controlling costs.
Suppose that on a particular route, you have some free or low-cost trunks, and one trunk that costs (more) money to use, and you want to fall through to it only as a last resort, and you want to know when you are using that expensive trunk. You don't want to have a different route with a different dial pattern, since that would be a nuisance (i.e. dial... oops "all circuits are busy"... hang up and dial the expen$ive route). So you set the costly trunk as the last trunk in your standard route, but the problem is that up to now, you have had no way of knowing when you are talking on that trunk, other than by watching the CLI.
Enter extended routing.
You set up two routes, with the same dial patterns. The second is your high-cost route that includes the expen$ive trunk, and because of its priority it will normally never get hit (unless someone is in a custom context that only has access to the more expensive route). Add a failover destination on the first route that goes on to the second, and put a pin on the second. You now have a very simple method of trying multiple routes with the SAME dial pattern, and by requiring a pin the caller must affirmatively choose to use that route.
Alternatively you can fail the first route to a custom sound, and then continue to the second route without a pin. In this case it will simply warn you that you're on a more costly call, but are not required to input a pin. But, note that in version 0.0.1, you cannot use a dialplan injection as the sound source (see "Limitations" section below).
Use #2 - routes as a destination.
You have a few people in a restrictive custom context. But, you have another Asterisk box on which you don't mind them having unlimited access. You have an IAX2 trunk set up between the two. You can't set up an outbound route that allows "everything" (a dot as the pattern), or else all of your calls may start going out via that trunk. So instead, set up the route and give NO ONE access to it. Then you can fail over any custom context to that route, and anything they don't have permission for will try that route (this one can also be accomplished using priorities in a custom context, but this is probably safer.)
Use #3 - failover for routes.
You have DISA set up, and you don't want Allison to tell you that all circuits are busy and then hang up. You would rather have your outbound routes fail to the "all circuits busy" message, but then go to your IVR so you can reenter the DISA (thereby avoiding the need for you to hang up and call back).
Limitations in version 0.0.1: Dialplan Injections currently mess up the dialed number, and therefore should not send to an outbound route as a destination. For example, they cannot be used as a "middleman" to generate the sound mentioned in "Use #1" because they will lose the dialed number. This will be fixed soon. Also, when using outbound routing as a destination, it has the same rules as when using a custom context as a destination. You do NOT have the chance to dial another number (it is not DISA), it simply takes the dialed number and tries it out that route.
[size=20]Installation of Beta version[/size]
Download the latest Beta version using the instructions in the first paragraph.
If you did not use the instructions for getting and installing the module using wget, then expand the .tgz file into the /var/www/html/admin/modules directory - it will create a new directory called extendedrouting. Make sure the group and owner of that directory are asterisk and that the permissions match that of the other module subdirectories.
Browse to FreePBX, Tools | Module Administration. You should see an entry for Extended Routing. Click on it, click install, then click process and the red bar as usual.
Module Author: naftali5