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:blacklist [04.08.2011 06:15. ] – [TK-Anlagenanschlüsse] djangovoip:asterisk18:blacklist [20.04.2018 08:58. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== TK-Leistungsmerkmal - Black-/Whitelisting - Sperrlisten ======
 +
 +{{voip:asterisk.gif|Asterisk Logo}} \\
 +\\
 +
 +Ab und an kommt es vor, dass man von einem oder mehreren Anschlüsse telefonisch nicht belästigt werden möchte. An Hand der übermittelten der Rufnummer/Rufnummernanzeige (CLIP) können wir die weitere Abarbeitung unseres Dialplans abhängig machen.
 +===== einzelne Nummer =====
 +Im ersten Beispiel gehen wir davon aus, dass nur ein einzelner Anschluss gesondert behandelt werden soll. In einschlägigen Beiträgen wird hierbei oftmals von der **//Ex-Girlfriend-Function//** gesprochen. Ob hierbei Erfahrungen der Progammierer bei Digium eine Rolle gespielt haben, kann nicht weiter überprüft werden. :-P \\
 +\\
 +In diesen Beispiel gehen wir davon aus, dass der intenre Teilnehmer mit der Rufnummer **14**, der über die **MSN 883176** erreichbar ist, von der Händierufnummer **0190/7422960** nicht mehr direkt erreichbar ist, sondern direkt zu einer Voicemailbox geleitet werden soll. 
 +Wir passen also unseren Wählplan unseres Asterisk-Servers beim **Kontext [ankommend_(mISDN)]** an. 
 +  # vim /etc/asterisk/extensions.conf
 +<code>; ankommende ISDN-Anrufe der MSN 883176 auf int. Nst. 13 leiten, aber _n_u_r_ wenn diese
 +; _n_i_c_h_t_ von der externen Rufnummer 01907422960 kommen. Diese Nummer ist geblacklistet!
 +exten => 883176,1,GotoIf($[${CALLERID(num)} = 01907422960]?10:20)
 +exten => 883176,10,NoOp(Externanrufer ${CALLERID(num)} ist geblacklistet und wird daher auf die Voicemail geleitet!)
 +exten => 883176,n,VoiceMail(113,u)
 +exten => 883176,n,Hangup
 +exten => 883176,20,NoOp(Externanrufer ${CALLERID(num)} hat keinen Sperreintrag und wird an Nst. 13 signalisiert!)
 +exten => 883176,n,Dial(SIP/13)
 +exten => 883176,n,Hangup</code>
 +Um die **//GotoIf//**-Funktion prüfen wir nun ab, ob die übertragene RUFNUMMER DEM GEWÜNSCHTEN Muster entspricht. Bei positivem Ergebnis, wird an die Priorität 10 verwiesen, bei der auf der Asterisk-Konsole, sofern mind. Loglevel 3 eingestellt wurde, ein entsprechender Hinweis ausgegeben wird. Anschließend kommen wir zu einer gesonderten Voicemailbox mit der Nummer **113**.\\
 +\\
 +<uml>
 +:user: -left-> (dummyLeft) 
 +:user: -right-> (dummyRight) 
 +:user: -up-> (dummyUp)
 +:user: -down-> (dummyDown)
 +</uml>
 +\\
 +Nachdem der Änderung des Dialplan verbinden wir uns mit dem CLI((**C**ommand **L**ine **I**nterface)) von Asterisk und laden den geänderten Dialplan.
 +  # asterisk -r
 +<code>Verbosity is at least 3
 +asterisk*CLI> dialplan reload</code>
 +Anschließend rufen wir von einem internem Teilnehmer die Amtsrufnummer **883176**.
 +<code>asterisk*CLI> 
 +    -- Accepting AUTHENTICATED call from 192.168.10.51:
 +       > requested format = gsm,
 +       > requested prefs = (),
 +       > actual format = gsm,
 +       > host prefs = (),
 +       > priority = mine
 +    -- Executing [883176@default:1] Set("IAX2/33-5878", "msn=") in new stack
 +    -- Executing [883176@default:2] Set("IAX2/33-5878", "CALLERID(num)=") in new stack
 +    -- Executing [883176@default:3] Dial("IAX2/33-5878", "mISDN/g:Mnet/883176,120,TtrWw") in new stack
 +    -- Called g:Mnet/883176
 +    -- Executing [883176@ankommend_(mISDN):1] GotoIf("mISDN/2-u32", "0?10:20") in new stack
 +    -- Goto (ankommend_(mISDN),883176,20)
 +    -- Executing [883176@ankommend_(mISDN):20] NoOp("mISDN/2-u32", "Externanrufer 08121883170 hat keinen Sperreintrag und wird an Nst. 13 signalisiert!") in new stack
 +    -- Executing [883176@ankommend_(mISDN):21] Dial("mISDN/2-u32", "SIP/13") in new stack
 +  == Using SIP RTP CoS mark 5
 +    -- Called 13
 +    -- SIP/13-00000011 is ringing
 +    -- mISDN/1-u31 is proceeding passing it to IAX2/33-5878
 +    -- mISDN/1-u31 is ringing
 +    -- SIP/13-00000011 is ringing
 +    -- SIP/13-00000011 is ringing
 +    -- SIP/13-00000011 is ringing
 +  == Spawn extension (default, 883176, 3) exited non-zero on 'IAX2/33-5878'
 +    -- Hungup 'IAX2/33-5878'
 +  == Spawn extension (ankommend_(mISDN), 883176, 21) exited non-zero on 'mISDN/2-u32'
 +asterisk*CLI></code>
 +Überträgt der externe Anrufer keine Nummer, so kommt er auch direkt zur Nebenstelle **13** durch:
 +<code>asterisk*CLI> 
 +    -- Executing [883176@ankommend_(mISDN):1] GotoIf("mISDN/1-u33", "?10:20") in new stack
 +    -- Goto (ankommend_(mISDN),883176,20)
 +    -- Executing [883176@ankommend_(mISDN):20] NoOp("mISDN/1-u33", "Externanrufer  hat keinen Sperreintrag und wird an Nst. 13 signalisiert!") in new stack
 +    -- Executing [883176@ankommend_(mISDN):21] Dial("mISDN/1-u33", "SIP/13") in new stack
 +  == Using SIP RTP CoS mark 5
 +    -- Called 13
 +    -- SIP/13-00000012 is ringing
 +    -- SIP/13-00000012 is ringing
 +    -- SIP/13-00000012 is ringing
 +    -- SIP/13-00000012 is ringing
 +    -- SIP/13-00000012 is ringing
 +  == Spawn extension (ankommend_(mISDN), 883176, 21) exited non-zero on 'mISDN/1-u33'
 +asterisk*CLI></code>
 +Ruft hingegen nun die unerwünschte Exfreundin/Exgirlfriend an, wir an Hand der übertragenen Rufnummer, gleich zu der gesonderten Mailbox **113** verzweigt, bei der eine gesonderte und überaus freundliche Ansage eingespielt wird/werden kann.
 +<code>asterisk*CLI> 
 +    -- Executing [883176@ankommend_(mISDN):1] GotoIf("mISDN/1-u34", "1?10:20") in new stack
 +    -- Goto (ankommend_(mISDN),883176,10)
 +    -- Executing [883176@ankommend_(mISDN):10] NoOp("mISDN/1-u34", "Externanrufer 01907422960 ist geblacklistet und wird daher auf die Voicemail geleitet!") in new stack
 +    -- Executing [883176@ankommend_(mISDN):11] VoiceMail("mISDN/1-u34", "113,u") in new stack
 +    -- <mISDN/1-u34> Playing '/var/spool/asterisk/voicemail/default/113/unavail.slin' (language 'de')
 +    -- <mISDN/1-u34> Playing 'vm-intro.alaw' (language 'de')
 +  == Spawn extension (ankommend_(mISDN), 883176, 11) exited non-zero on 'mISDN/1-u34'
 +asterisk*CLI></code>
 +===== TK-Anlagenanschlüsse =====
 +Im vorgenannten Beispiel [[voip:asterisk18:blacklist#einzelne_nummer|"Sperren einer einzelnen Nummer"]] haben wir uns darauf beschränkt einen einzelnen Anrufer an Hand seiner übertragenen Rufnummer zu sperren. Möchten wir aber zum Beispiel Anrufe von einem ISDN-Amtsanschluss einer Nebenstellenanlage sperren, so geht das leider nicht so einfach bei dem zuvor genannten Beispiel. Hintergrund ist, dass dort keine Musterpattern vorgegeben werden können.\\
 +\\
 +Im folgenden Beispiel möchten wir, warum auch immer, keinerlei Anrufe von dem Anschlussinhaber der Rufnummer 089 2165-0 bis 089 2165-9999 erhalten. ^_^ Betrachten wir also den Nummernkreis von 08921650 bis 08921659999, so entspricht dies, im gewohnten //Asterisk-Patternmatching Syntax//: **//_0892165.//**\\
 +\\
 +Wir bearbeiten nunmehr erneut unseren Dialplan wie folgt:
 +  # vim /etc/asterisk/extensions.conf
 +<code>; ankommende ISDN-Anrufe der MSN 883176 auf int. Nst. 14 leiten, aber _n_u_r_ wenn diese
 +; _n_i_c_h_t_ von der externen Rufnummer 0892165-xxxxxxx kommen. Dieser Amtsanschluss ist geblacklistet!
 +exten => 883176/_0892165.,1,NoOp(Externanrufer-Gruppe ${CALLERID(num)} ist geblacklistet und wird daher auf die Voicemail geleitet!)
 +exten => 883176/_0892165.,n,VoiceMail(14,u)
 +exten => 883176/_0892165.,n,Hangup
 +exten => 883176,1,NoOp(Externanrufer ${CALLERID(num)} hat keinen Sperreintrag und wird an Nst. 14 signalisiert!)
 +exten => 883176,n,Dial(SIP/14)
 +exten => 883176,n,Hangup</code>
 +Anschließend laden wir den dialplan neu und verbinden uns mit der Asterisk-Konsole:
 +  # asterisk -rx "dialplan reload" && asterisk -r
 +Ruft nun eine Nebenstelle aus diesem TK-Anlagen-Amtsanschluss an, wird dieser erfolgreich zu unserer Abwimmelvoicemailbox **114** verwiesen:
 +<code>asterisk *CLI>
 +    -- Executing [883176@ankommend_(mISDN):1] NoOp("mISDN/1-u47", "Externanrufer-Gruppe 08921655612 ist geblacklistet und wird daher auf die Voicemail geleitet!") in new stack
 +    -- Executing [883176@ankommend_(mISDN):2] VoiceMail("mISDN/1-u47", "114,u") in new stack
 +    -- <mISDN/1-u47> Playing 'vm-theperson.alaw' (language 'de')
 +    -- <mISDN/1-u47> Playing 'digits/1.alaw' (language 'de')
 +    -- <mISDN/1-u47> Playing 'digits/4.alaw' (language 'de')
 +    -- <mISDN/1-u47> Playing 'vm-isunavail.alaw' (language 'de')
 +    -- <mISDN/1-u47> Playing 'vm-intro.alaw' (language 'de')
 +  == Spawn extension (ankommend_(mISDN), 883176, 2) exited non-zero on 'mISDN/1-u47'
 +asterisk *CLI></code>
 +Hingegen wird ein Anrufer ohne Rufnummernübertragung, bzw ein Anrufer von jedem anderen Anschluss zum Apparat durchgelassen. Im nachfolgenden Beispiel ruf ein Mobilfunkteilnehmer mit der Händierufnummer **01907422960** an und wird direkt zum internen Anschluss mit der Rufnummer **14** geleitet.
 +<code>office*CLI> 
 +    -- Executing [883176@ankommend_(mISDN):1] NoOp("mISDN/1-u50", "Externanrufer 01907422960 hat keinen Sperreintrag und wird an Nst. 14 signalisiert!") in new stack
 +    -- Executing [883176@ankommend_(mISDN):2] Dial("mISDN/1-u50", "SIP/14") in new stack
 +  == Using SIP RTP CoS mark 5
 +    -- Called 14
 +    -- SIP/14-0000001a is ringing
 +    -- SIP/14-0000001a is ringing
 +    -- SIP/14-0000001a is ringing
 +  == Spawn extension (ankommend_(mISDN), 883176, 2) exited non-zero on 'mISDN/1-u50'
 +office*CLI></code>
 +