...
As shown in
Xref |
---|
AnchorName | ps_trunk_failover_menu |
---|
|
there's one option called "FAILOVER GROUP" just between "BLOCKED" and your first SIP Trunk name. First part of this configuration is to choose this option as default outbound Trunk.
Once you're done you need to change content of one file in your
. Retrieve new file content by visiting url: Code Block |
---|
https://<host>/dialingRule/failoverDialplan |
Eg: if your
hostname is "pippo.madama.at", then you should write in your browser's address field the following address: Code Block |
---|
https://pippo.madama.at/dialingRule/failoverDialplan |
The resulting page is pure text configuration lines as in example below:
Code Block |
---|
[trunk-failover]
exten => _[+0-9]X.,1,Verbose(Failover group)
same => n,Set(PREV_CHAN=${canale})
same => n(__trunk_ffefd2c02f46993e),Verbose(Trying to dial using trunk "Trunk 10" __trunk_ffefd2c02f46993e)
same => n,Set(NETWORKSTATUS=${SIPPEER(__trunk_ffefd2c02f46993e,status)})
same => n,Gotoif($["${NETWORKSTATUS}"="UNREACHABLE"]?__trunk_616683993964bc16:)
same => n,Set(SHARED(Sip_Trunk,${PREV_CHAN})=__trunk_ffefd2c02f46993e)
same => n,Dial(SIP/__trunk_ffefd2c02f46993e/${EXTEN})
same => n,Hangup()
same => n(__trunk_616683993964bc16),Verbose(Trying to dial using trunk "Trunk 11" __trunk_616683993964bc16)
same => n,Set(NETWORKSTATUS=${SIPPEER(__trunk_616683993964bc16,status)})
same => n,Gotoif($["${NETWORKSTATUS}"="UNREACHABLE"]?__trunk_d346973491bc1df3:)
same => n,Set(SHARED(Sip_Trunk,${PREV_CHAN})=__trunk_616683993964bc16)
same => n,Dial(SIP/__trunk_616683993964bc16/${EXTEN})
same => n,Hangup()
same => n(last),Verbose(No trunk reachable)
same => n,Set(SHARED(Sip_Trunk,${PREV_CHAN})=FAILOVER_FAILED)
same => n,Hangup()
[trunk-failover-2]
exten => _[+0-9]X.,1,Verbose(Failover group)
same => n,Set(PREV_CHAN=${canale})
same => n(__trunk_d346973491bc1df3),Verbose(Trying to dial using trunk "Trunk 12" __trunk_d346973491bc1df3)
same => n,Set(NETWORKSTATUS=${SIPPEER(__trunk_d346973491bc1df3,status)})
same => n,Gotoif($["${NETWORKSTATUS}"="UNREACHABLE"]?__trunk_6fd24f043acea450:)
same => n,Set(SHARED(Sip_Trunk,${PREV_CHAN})=__trunk_d346973491bc1df3)
same => n,Dial(SIP/__trunk_d346973491bc1df3/${EXTEN})
same => n,Hangup()
same => n(__trunk_6fd24f043acea450),Verbose(Trying to dial using trunk "Trunk 13" __trunk_6fd24f043acea450)
same => n,Set(NETWORKSTATUS=${SIPPEER(__trunk_6fd24f043acea450,status)})
same => n,Gotoif($["${NETWORKSTATUS}"="UNREACHABLE"]?__trunk_27f415d6fb6346c0:)
same => n,Set(SHARED(Sip_Trunk,${PREV_CHAN})=__trunk_6fd24f043acea450)
same => n,Dial(SIP/__trunk_6fd24f043acea450/${EXTEN})
same => n,Hangup()
same => n(last),Verbose(No trunk reachable)
same => n,Set(SHARED(Sip_Trunk,${PREV_CHAN})=FAILOVER_FAILED)
same => n,Hangup() |
You can notice that we have two blocks of code for each failover group. In this case we are using 4 Trunks named:
- FAILOVER GROUP 1
- FAILOVER GROUP 2
You have to copy page content and keep it somewhere handy.
Now you need to access via SSH to your
and become root. Then edit file /etc/asterisk/trunk-failover.conf : Code Block |
---|
[root@xxx ~]# vim /etc/asterisk/trunk-failover.conf |
Note |
---|
On is also available "nano" editor, if you feel uncomfortable with "vim" one. |
Standard file's content is like this:
Code Block |
---|
[trunk-failover]
exten => _[+0-9]X.,1,Verbose(Failover group)
same => n,Set(PREV_CHAN=${canale})
same => n(last),Verbose(No trunk reachable)
same => n,Set(SHARED(Sip_Trunk,${PREV_CHAN})=FAILOVER_NOT_CONFIGURED)
same => n,Hangup() |
You need to remove all lines and change the content with the ones you copied from web console at the beginning of the operation.
Once you're done just save the file. When you're back in console, as root you can reload dialplan by issuing the following command:
Code Block |
---|
[root@xxx ~]# rasterisk -x "dialplan reload"
Setting max files open to 65536
Privilege escalation protection disabled!
See https://wiki.asterisk.org/wiki/x/1gKfAQ for more details.
Dialplan reloaded.
[root@xxx ~]# |
Now your Trunk failover configuration is completed. Any time one Trunk of yours resulted Unreachable,
would try to use the next one configured. If all your trunks failed, then the call would be rejected (as you can expect, by the way). Info |
---|
It's possible to choose the exact priority by correctly naming your Trunks. Order followed is alphabetical. |
...
4.4.3 Re-route prefix (optional)
This This option is to replace prefix to create conditional routing rules for outbound calls.
...