Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
voip:asterisk18:dialplan2 [04.08.2011 06:13. ] – [ankommende Verbindungen] djangovoip:asterisk18:dialplan2 [20.04.2018 08:59. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== Wählplanerweiterungen für die ISDN-Anbindungen ======
 +
 +{{voip:asterisk.gif|Asterisk Logo}} \\
 +\\
 +Im vorgenannten [[voip:asterisk18:isdn|Kapitel]] haben wir unseren Asterisk-Server um das Thema //ISDN//((**I**ntegrated **S**ervices **D**igital **N**etwork oder auch unter der Abkürzung **I**st **S**owas **D**enn **N**ötig)) ergänzt.\\
 +\\
 +Im einzelnen wollen wir nun die unterschiedlichen Richtungen betrachten und dabei auf verschiedene Komfortstufen eingehen.
 +===== abgehende Verbindungen =====
 +==== erste abgehende Wahl ====
 +Im ersten Schritt erweitern wir nun unseren Dialplan um eine Option zum abgehenden Telefonieren.\\
 +Als erstes tragen definieren wir in der Konfigurationsdatei //**/etc/asterisk/misdn.conf**// unseren ISDN-Anschluss ein.
 +  # vim /etc/asterisk/misdn.conf
 +<code>; Django - 29.11.2010 erste Konfiguration für die M-net Aussenanbindung
 +[Mnet]
 +ports=1
 +context=Extern_ISDN
 +msns=883176</code>
 +In der GesamtKonfiguration ergibt sich damit folgendes Konfigurationsfiel für **mISDN**:
 +  # egrep -v '(^\s+;|^;|^$)' /etc/asterisk/misdn.conf
 +<code>[general]
 +misdn_init=/etc/misdn-init.conf
 +debug=0
 +ntdebugflags=0
 +ntdebugfile=/var/log/misdn-nt.log
 +ntkeepcalls=no
 +bridging=no
 +stop_tone_after_first_digit=yes
 +append_digits2exten=yes
 +dynamic_crypt=no
 +crypt_prefix=**
 +crypt_keys=test,muh
 +[default]
 +context=misdn
 +language=de
 +musicclass=default
 +senddtmf=yes
 +far_alerting=no
 +allowed_bearers=all
 +internationalprefix=00
 +nationalprefix=0
 +rxgain=0
 +txgain=0
 +te_choose_channel=no
 +l1watcher_timeout=0
 +pmp_l1_check=no
 +reject_cause=16
 +need_more_infos=no
 +nttimeout=no
 +method=standard
 +overlapdial=yes
 +dialplan=0
 +localdialplan=0
 +cpndialplan=0
 +early_bconnect=yes
 +incoming_early_audio=no
 +nodialtone=no
 +presentation=-1
 +screen=-1
 +outgoing_colp=0
 +display_connected=0
 +display_setup=0
 +jitterbuffer=4000
 +jitterbuffer_upper_threshold=0
 +hdlc=no
 +max_incoming=-1
 +max_outgoing=-1
 +cc_request_retention=yes
 +[Mnet]
 +ports=1
 +context=Extern_ISDN
 +msns=883176</code>
 +Wie haben also einen ISDN-Anschluss, den wir im Kontext **[Mnet]** definieren. 
 +Bei der weiteren Konfiguration gehen wir davon aus, dass Rufnummern mit 4 oder mehr Stellen sich auf Teilnehmer außerhalb unserer Telefonanlage bezeihen.
 +Wir tragen also in den Diaplan nach:
 +  # vim /etc/asterisk/extensions.conf
 +<code>[abgehend_(mISDN)]
 +;erste Version ohne setzen einer MSN
 +exten => _XXXX.,1,Dial(mISDN/g:Mnet/${EXTEN},120,TtrWw)
 +exten => _XXXX.,n,Hangup
 +
 +[default]
 +include => abgehend_(mISDN)</code>
 +Unser wählplan enthält nunmehr zusammen mit den bereits beschriebenen Beispielsanwendungen folgende Zeilen:
 +<code>[general]
 +static=yes
 +writeprotect=no
 +
 +[intern]
 +; interne Erreichbarkeit der Nebenstellen 11-99 untereinander herstellen
 +exten => _XX,1,Dial(SIP/${EXTEN},55,TtrWw)
 +
 +[abgehend_(mISDN)]
 +;erste Version ohne setzen einer MSN
 +exten => _XXXX.,1,Dial(mISDN/g:Mnet/${EXTEN},120,TtrWw)
 +exten => _XXXX.,n,Hangup
 +
 +[ansagen-demo]
 +exten => 601,1,Answer()
 +exten => 601,n,Playback(tt-monkeysintro)
 +exten => 601,n,Playback(tt-monkeys)
 +
 +[echotest]
 +exten => 602,1,answer
 +exten => 602,n,Wait(1)
 +exten => 602,n,playback(demo-echotest)
 +exten => 602,n,echo
 +exten => 602,n,playback(demo-echodone)
 +exten => 602,n,hangup
 +
 +[asterisk-demo]
 +exten => 603,1,answer
 +exten => 603,n,wait(1)
 +exten => 603,n,playback(demo-abouttotry)
 +exten => 603,n,dial(IAX2/guest@misery.digium.com/s@default)
 +exten => 603,n,playback(demo-nogo)
 +exten => 603,n,goto(s,6)
 +
 +[default]
 +include => intern
 +include => ansagen-demo
 +include => echotest
 +include => asterisk-demo
 +include => abgehend_(mISDN)</code>
 +Anschließend laden wir unseren neuen Dialplan - wir verbinden uns hierzu mit der Asterisk-Konsole.
 +  # asterisk -r
 +<code>[root@office ~]# asterisk -r
 +Verbosity is at least 3
 +asterisk*CLI> dialplan reload</code>
 +Die Anwahl einer externen Rufnummer von unserem SIP-Endgerät wird uns in der Konsole entsprechend dokumentiert. Im Nachfolgendem Beispiel hat der Teilnehmer mit der internen Rufnummer 14 die Rufnummer 08936046666 angerufen:
 +<code>asterisk*CLI> 
 +  == Using SIP RTP CoS mark 5
 +[Dec  1 13:22:25] ERROR[19516]: chan_sip.c:27876 setup_srtp: No SRTP module loaded, can't setup SRTP session.
 +    -- Executing [08936046666@default:1] Dial("SIP/14-00000002", "mISDN/g:Mnet/08936046666") in new stack
 +    -- Called g:Mnet/08936046666
 +    -- mISDN/1-u5 is proceeding passing it to SIP/14-00000002
 +    -- mISDN/1-u5 is making progress passing it to SIP/14-00000002
 +    -- mISDN/1-u5 is ringing
 +    -- mISDN/1-u5 answered SIP/14-00000002
 +  == Spawn extension (default, 08936046666, 1) exited non-zero on 'SIP/14-00000002'
 +asterisk*CLI></code>
 +
 +==== individuelle MSN bei der abgehenden Wahl setzen ====
 +Bei unserem Mehrgeräteanschluß hat uns unser Netzbetreiber nicht nur eine Rufnummer zugeteilt, sondern mehrere. Diese **MSN**((**M**ultiple **S**ubscriber **N**umber)) haben wir einzelnen Teilnehmern zugeordnet. Rufen wir nun von einer Nebenstelle unseres Asterisk-Servers einen externen Teilnehmer an, möchten wir natürlich auch die jeweils zugeordnete Rufnummer übertragen. Das was sich bei dem ein oder anderen höchstprofesssionellen Systemintegrator als unlösbare Herausforderunge bei einer VoIP-Anlage mit 3.000 Nebenstellen darstellt, gestaltet sich bei unserem Asterisk-Server als triviale Herausforderung. LOL \\
 +\\
 +Für die Zuordnung der internen Rufnummern zu den jeweilgen MSNs bedienen wir uns der Asterisk-eigenen Datenbank. Diese Datenbank erreichen wir über die Funktion **database**. Wir können damit z.B. unsere Registrierten Geräte abfragen.
 +   # asterisk -r
 +<code>asterisk*CLI> database show
 +/SIP/Registry/13                                  : 192.168.10.71:3072:3600:13:sip:13@192.168.10.71:3072;line=ndoi6dtx
 +/SIP/Registry/14                                  : 192.168.10.61:5060:3600:14:sip:14@192.168.10.61:5060;line=v8ep4agw</code>
 +Wir legen uns nun eine kleine Tabelle an, in der wir jedem internen Teilnehmer eine unserer MSN zuweisen. In unserem Demofall wäre dies exemplarisch: 
 +^  interne Rufnummer  ^  MSN  ^
 +|         13          |  883176  |
 +|         14          |  883179  |
 +Diese Tabelle legen wir nun einmalig über die Asterisk-Konsole an.
 +  # asterisk -r
 +<code>asterisk*CLI> database put 13 MSN 08121883176
 +Updated database successfully
 +asterisk*CLI> database put 14 MSN 08121883179
 +Updated database successfully
 +asterisk*CLI> database show
 +/13/MSN                                           : 08121883176              
 +/14/MSN                                           : 08121883179              
 +/SIP/Registry/13                                  : 192.168.10.71:3072:3600:13:sip:13@192.168.10.71:3072;line=ndoi6dtx
 +/SIP/Registry/14                                  : 192.168.10.61:5060:3600:14:sip:14@192.168.10.61:5060;line=v8ep4agw</code>
 +Unseren Dialplan modifizieren wir nun wie folgt.
 +  # vim /etc/asterisk/extensions.conf
 +<code>[abgehend_(mISDN)]
 +; M-net-MSN für den rufenden Teilnehmer aus der Datenbank holen
 +; abgehende Rufnummer setzen und dann gewählte Rufnummer weiter 
 +; in Richtung ISDN schicken
 +exten => _XXXX.,1,Set(msn=${DB(${CALLERID(num)}/MSN)})
 +exten => _XXXX.,n,Set(CALLERID(num)=${msn})
 +exten => _XXXX.,n,Dial(mISDN/g:Mnet/${EXTEN},120,TtrWw)
 +exten => _XXXX.,n,Hangup
 +</code>
 +Anschließend laden wir den Dialplan neu.
 +  # asterisk -r
 +
 +  asterisk*CLI> dialplan reload
 +Rufen wir nun einen externen Partner an, wird im Gegensatz zur [[voip:asterisk18:dialplan2#erste_abgehende_wahl|einfachen Variante bei der Wahl]], abhängig von der internen Rufnummer, die externe Rufnummer gesetzt.
 +<code>asterisk*CLI>
 +  == Using SIP RTP CoS mark 5
 +[Dec  1 13:31:03] ERROR[19516]: chan_sip.c:27876 setup_srtp: No SRTP module loaded, can't setup SRTP session.
 +    -- Executing [089216750916@default:1] Set("SIP/14-00000003", "msn=08121883179") in new stack
 +    -- Executing [089216750916@default:2] Set("SIP/14-00000003", "CALLERID(num)=08121883179") in new stack
 +    -- Executing [089216750916@default:3] Dial("SIP/14-00000003", "mISDN/g:Mnet/089216750916,120,TtrWw") in new stack
 +    -- Called g:Mnet/089216750916
 +    -- mISDN/1-u7 answered SIP/14-00000003
 +asterisk*CLI></code>
 +
 +===== ankommende Verbindungen =====
 +Im nächsten Schritt richten wir nun den ankommenden ISDN-Amtsverkehr ein. Wir routen in unserem Beispiel die Anrufe auf die MSN **883176** auf die intene Nst. **14**.\\
 +\\
 +In der Konfigurationsdatei zu mISDN //**/etc/asterisk/misdn**// legen wir nun fest, auf welche MSN unser Asterisk reagieren soll.
 +  # vim /etc/asterisk/misdn.conf
 +<code>; Django - 12.04.2010 erste Konfiguration für die M-net Aussenanbindung
 +[Mnet]
 +ports=1
 +context=ankommend_(mISDN)
 +msns=883176</code>
 +In unserem Dialplan definieren wir nun an welcher internen Nebenstelle die Anrufe für die **MSN 883176** signalisiert werden soll. Hierzu erweitern wir unseren Dialplan um/auf folgende Zeilen.
 +  # vim /etc/asterisk/extensions.conf
 +<code>[ankommend_(mISDN)]
 +; ankommende erste ISDN-Anrufe der MSN 883176 auf der internen Nst. 14
 +exten => 883176,1,Dial(SIP/14,60)
 +exten => 883176,n,Hangup
 +
 +[default]
 +include => echotest
 +include => asterisk-demo
 +include => local
 +include => abgehend_(mISDN)
 +include => ankommend_(mISDN)
 +</code>
 +In Summe ergibt sich folgender vorläufiger//Dialplan//:
 +<code>[general]
 +static=yes
 +writeprotect=no
 +
 +[intern]
 +; interne Erreichbarkeit der Nebenstellen 11-99 untereinander herstellen
 +exten => _XX,1,Dial(SIP/${EXTEN},55,TtrWw)
 +
 +[abgehend_(mISDN)]
 +; M-net-MSN für den rufenden Teilnehmer aus der Datenbank holen
 +; abgehende Rufnummer setzen und dann gewählte Rufnummer weiter 
 +; in Richtung ISDN schicken
 +exten => _XXXX.,1,Set(msn=${DB(${CALLERID(num)}/MSN)})
 +exten => _XXXX.,n,Set(CALLERID(num)=${msn})
 +exten => _XXXX.,n,Dial(mISDN/g:Mnet/${EXTEN},120,TtrWw)
 +exten => _XXXX.,n,Hangup
 +
 +[ankommend_(mISDN)]
 +; ankommende erste ISDN-Anrufe der MSN 883176 auf der internen Nst. 14
 +exten => 883176,1,Dial(SIP/14,60)
 +exten => 883176,n,Hangup
 +
 +[ansagen-demo]
 +exten => 601,1,Answer()
 +exten => 601,n,Playback(tt-monkeysintro)
 +exten => 601,n,Playback(tt-monkeys)
 +
 +[echotest]
 +exten => 602,1,answer
 +exten => 602,n,Wait(1)
 +exten => 602,n,playback(demo-echotest)
 +exten => 602,n,echo
 +exten => 602,n,playback(demo-echodone)
 +exten => 602,n,hangup
 +
 +[asterisk-demo]
 +exten => 603,1,answer
 +exten => 603,n,wait(1)
 +exten => 603,n,playback(demo-abouttotry)
 +exten => 603,n,dial(IAX2/guest@misery.digium.com/s@default)
 +exten => 603,n,playback(demo-nogo)
 +exten => 603,n,goto(s,6)
 +
 +[default]
 +include => intern
 +include => ansagen-demo
 +include => echotest
 +include => asterisk-demo
 +include => abgehend_(mISDN)
 +include => ankommend_(mISDN)</code>
 +
 +
 +Anschließend verbinden wir uns mit unserer Asterisk-Konsole und laden unseren modifizierten Dialplan.
 +  # asterisk -r
 +<code>
 +Verbosity is at least 3
 +asterisk*CLI> dialplan reload</code>
 +Rufen wir nun die Zielrufnummer 883176 an, wird der Anruf auf der definierten Zielnebenstelle 14 signalisiert und kann dort angenommen werden.
 +<code>asterisk*CLI> 
 +    -- Executing [883176@ankommend_(mISDN):1] Dial("mISDN/1-u1", "SIP/14,60") in new stack
 +  == Using SIP RTP CoS mark 5
 +    -- Called 14
 +    -- SIP/14-00000001 is ringing
 +    -- SIP/14-00000001 is ringing
 +    -- SIP/14-00000001 is ringing
 +    -- SIP/14-00000001 is ringing
 +  == Spawn extension (ankommend_(mISDN), 883176, 1) exited non-zero on 'mISDN/1-u1'
 +asterisk*CLI>
 +</code>
 +
  
  • voip/asterisk18/dialplan2.txt
  • Zuletzt geändert: 20.04.2018 08:59.
  • von 127.0.0.1