Hi,
das Feature wird relativ selten benutzt und ist ohnehin nur “halbherzig” (bezüglich Rufnummernsignalisierung beipsielsweise) umgesetzt gewesen. Die “meisten” Failovergründe waren das eine Technelogie (Internet/ISDN) nicht mehr zur Verfügung stand und das fällt mittlerweile ja immer mehr weg. Abgehende Kanallimitierung bei SIP Providern ist nicht überall gang und gebe (i.d.R. verdient der Provider hier ja Verbindungsentgeld von seinem Kunden), bei vielen findet das nur eingehend statt.
Wie @rapha schon angeschnitten hat ist ein Redundanter Internetanschluss wesentlich weichtiger als ein zweiter SIP Provider. Wenn es dennoch benötigt wird sollte man das ganze über ein ausgehendes CustomScript “selbststricken” können.
Das Folgende ist nur ein ungetestetes Beispiel daher bitte mit Vorsicht genießen:
Erweitert Scripte ein neues Dialplanscript erstellen, einbinden: ausgehend
Beispielinhalt:
exten => s,1,NoOp(customFailover)
same => n,Set(__SPYGROUP=${MDC_CALLEE_NUM_NAT}:${MDC_CALLER_NUM})
same => n,ExecIf($[ "${MDC_HINT_HANGUP_HANDLER}" != "" ]?Set(CHANNEL(hangup_handler_push)=hdlr-hint,s,1(${MDC_HINT_HANGUP_HANDLER})))
same => n,ExecIf($[ "${MDC_HINT_HANGUP_HANDLER}" != "" ]?Set(DEVICE_STATE(Custom:${MDC_HINT_HANGUP_HANDLER})=INUSE))
same => n,Dial(PJSIP/${MDC_CALLEE_NUM_NAT}@mdc_trunk_conf-{TRUNKID},,tb(mdc_outgoing_predial^s^1))
same => n,GoToIf($[ "${DIALSTATUS}" = "ANSWER" ]?out)
same => n,PlayBack(beep)
same => n,Dial(PJSIP/${MDC_CALLEE_NUM_NAT}@mdc_trunk_conf-{TRUNKID2},,tb(mdc_outgoing_predial^s^1))
same => n,GoToIf($[ "${DIALSTATUS}" = "ANSWER" ]?out)
same => n,PlayBack(beep)
same => n(out),Return()
Wichtig ist hier das man bei dem Dial() den richtigen Trunkkontext setzt, diesen kann man in der /etc/asterisk/mdc_sip_trunk.conf nachsehen. Das ist hier mit {{{TRUNKID}}} gemeint, das wird also durch eine Ziffer erstetzt.
Grüße,
Steve