Prüfen ob Asterisk online ist (VoIP-ISDN-Fallback)

11. November 2005

Ihr Vorhaben

Sie haben einen Eintrag in der sip.conf, mit dem Sie über Internet telefonieren, z.B. [1und1]. Sie wollen im Dialplan (extensions.conf) überprüfen, ob die Asterisk den SIP-Server online erreichen kann, sprich, ob Internetzugang besteht und der SIP-Server verfügbar ist. Wenn ja, wollen Sie über SIP rauswählen, wenn nicht, alternativ über ISDN.

Das Vorgehen

Test mit ping

Wenn sip.1und1.de (mit der bekannten IP 212.227.15.197) nicht auf ping antwortet, wird die Nummer im Kontext [ISDNout] gewählt (die Applikation System springt um +101 weiter, wenn der Shellbefehl nicht erfolgreich war).


/etc/asterisk/extensions.conf:
[SIPout]
exten => _0.,1,System('ping -w 1 -c 1 212.227.15.197 > /dev/null')
exten => _0.,2,Dial(SIP/${EXTEN}@1und1,,Tr)
exten => _0.,102,Goto(ISDNout,${EXTEN},1)

Die Optionen -w 1 -q -c 1 sorgen dafür, dass ping nur eine Sekunde lang wartet und nur einen Ping sendet.

Übrigens: Ortsgespräche

Bei VoIP benötigt man auch bei Ortsgesprächen die Vorwahl. Folgende Zeile setzt diese automatisch vor alle Nummern, die nicht mir einer 0 beginnen:


/etc/asterisk/extensions.conf:
exten => _N.,1,Goto(SIPout,089${EXTEN},1)