FAQ#1000671

Asterisk auf Fritzbox Phone 14.02.2017 07:46:19 FAQ-Artikel-Ausdruck Kategorie:

Software::Asterisk

Bewertungen:

0

Status:

öffentlich (Alle)

Ergebnis:

0.00 %

Sprache:

de

Letzte Aktualisierung:

10:08:11 - 16.08.2012

Schlüsselwörter asterisk, phone

Symptom (öffentlich) [1]http://www.asterisk-kompakt.de/asterisk/45-asterisk-auf-fritzbox-phone.html Einleitung Dieser Artikel beschreibt die Installation und Konfiguration von Asterisk 1.4 auf einer Fritzbox Phone. Die Installation erfolgt auf einen angeschlossenen USB Stick. Zum besseren Verständniss werden im Beispiel Rufnummern verwendet die frei erfunden sind. Die Fritzbox ist über einen ISDN Mehrgeräteanschluß (PtMP) an das öffentliche ISDN Netz mit den fiktiven MSNs 701230, 701231 und 701232 angeschlossen. Desweiteren verfügt sie über einen DSL Anschhluß und Zugangsdaten zu einem VoIP-SIP Provider. Die Voip Rufnummerm lauten im Beipiel 651230 und 651231. Als interne Nebenstellen werden zwei Softphones verwendet, die sich als SIP Clients an den Asterisk der Fritzbox anmelden. Die internen Rufnummern Softphones lauten 10 und 11. Die analogen Nebenstellen der Fritzbox werden gegenüber den Asterisk auch als SIP Clients konfiguriert. Die internen Rufnummern lauten 20, 21 und 22. Der interne S0 Bus an der Fritzbox wird von Asterisk auch konfiguriert und genutzt. An diesem ist ein ISDN Telefon mit der internen MSN 30 angeschlossen. Die Fritzbox hat die IP Adresse 192.168.255.202. Die folgende Skizze soll das Beispiel veranschaulichen: Installation Bevor man mit der Installation beginnen kann muß der Telnetzugang zur Fritzbox geöffnet werden. Dazu schließt man ein analoges Telefon an die Fritzbox an und aktiviert den Zugang über folgende Eingabe auf dem Tastaturfeld: #96*7* Als nächstes verbindet man sich mit der Fritzbox via Telnet und startet die Installation von Asterisk auf den USB Stick über folgende Befehle: cd /var wget http://www.spblinux.de/fbox.new/cfg_asterisk14 chmod 775 ./cfg_asterisk14 ./cfg_asterisk14 usb_install Ich installiere gerne noch den Midnight Commander zur besseren Administration (optional): cd /var wget http://www.spblinux.de/fbox.new/cfg_mc chmod 755 cfg_mc ./cfg_mc usb_install Damit Asterisk nach einem Neustart der Fritzbox automatisch startet muß die Datei /var/flash/debug.cfg angepasst werden. Diese sollte auf einer "jungfräulichen Fritzbox leer sein, und kann mit den Editor nvi bearbeitet werden: nvi /var/flash/debug.cfg Erhält man eine Fehlermeldung "Datei oder Verzeichnis nicht gefunden" liegt das daran daß die Datei noch nicht existiert (obwohl sie mit ls angezeigt wird). In diesem Fall hilft ein Neuanlegen mit folgendem Befehl: echo > /var/flash/debug.cfg Folgende Zeilen fügt man in die Datei /var/flash/debug.cfg ein: # USB Stick zuweisen USB=/var/media/ftp/name-des-usb-stick # Asterisk automatisch starten let i=0 while ! [ -f $USB/addons/cfg_asterisk14 ]; do sleep 10 let i +=1 [ $i -lt 18 ] && continue echo "KEIN asterisk" break done

Seite 1

