Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
voip:asterisk18:dialplan2 [01.12.2010 12:51. ]
django [ankommende Verbindungen] definiert
voip:asterisk18:dialplan2 [20.04.2018 08:59. ] (aktuell)
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.
  • (Externe Bearbeitung)