[Gelöst] Nachtschaltung/ Rufnummernbeschränkung

howy-1

Neuer User
Mitglied seit
5 Apr 2010
Beiträge
39
Punkte für Reaktionen
0
Punkte
6
Hallo zusammen,

ich habe intern am Asterisk 1.6 zehn Sip-Clients hängen und möchte nun eine Nachtschaltung für ein- u. ausgehende Anrufe einrichten.
Oder um es mal etwas ehrlicher zu gestalten, möchte ich die Telefonitis meines Töchterchens mit ihrer Freundin zeitlich etwas einschränken (ab 21.00 bis 8.00 ist Ruhe).
Es geht ein- wie ausgehend um nur eine Nummer/Caller-ID, die nicht mehr anrufen können, bzw. aus dem ganzen internen System nicht mehr angerufen werden können soll. Das könnte aber sicher per DB-Einträge noch um andere ID's erweitert werden.

Ideal wäre noch, wenn bei erreichen der End-Uhrzeit eine Ansage kommt und der Kanal dann getrennt wird.

Beim Suchen habe ich schon sehr viele Ansätze gefunden, aber keiner führt so richtig dahin, was ich möchte.

Komme ich da mit Extensions hin, oder wird das eher größeres?
Vielleicht hat jemand was in der Richtung auf der Hand, ich beschäftige mich zu selten damit, muss mich jedesmal erst wieder "reinlesen". Mein Asterisk ist eben eine rein private Bastelei...

Achja, externe Anrufe gehen über ISDN, intern über SIP.

LG Dirk
 
Zuletzt bearbeitet:
Hallo Dirk,

eigentlich müsste ich ja zu Deiner Tochter halten, aber ich verstehe Dich, irgendwann muss mal Ruhe sein ;)

Es gibt verschiedene Ansätze um das zu erreichen, was Du möchtest. Es kommt darauf an, wie sehr Du die Beschränkungen ausdehnen möchtest. Im einfachsten Fall reicht etwas in der Art (ungetestet):

Code:
[ankommend]
exten=>123/456,1,GotoIfTime(21:00-8:00,*,*,*?Nacht)
exten=>123,1,Noop()
exten=>123,n(Tag),Dial(SIP/78)
exten=>123,n,HangUp
exten=>123,n(Nacht),Playback(leider-zu-spaet)
exten=>123,n,HangUp

[abgehend]
exten=>456,1,GotoIfTime(21:00-8:00,*,*,*?spaet,1)
exten=>456,n,Goto(${EXTEN},OK)
exten=>_XX.,1,Noop()
exten=>_XX.,n(OK),Dial(ISDN/${EXTEN})
exten=>_XX.,n,HangUp
exten=>spaet,1,Playback(leider-zu-spaet)
exten=>spaet,n,HangUp

123 ist Deine Nummer, bzw. die Deiner Tochter. 456 ist die Nummer ihrer Freundin. Wenn Du mehrere Nummern einschränken willst, musst Du jede davon einzeln anlegen.

Du könntest auch zeitabhängig verschiedene Contexte mit include einbinden. Das ganze per Datenbank zu machen lohnt erst, wenn es einige mehrere Nummern werden.

Ein laufendes Gespräch zu trennen ist nicht ganz so einfach. Dafür brauchst Du einen externen Cronjob, der um 21:00 (per AMI?) alle aktiven Gespräche ausliest und den Channel trennt, der die gewünschte Rufnummer enthält.
Evtl. könntest Du nach 20:00 grundsätzlich 3600 Sekunden Timeout setzen. Ansonsten müsstest Du vor Gesprächsaufbau die restliche Zeit bis 21:00 berechnen und das als Timeout setzen.

Svenja
 
Super, genau sowas hatte ich mir vorgestellt. Vielen Dank.

Am Wochenende werde ich das gleich austesten.

LG Dirk
 
Funktioniert und somit erledigt

Nach mehrere Wochen Funktionstest hier nun für andere interessierte User die Lösung, wie es bei mir läuft:

Anrufsperren ausgehend

Sonntag bis Donnerstag 20:30 - 8:00
Freitag bis Samstag 22:00 - 8.00

Anrufsperren ankommend

Sonntag bis Donnerstag 20:30 - 9:00
Freitag bis Samstag 21:30 - 9:00

Es wird ein- wie ausgehend "nicht erreichbar" angesagt und dann aufgelegt.
Zu anderen Zeiten normale Weiterleitung an alle SIP-Clients

Code:
;ausgehend mit MSN-Zuweisung per DB-Eintrag

exten => _01234,1,GotoIfTime(20:30-8:00,sun-thu,*,*?zuspaet,1)
exten => _01234,n,Goto(${EXTEN},OK)

exten => _01234,1,GotoIfTime(22:00-8:00,fri-sat,*,*?zuspaet,1)
exten => _01234,n,Goto(${EXTEN},OK)
exten => _0X.,1,Set(msn=${DB(${CALLERID(num)}/MSN)})
exten => _0X.,n,Set(CALLERID(num)=${msn})

exten => _0X.,n(OK),Dial(CAPI/ISDN1/${EXTEN:1},50,rtT) 
exten => _0X.,n,HangUp
exten => zuspaet,1,Playback(vm-isunavail)
exten => zuspaet,n,HangUp


;ankommend ISDN  

[ISDN1] 


exten => 7890/01234,1,GotoIfTime(20:30-09:00,sun-thu,*,*?Nacht,1)
exten => 7890/01234,1,GotoIfTime(21:30-09:00,fri-sat,*,*?Nacht,1)
exten => 7890,1,Noop()
exten => 7890,n(Tag),Dial(SIP/2001&SIP/2002&SIP/2003&SIP/2004&SIP/2005&SIP/2006&SIP/2007&SIP/2009,60,rtT)
exten => Nacht,1,Playback(vm-isunavail)
exten => Nacht,n,HangUp
01234 = Nummer des Teilnehmers, der zu gewissen Zeiten nicht mehr angerufen werden darf, bzw. dessen Anruf nicht mehr im internen Telefonnetz ankommt, mit Ansage "nicht erreichbar"

7890 = MSN, auf der Anruf hereinkommt.

Es wird aber keine Zwangstrennung vorgenommen, bestehende Gespräche bleiben verbunden.
Die hier praktizierte Lösung hat ihren Zweck auch so erfüllt.

LG Dirk und nochmals vielen Dank an @rentier-s
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.