FAQ#1000671 cd $USB/addons ./cfg_asterisk14 usb_install ./cfg_asterisk14 start # mc automatisch starten ./cfg_mc usb_install # Startdateien nach /var/bin/verlinken # so kann man Asterisk und mc aud dem Verzeichnis /var/bin/ starten (optional) mkdir /var/bin sleep 2 ln -s $USB/addons/cfg_asterisk14 /var/bin/cfg_asterisk14 ln -s $USB/addons/cfg_mc /var/bin/cfg_mc Bitte daruf achten den Namen des USB Sticks entsprechend anzupassen. Für Leute die mit den nvi Editor nicht so konform sind hier mal ein paar Tastaturkürzel: i einfügen x löschen v markieren y kopieren p einfügen dd zeile löschen mit ESC Editiermodus verlassen und mit: :wq speichern und beenden :q! beenden ohne speichern Manuell wird Asterisk über folgenden Befehl gestartet: /var/bin/cfg_asterisk14 start Über eine Remote Shell kann man sich auf einen laufenden Asterisk mit folgendem Befehl verbinden: /var/chroot /var/asterisk14 bin/asterisk -rvvv Konfiguration des Asterisk Die Konfiguration von Asterisk erfolgt über die Konfigurationsdateien im Verzeichnis /var/asterisk14_usb/etc/asterisk. Entweder editiert man diese direkt über Telnet mittels nvi oder mit Hilfe des Editors vom Midnight Commander (/var/bin/cfg_mc start) In bevorzuge die Methode mich mit einem lokalen Editor per FTP mit der Fritzbox zu verbinden und so die Konfigurationsdatein zu ändern. capi.conf Über die capi.conf wird der externe S0 Bus der Fritzbox (Anschluß ans öffentliche ISDN Netz) und der interne S0 Bus (Anschluß interner ISDN Nebenstellen) konfiguriert. Der Kontext ISDN-TE konfiguriert den externen S0 Bus und der Kontext ISDN_NT den internen. Auf die einzelnen Parameter möchte ich in diesem Howto (vorerst) nicht weiter eingehen. [general] nationalprefix=0 internationalprefix=00 rxgain=1.0 txgain=1.0 language=de ; externer S0 Bus [ISDN-TE] ntmode=no isdnmode=msn incomingmsn=* defaultcid=701230 controller=1 group=1 softdtmf=off relaxdtmf=off bridge=no devices=2 context=from-extern ; interner So Bus [ISDN-NT] ntmode=yes isdnmode=msn incomingmsn=* controller=3 group=3 softdtmf=off relaxdtmf=off accountcode= bridge=no devices=2 context=from-intern sip.conf In der sip.conf werden die lokalen SIP Nebenstellen konfiguriert. Außerdem existieren zwei Kontexte für die Rauswahl über den SIP Provider. Im Kontext general werden allgemeine Einstellungen vorgenommen. Wichtig ist hier, daß Asterisk nicht auf dem Standard SIP Port 5060 lauscht sondern 5061, da die Fritzbox selber Port 5060 verwendet. Über die register Anweisung meldet man sich beim externen SIP Povider an um Anrufe aus dem öffentlichen Netz

Seite 2

FAQ#1000671 entgenzunehmen. Die Kontexte sipgate-1 und sipgate-2 stehen für zwei ausgehende Leitungen. Die Kontexte 10 und 20 für lokale SIP Clients (x-lite) und 20, 21 und 22 für die analogen Nebenstellen der Fritzbox. [general] language=de bindport=5061 disallow=all allow=alaw allow=ulaw allow=GSM nat=yes canreinvite=yes context=from-extern ; Notwendig um Anrufe vom SIP provider anzunehmen register => SIP-ID-XXX: Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. /SIP-ID-XXX register => SIP-ID-YYY: Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann. /SIP-ID-YYY ; ausgehende Sipgate Leitung [sipgate-1] host = sipgate.de username = SIP-ID-XXX secret = xxxxx fromuser = SIP-ID-XXX fromdomain = sipgate.de canreinvite = no qualify = yes nat = yes insecure = very type = friend ; ausgehende Sipgate Leitung [sipgate-2] host = sipgate.de username = SIP-ID-YYY secret = xxxxx fromuser = SIP-ID-YYY fromdomain = sipgate.de canreinvite = no qualify = yes nat = yes insecure = very type = friend ; SIP Client im Netzwerk [10] host=dynamic type=friend user=10 secret=10 call-limit=1 context=from-intern ; SIP Client im Netzwerk [11] host=dynamic type=friend user=11 secret=11 call-limit=1 context=from-intern ; Analoge Nebestelle auf der Fritzbox [20] host=dynamic type=friend user=20 secret=20 call-limit=1 context=from-intern ; Analoge Nebestelle auf der Fritzbox [21] host=dynamic type=friend user=21 secret=21 call-limit=1 context=from-intern ; Analoge Nebestelle auf der Fritzbox [22] host=dynamic type=friend user=22 secret=22 call-limit=1 context=from-intern extensions.conf Die extensions.conf könnte man als Herzstück des Asterisk bezeichnen. Sie stellt den Dialplan dar und entscheidet wie ankommende und gehende Rufe geroutet werden. Der Kontext lokal regelt das Anrufverhalten der lokalen Nebenstellen untereinander. In den Kontext from-extern gelangen alle eingehenden Rufe aus den öffentlichen

