Ähnlich wie beim Beispiel der Filtergruppen nutzen wir bei dem folgenden Beispiel eine Anweisung im Dialplan, nämlich GotoIfTime.
Bei diesem Beispiel nutzen wir zur Signalisierung der Büro-/Haustürklingel die Gruppenrufnummer 20. Drückt jemand diesen Taster, so sollen beide Nebenstellen beim Empfang klingeln. Außerhalb der Öffnungszeiten, macht dies natürlich keinen Sinn, da keiner mehr da ist. Hier soll der Anruf auf dem Mobiltelefon des Bereitschaftsdienstes klingeln.
Unseren Wählplan erweiteren wir nun beim Kontext [intern] wie folgt.
# vim /etc/asterisk/extensions.conf
; Nachschaltungspeispiel mit GotoIfTime; In der Zeit von 08:00 bis 19:00 Uhr ; erfolgt die Zuteileung bei den Nebenstellen 13 und 14. Außerhalb der ; Arbeits-/Öffnungszeit wird der Anruf zum Händie durchgestellt - auch ; bekannt als Apothekerschaltung exten => 20,1,GotoIfTime(08:00-18:59,*,*,*?open) exten => 20,n,NoOp(Nachtschaltung aktiv, Weiterleitung zum Händie) exten => 20,n,Dial(mISDN/g:Mnet/01907422960,20) exten => 20,n(open),NoOp(Nachtschaltung deaktiviert, der Anruf wird in der Gruppe verteilt) exten => 20,n,Dial(SIP/13&SIP/14,55,TtrWw)
Anschließend laden wir den geänderten Dialplan:
# asterisk -rx "dialplan reload" Dialplan reloaded.
Und verbinden uns mit dem Asterisk-CLI.
Betätigt nun innerhalb der Arbeits-/Öffnungszeiten jemand die Türsprechstelle, wird über die Gruppenrufnummer 20, die beiden Apparate am Empfang gerufen.
asterisk*CLI> == Using SIP RTP CoS mark 5 -- Executing [20@default:1] GotoIfTime("SIP/12-00000030", "08:00-18:59,*,*,*?open") in new stack -- Goto (default,20,4) -- Executing [20@default:4] NoOp("SIP/12-00000030", "Nachtschaltung deaktiviert, der Anruf wird in der Gruppe verteilt") in new stack -- Executing [20@default:5] Dial("SIP/12-00000030", "SIP/13&SIP/14,55,TtrWw") in new stack == Using SIP RTP CoS mark 5 -- Called 13 == Using SIP RTP CoS mark 5 -- Called 14 -- SIP/13-00000031 is ringing -- SIP/14-00000032 is ringing -- SIP/13-00000031 is ringing -- SIP/14-00000032 is ringing -- SIP/13-00000031 is ringing -- SIP/14-00000032 is ringing -- SIP/13-00000031 is ringing -- SIP/14-00000032 is ringing -- SIP/13-00000031 connected line has changed. Saving it until answer for SIP/12-00000030 -- SIP/13-00000031 answered SIP/12-00000030 == Spawn extension (default, 20, 5) exited non-zero on 'SIP/12-00000030' asterisk*CLI>
Außerhalb der Öffnungszeiten werden beim Betätigen der Türklingel nun nicht mehr die Damen am Empfang gerufen, sondern der Bereitschaftsdienst am Händie.
asterisk*CLI> == Using SIP RTP CoS mark 5 -- Executing [20@default:1] GotoIfTime("SIP/12-00000034", "08:00-18:59,*,*,*?open") in new stack -- Executing [20@default:2] NoOp("SIP/12-00000034", "Nachtschaltung aktiv, Weiterleitung zum Händie") in new stack -- Executing [20@default:3] Dial("SIP/12-00000034", "mISDN/g:Mnet/01907422960,20") in new stack -- Called g:Mnet/01907422960 -- mISDN/1-u93 is proceeding passing it to SIP/12-00000034 -- mISDN/1-u93 is ringing -- mISDN/1-u93 answered SIP/12-00000034 == Spawn extension (default, 20, 3) exited non-zero on 'SIP/12-00000034' asterisk*CLI>
Wollen wir nun viele unterschiedliche Zeiten berücksichtigen, wie z.B. Feiertage, wird es es mit der GotoIfTime-Anweisung schnell unübersichtlich. In diesem Fall nutzen wir lieber die nachfolgende Variante über einzelne include-Anweisungen im Dialplan.
Wollen wir mehrere Zeiten definieren, so ist es geschickter dies mit Hilfe von mehreren include-Anweisungen, zu realisieren. Im nachfolgenden Beispiel beschränken wir uns auf die Wochentage und zusätzlich den Samstag, so können wir schnell und einfach eine Apothekerschaltung für unsere Asterisk-TK-Anlage realisieren.
Wie ergänzen unseren dialplan nun wie folgt.
# /etc/asterisk/extensions.conf
[tuerfreisprechstelle] ; Nachtschaltung mit Hilfe von include-Anweisungen; In der Zeit von 08:00 bis 19:00 Uhr ; erfolgt die Zuteilung bei den Nebenstellen 13 und 14. Außerhalb der ; Arbeits-/Öffnungszeit wird der Anruf zum Händie durchgestellt - auch ; bekannt als Apothekerschaltung include => tagschaltung,08:00-22:45,mon-fri,*,* include => tagschaltung,08:00-13:59,sat,*,* include => nachtschaltung [tagschaltung] exten => 300,1,NoOp(Nachtschaltung deaktiviert, der Anruf wird in der Gruppe verteilt) exten => 300,n,Dial(SIP/13&SIP/14,55,TtrWw) [nachtschaltung] exten => 300,1,NoOp(Nachtschaltung aktiv, Weiterleitung zum Händie) exten => 300,n,Dial(mISDN/g:Mnet/01907422960,20)
Anschließend wird der erweiterte/geänderte Dialplan neu geladen.
# asterisk -rx "dialplan reload"
Rufen wie während der Öffnungszeiten unsere Rufnummer 300 werden wieder die beiden Nbenstellen 13 und 14 beim Empfang gerufen.
asterisk*CLI> == Using SIP RTP CoS mark 5 -- Executing [300@default:1] NoOp("SIP/12-00000037", "Nachtschaltung deaktiviert, der Anruf wird in der Gruppe verteilt") in new stack -- Executing [300@default:2] Dial("SIP/12-00000037", "SIP/13&SIP/14,55,TtrWw") in new stack == Using SIP RTP CoS mark 5 -- Called 13 == Using SIP RTP CoS mark 5 -- Called 14 -- SIP/13-00000038 is ringing -- SIP/14-00000039 is ringing -- SIP/13-00000038 is ringing -- SIP/14-00000039 is ringing -- SIP/13-00000038 is ringing -- SIP/14-00000039 is ringing == Spawn extension (default, 300, 2) exited non-zero on 'SIP/12-00000037' asterisk*CLI>
Ausserhalb der definierten Öffnungszeiten greift der Kontext [nachtschaltung] und der Anruf wird an das Händie weitergeleitet.
asterisk*CLI> == Using SIP RTP CoS mark 5 -- Executing [300@default:1] NoOp("SIP/12-0000003a", "Nachtschaltung aktiv, Weiterleitung zum Händie") in new stack -- Executing [300@default:2] Dial("SIP/12-0000003a", "mISDN/g:Mnet/01907422960,20") in new stack -- Called g:Mnet/01907422960 -- mISDN/1-u95 is proceeding passing it to SIP/12-0000003a -- mISDN/1-u95 is ringing == Spawn extension (default, 300, 2) exited non-zero on 'SIP/12-0000003a' asterisk*CLI>