Wählplanerweiterungen für die ISDN-Anbindungen
Im vorgenannten Kapitel haben wir unseren Asterisk-Server um das Thema ISDN1) 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
; Django - 12.04.2010 erste Konfiguration für die M-net Aussenanbindung
[Mnet]
ports=1
context=ankommend_(mISDN)
msns=883176
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
[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)
Anschließend laden wir unseren neuen Dialplan - wir verbinden uns hierzu mit der Asterisk-Konsole.
# asterisk -r
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
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:
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'
individuelle MSN bei der abgehenden Wahl setzen
Bei unserem Mehrgeräteanschluß hat uns unser Netzbetreiber nicht nur eine Rufnummer zugeteilt, sondern mehrere. Diese MSN2) 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.
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
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
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
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
Unseren Dialplan modifizieren wir nun wie folgt.
# vim /etc/asterisk/extensions.conf
[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
Anschließend laden wir den Dialplan neu.
# asterisk -r
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
Rufen wir nun einen externen Partner an, wird im Gegensatz zur einfachen Variante bei der Wahl, abhängig von der internen Rufnummer, die externe Rufnummer gesetzt.
== 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'
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
; Django - 12.04.2010 erste Konfiguration für die M-net Aussenanbindung
[Mnet]
ports=1
context=ankommend_(mISDN)
msns=883176
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
[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)
Anschließend verbinden wir uns mit unserer Asterisk-Konsole und laden unseren modifizierten Dialplan.
# asterisk -r
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
Rufen wir nun die Zielrufnummer 883176 an, wird der Anruf auf der definierten Zielnebenstelle 13 signalisiert und kann dort angenommen werden.
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'