Seite 3

FAQ#1000671 Netz. Diese werden per Goto Anweisung an die lokalen Nebenstellen weitergeleitet. Wird beispielsweise die 701230 angerufen, klingelt die lokale Nebenstelle 10. Über den Kontext outbound-SIP werden Rufe in das öffentliche Netz über den SIP Provider geroutet. Dabei wird das Macro dialout-trunk verwendet. Sollte die erste Sipgate Leitung schon belegt sein wird automatisch die zweite Leitung verwendet. Ist diese auch nicht verfügbar wird aufgelegt. Um die Sipgate Leitungen für die Rauswahl zu verwenden, muß die Amtsvorwahl 0 gefolgt von der eigentlichen Rufnummer gewählt werden. Zur Rauswahl über das ISDN Netz wird der Kontext outbound-ISDN verwendet. Möchte man diesen verwendet muß die 8 gefolgt von der eigentlichen Rufnummer gewählt werden. [globals] [general] static=yes writeprotect=no [default] ; Kontext fuer eingehende Rufe aus dem öffentlichen Netz [from-extern] exten = _X.,1,Wait exten = _X.,2,NoOP(Anruf von ${CALLERID(num)} fuer ${EXTEN}) exten = _X.,3,Macro(hangupcall) ; Rufzuordnung exten = 701230,3,Goto(local,10,1) exten = 701231,3,Goto(local,11,1) exten = 701232,3,Goto(local,12,1) exten = SIP-ID-XXX,3,Goto(local,20,1) exten = SIP-ID-YYY,3,Goto(local,30,1) ; Kontext fuer Rufe von intern [from-intern] include => local include => outbound-calls ; Kontext zum Rufen der lokale Nebenstellen [local] exten = 10,1,MACRO(local-dial,SIP,10) exten = 11,1,MACRO(local-dial,SIP,11) exten = 12,1,MACRO(local-dial,SIP,12) exten = 20,1,MACRO(local-dial,SIP,20) exten = 21,1,MACRO(local-dial,SIP,21) exten = 30,1,MACRO(local-dial,CAPI/ISDN-NT,30) ; Kontext fuer ausgehende Rufe [outbound-calls] include = outbound-ISDN include = outbound-SIP ; ausgehende Rufe ueber ISDN [outbound-ISDN] exten = _8XXX.,1,Macro(dialout-trunk,ISDN-TE|CAPI|${EXTEN:1}|) exten = _8XXX.,n,Macro(hangupcall) ; ausgehende Rufe ueber SIP [outbound-SIP] exten = _0XXX.,1,Macro(dialout-trunk,sipgate-1|SIP|${EXTEN:1}|) exten = _0XXX.,n,Macro(dialout-trunk,sipgate-2|SIP|${EXTEN:1}|) exten = _0XXX.,n,Macro(hangupcall) ;############# BEGIN MACROS ######################### [macro-hangupcall] exten => s,1,Hangup ; Macro zum wählen der lokalen Nebenstellen [macro-local-dial] exten => s,1,Set(CHANNEL(LANGUAGE)=de) exten => s,n,Dial(${ARG1}/${ARG2},60,tT) exten => s,n,Goto(s-${DIALSTATUS},1) exten => s-NOANSWER,1,Playback(vm-theperson) exten => s-NOANSWER,n,Playback(vm-isunavail) exten => s-NOANSWER,n,Hangup exten => s-BUSY,1,Playback(vm-theperson) exten => s-BUSY,n,Playback(vm-isonphone) exten => s-BUSY,n,Hangup exten => s-CHANUNAVAIL,1,Playback(pbx-invalid) exten => s-CHANUNAVAIL,n,Hangup ; Macro zum rauswählen in das öffentliche Netz [macro-dialout-trunk] exten => s,1,Set(TRUNK_NAME=${ARG1}) exten => s,n,Set(CHANNELTYP=${ARG2}) exten => s,n,Set(DIALNUMBER=${ARG3}) exten => s,n,Goto(d-${CHANNELTYP},1) exten => d-SIP,1,Dial(SIP/${TRUNK_NAME}/${DIALNUMBER}|60|tT) exten => d-SIP,n,Goto(s-${DIALSTATUS},1) exten => d-IAX,1,Dial(IAX/${TRUNK_NAME}/${DIALNUMBER}|60|tT) exten => d-IAX,n,Goto(s-${DIALSTATUS},1)

