Komplexes CallForwarding

Diesmal soll in der Apfelmus GmbH jeder Mitarbeiter ein CallForwarding aktivieren können, allerdings soll es ein weiteres CallForwarding für die gesamte Firma geben, damit bei einem Betriebsausflug alle Gespräche an eine andere Niederlassung geleitet werden können. Diese Weiterleitung wird über die Funktionsnummer 55 aktiviert (gefolgt von der Zielrufnummer). Die große Weiterleitung für die gesamte Anlage hat dabei eine höhere Priorität als die einzelnen Regeln. Eine Realisierung kann wie folgt aussehen:

[from-intern]
; CallForwarding für einen einzelnen Anschluss
;
; aktivieren
exten => _44X.,1,Answer()
exten => _44X.,n,Set(DB(CF/${CALLERID(num)})=${EXTEN:2})
exten => _44X.,n,SayDigits(${EXTEN:2})
exten => _44X.,n,NoOp(Weiterleitung fuer ${CALLERID(num)} auf ${EXTEN:2}
 aktiviert.) 
exten => _44X.,n,Hangup()

; deaktivieren
exten => 44,1,Answer()
exten => 44,n,DBdel(CF/${CALLERID(num)})
exten => 44,n,Playback(auth-thankyou)
exten => 44,n,NoOp(Weiterleitung fuer ${CALLERID(num)} deaktiviert.) 
exten => 44,n,Hangup()

; CallForwarding für die gesamte Telefonanlage
;
; aktivieren
exten => _55X.,1,Answer()
exten => _55X.,n,Set(DB(CF/anlage)=${EXTEN:2})
exten => _55X.,n,SayDigits(${EXTEN:2})
exten => _55X.,n,NoOp(Weiterleitung der Anlage auf ${EXTEN:2} aktiviert.
) 
exten => _55X.,n,Hangup()

; deaktivieren
exten => 55,1,Answer()
exten => 55,n,DBdel(CF/anlage)
exten => 55,n,Playback(auth-thankyou)
exten => 55,n,NoOp(Weiterleitung der Anlage deaktiviert.) 
exten => 55,n,Hangup()

[from-extern]
exten => _X.,1,NoOp(Anruf von ${CALLERID(num)} fuer ${EXTEN})
exten => _X.,n,GotoIf($[foo${DB(CF/anlage)} != foo]?cfanlage:zweiteregel
)
exten => _X.,n(zweiteregel),GotoIf($[foo${DB(CF/${EXTEN})} != foo]?cfnor
mal:normal)
exten => _X.,n(normal),Dial(SIP/${EXTEN})
exten => _X.,n(cfnormal),NoOp(Anruf fuer ${EXTEN} wird verbunden zu ${DB
(CF/${EXTEN})})
exten => _X.,n,Dial(local/${DB(CF/${EXTEN})})
exten => _X.,n(cfanlage),NoOp(Anruf fuer ${EXTEN} wird verbunden zu ${DB
(CF/anlage)})
exten => _X.,n,Dial(local/${DB(CF/anlage)})