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:asterisk:dialplan2 [20.04.2010 20:37. ] – ankommende mISDN-Verbindungen dokumentiert djangovoip:asterisk:dialplan2 [01.12.2010 12:33. ] (aktuell) – [individuelle MSN bei der abgehenden Wahl setzen] django
Zeile 1: Zeile 1:
 +====== Wählplanerweiterungen für die ISDN-Anbindungen ======
  
 +{{voip:asterisk.gif|Asterisk Logo}} \\
 +\\
 +Im vorgenannten [[voip:asterisk:isdn|Kapitel]] haben wir unseren Asterisk-Server um das Thema //ISDN//((**I**ntegrated **S**ervices **D**igital **N**etwork)) 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 - 12.04.2010 erste Konfiguration für die M-net Aussenanbindung
 +[Mnet]
 +ports=1
 +context=ankommend_(mISDN)
 +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 => echotest
 +include => asterisk-demo
 +include => local
 +include => abgehend_(mISDN)
 +</code>
 +Anschließend laden wir unseren neuen Dialplan - wir verbinden uns hierzu mit der Asterisk-Konsole.
 +  # asterisk -r
 +<code>Asterisk 1.6.2.6, Copyright (C) 1999 - 2010 Digium, Inc. and others.
 +Created by Mark Spencer <markster@digium.com>
 +Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
 +This is free software, with components licensed under the GNU General Public
 +License version 2 and other licenses; you are welcome to redistribute it under
 +certain conditions. Type 'core show license' for details.
 +=========================================================================
 +Connected to Asterisk 1.6.2.6 currently running on office (pid = 5458)
 +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 13 die Rufnummer 08936046666 angerufen:
 +<code>office*CLI> 
 +  == Using SIP RTP CoS mark 5
 +    -- Executing [08936046666@default:1] Dial("SIP/13-0000000b", "mISDN/g:Mnet/08936046666,120,TtrWw") in new stack
 +    -- Called g:Mnet/08936046666
 +    -- mISDN/1-u17 is proceeding passing it to SIP/13-0000000b
 +    -- mISDN/1-u17 is ringing
 +    -- mISDN/1-u17 answered SIP/13-0000000b
 +  == Spawn extension (default, 08936046666, 1) exited non-zero on 'SIP/13-0000000b'
 +</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 1.6.2.6, Copyright (C) 1999 - 2010 Digium, Inc. and others.
 +Created by Mark Spencer <markster@digium.com>
 +Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
 +This is free software, with components licensed under the GNU General Public
 +License version 2 and other licenses; you are welcome to redistribute it under
 +certain conditions. Type 'core show license' for details.
 +=========================================================================
 +Connected to Asterisk 1.6.2.6 currently running on office (pid = 5458)
 +Verbosity is at least 3
 +asterisk*CLI> database show
 +/SIP/Registry/13                                  : 192.168.100.71:3072:3600:13:sip:13@192.168.100.71:3072;line=ftsn6t8l
 +/SIP/Registry/14                                  : 192.168.100.61:5060:3600:14:sip:14@192.168.100.61:5060;line=6xwyo7k7
 +</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
 +</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
 +<code>Asterisk 1.6.2.6, Copyright (C) 1999 - 2010 Digium, Inc. and others.
 +Created by Mark Spencer <markster@digium.com>
 +Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
 +This is free software, with components licensed under the GNU General Public
 +License version 2 and other licenses; you are welcome to redistribute it under
 +certain conditions. Type 'core show license' for details.
 +=========================================================================
 +Connected to Asterisk 1.6.2.6 currently running on office (pid = 5458)
 +Verbosity is at least 3
 +asterisk*CLI> dialplan reload
 +</code>
 +Rufen wir nun einen externen Partner an, wird im Gegensatz zur [[voip:asterisk:dialplan2#erste_abgehende_wahl|einfachen Variante bei der Wahl]], abhängig von der internen Rufnummer, die externe Rufnummer gesetzt.
 +<code>
 +  == Using SIP RTP CoS mark 5
 +    -- Executing [08936046666@default:1] Set("SIP/13-0000000c", "msn=08121883176") in new stack
 +    -- Executing [08936046666@default:2] Set("SIP/13-0000000c", "CALLERID(num)=08121883176") in new stack
 +    -- Executing [08936046666@default:3] Dial("SIP/13-0000000c", "mISDN/g:Mnet/08936046666,120,TtrWw") in new stack
 +    -- Called g:Mnet/08936046666
 +    -- mISDN/2-u19 is ringing
 +  == Spawn extension (default, 08936046666, 3) exited non-zero on 'SIP/13-0000000c'
 +</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. **13**.\\
 +\\
 +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. 13
 +exten => 883176,1,Dial(SIP/13,60)
 +exten => 883176,n,Hangup
 +
 +[default]
 +include => echotest
 +include => asterisk-demo
 +include => local
 +include => abgehend_(mISDN)
 +include => ankommend_(mISDN)
 +</code>
 +Anschließend verbinden wir uns mit unserer Asterisk-Konsole und laden unseren modifizierten Dialplan.
 +  # asterisk -r
 +<code>Asterisk 1.6.2.6, Copyright (C) 1999 - 2010 Digium, Inc. and others.
 +Created by Mark Spencer <markster@digium.com>
 +Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
 +This is free software, with components licensed under the GNU General Public
 +License version 2 and other licenses; you are welcome to redistribute it under
 +certain conditions. Type 'core show license' for details.
 +=========================================================================
 +Connected to Asterisk 1.6.2.6 currently running on office (pid = 5458)
 +Verbosity is at least 3
 +asterisk*CLI> dialplan reload</code>
 +Rufen wir nun die Zielrufnummer 883176 an, wird der Anruf auf der definierten Zielnebenstelle 13 signalisiert und kann dort angenommen werden.
 +<code>asterisk*CLI> 
 +    -- Executing [883176@ankommend_(mISDN):1] Dial("mISDN/1-u24", "SIP/13,60") in new stack
 +  == Using SIP RTP CoS mark 5
 +    -- Called 13
 +    -- SIP/13-0000000f is ringing
 +    -- SIP/13-0000000f is ringing
 +    -- SIP/13-0000000f is ringing
 +    -- SIP/13-0000000f answered mISDN/1-u24
 +  == Spawn extension (ankommend_(mISDN), 883176, 1) exited non-zero on 'mISDN/1-u24'
 +</code>