Seite 4

FAQ#1000671 exten => d-CAPI,1,Dial(CAPI/${TRUNK_NAME}/792700:${DIALNUMBER}|60|tT/bd) exten => d-CAPI,n,Goto(s-${DIALSTATUS},1) exten => s-BUSY,1,NoOp(Anwahl fehlgeschlagen Leitung meldet BUSY - giving up) exten => s-BUSY,2,Busy(20) exten => s-NOANSWER,1,NoOp(Anwahl fehlgeschlagen Leitung meldet NOANSWER giving up) exten => s-NOANSWER,2,Playtones(congestion) exten => s-NOANSWER,3,Congestion(20) exten => s-CANCEL,1,NoOp(Anwahl fehlgeschlagen Leitung meldet CANCEL - giving up) exten => s-CANCEL,2,Playtones(congestion) exten => s-CANCEL,3,Congestion(20) exten => _s-.,1,Noop(Anwahl fehlgeschlagen Leitung meldet ${DIALSTATUS} verwende andere Leitung) exten => h,1,Macro(hangupcall) ;################ ENDE MACROS ##################### Konfiguration der Fritzbox Auf der Fritzbox werden als erstes über den Punkt Telefonie --> Internettelefonie drei SIP Anmeldungen für die Nebenstellen 20, 21 und 22 eingerichtet: Diese SIP Anmeldungen werden danach über den Menupunkt Telefonie --> Nebenstellen den analogen Nebenstellen der Fritzbox zugeordnet: Konfiguration von X-Lite Die Konfiguration von X-Lite für die SIP Peers 10 und 11 gestaltet sich recht einfach. Es ist darau zu achten daß bei der Angabe des SIP Proxys die Portnummer 5061 anzugeben ist. Weitere Quellen Folgende Quellen wurden bei der Esrtellung diese Artikels genutzt. [2]http://www.ip-phone-forum.de/showthread.php?t=146132 [3]http://www.wehavemorefun.de/fritzbox/Hilfsprogramme_/_Tipps_&_Tricks Offene Fragen Das Routen der eingehenden Rufe über SIP oder ISDN zu den Nebenstellen funktioniert. Das Routen ins öffentliche Telefonnetz über SIP oder ISDN funktioniert von allen Nebenstellen aus. Ich kann über die SIP Nebenstellen 10 und 11 die analogen Nebenstellen 20 21 und 22 und das ISDN Telefon 30 anrufen. Ich kann nicht von den analogen Nebenstellen 20 21 und 22 und vom ISDN Telefon 30 die SIP Nebenstelle 10 und 11 anrufen. Die analogen Nebenstellen an der Fritzbox und das ISDN Telefon können sich nur über **1 **2 **3 und **9 (ISDN Telefon) untereinander anrufen. Besser wäre über die tatsächlichen Nebenstellenrufnummern über den Asterisk Dialplan. Wahle ich die ISDN Hauptrufnummer 701230 von extern an, klingelt kurz die SIP Nebenstelle 10 und danach wird sofort wieder aufgelegt. Schaltet sich da die Fritzbox kurz dazwischen? wie kann ich das verhindern? Füer Tipps, Hinweise und Verbesserungen bin ich sehr dankbar. Einen Diskussionshreat zu diesem Howto gibt es auf [4]http://www.ip-phone-forum.de/showthread.php?t=160966

[1] [2] [3] [4]

http://www.asterisk-kompakt.de/asterisk/45-asterisk-auf-fritzbox-phone.html http://www.ip-phone-forum.de/showthread.php?t=146132 http://www.wehavemorefun.de/fritzbox/Hilfsprogramme_/_Tipps_&_Tricks http://www.ip-phone-forum.de/showthread.php?t=160966

Problem (öffentlich)

Lösung (öffentlich)

Seite 5