Asterisk: Einfache Fallback-Lösung oder Denkfehler?

mirkomueller

Neuer User
Mitglied seit
20 Jan 2005
Beiträge
27
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich nutze in der extensions.conf folgende Fallback-Lösung um im Falle eines Ausfalls des SIP-Providers einen zweiten zu wählen. Und falls dieser scheitert per ISDN rauszugehen:

;Zuerst Hauptprovider versuchen
exten => _.,51,Dial(SIP/${EXTEN}@${SIPACCOUNT},60,rtT)
;Fallback auf Alternativprovider, falls Hauptprovider nicht verfuegbar
exten => _.,52,Dial(SIP/${EXTEN}@${ALTERNATIVPROVIDER},60,rtT)
;Fallback auf ISDN, falls Haupt- und Alternativprovider nicht verfuegbar
exten => _.,53,Dial(CAPI/${CAPIMSN}:${EXTEN},60,rtT)

Das Ganze klappt auch soweit - nur kommt mir das zu einfach vor. Mache ich evtl. einen Denkfehler?

Einen Fehler habe ich schon erkannt, kann ihn aber verschmerzen: Wenn nach 60 Sekunden der Gegenüber nicht abnimmt, kommt ein weiterer Anruf über den zweiten Provider.

Die Möglichkeit mit dem ChanIsAvail-Befehl war mir zu unsicher - der hat in den Tests meist versagt.

Am liebsten hätte ich irgendwie abgefragt, ob der entsprechende SIP-Account aus der sip.conf des Status "registered" hat - weiß aber nicht wie (evtl. AGI-Skript?)

Habt ihr evtl. eine bessere automatische Fallback-Lösung in der Schublade?

Viele Grüße,
Mirko
 
Den "Fehler" mit den 60 Sekunden kannst du über ein GotoIf und die Variable $DIALSTATUS abfangen.
 
Hi ecco,

super, danke für den Tipp. Habe ich integriert und klappt wunderbar.

Sieht z.B. jetzt so aus:

Code:
exten => _.,50,AbsoluteTimeout(5400)
exten => _.,51,Dial(SIP/${EXTEN}@${SIPACCOUNT},60,rtT)
;Falls SIPACCOUNT nicht erreichbar, zum Alternativprovider springen
exten => _.,52,GotoIf($[${DIALSTATUS} = NOANSWER]?60)
exten => _.,53,Congestion()
exten => _.,54,HangUp()
exten => h,1,HangUp()

;Fallback auf Alternativprovider, falls Hauptprovider nicht verfuegbar
exten => _.,60,NoOp(Hauptprovider ${SIPACCOUNT} ist zurzeit nicht erreichbar. Probiere Alternative ${ALTERNATIVPROVIDER})
exten => _.,61,Dial(SIP/${EXTEN}@${ALTERNATIVPROVIDER},60,rtT)
;Falls ALTERNATIVPROVIDER nicht erreichbar, per ISDN rauswaehlen
exten => _.,62,GotoIf($[${DIALSTATUS} = NOANSWER]?70)
exten => _.,63,Congestion()
exten => _.,64,HangUp()
exten => h,1,HangUp()

;Fallback auf ISDN, falls Haupt- und Alternativprovider nicht verfuegbar
exten => _.,70,NoOp(Alternativprovider ${ALTERNATIVPROVIDER} ist zurzeit nicht erreichbar. Probiere ISDN mit MSN ${CAPIMSN})
exten => _.,71,Dial(CAPI/${CAPIMSN}:${EXTEN},60,rtT)
exten => _.,72,Congestion()
exten => _.,72,HangUp()
exten => h,1,HangUp()
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.