[general]
autofallthrough=no
[echotest]
exten => 81,1,Answer()
exten => 81,2,wait,1
exten => 81,3,playback,demo-echotest
exten => 81,4,echo
exten => 81,5,playback,demo-echodone
exten => 81,6,hangup
;[mailbox_own]
;exten => 10,1,Answer()
;exten => 10,n,wait,1
;exten => 10,n,voicemailmain,s${CALLERID(num)}
;exten => 10,n,hangup
[mailbox]
exten => 11,1,Answer()
exten => 11,n,wait,1
exten => 11,n,voicemailmain
exten => 11,n,hangup
[weiterleitung]
exten => 44,1,Answer()
exten => 44,n,Read(ZIEL,,,2)
exten => 44,n,Set(DB(CF/${CALLERID(num)})=${ZIEL})
exten => 44,n,Set(DB(CF/${DB(MSN2SIP/${CALLERID(num)})})=${ZIEL})
exten => 44,n,SayDigits(${ZIEL})
exten => 44,n,NoOp(Weiterleitung fuer ${CALLERID(num)} auf ${ZIEL} aktiviert.)
exten => 44,100,NoOp(Teilnehmer nicht in MSN2SIP eingetragen)
exten => 44,200,Hangup()
[weiterleitung_aus]
exten => 45,1,Answer()
exten => 45,n,DBDeltree(CF/${CALLERID(num)})
exten => 45,n,DBDeltree(CF/${DB(MSN2SIP/${CALLERID(num)})})
exten => 45,n,Wait(2)
exten => 45,n,Playback(auth-thankyou)
exten => 45,n,NoOp(Weiterleitung fuer ${CALLERID(num)} deaktiviert.)
exten => 45,n,Hangup()
[capi-in]
; Prio1 prüfen ob EXTEN dreistellig ist
;
; Debug-Ausgabe: Länge der Extension ausgeben
exten => _X.,1,NoOp(Länge der EXTEN: ${LEN(${EXTEN})})
; Wenn ja weiter, wenn nein goto Prio10
exten => _X.,n,GotoIf($[${LEN(${EXTEN})} > 3]?10:)
; Wird ausgeführt wenn Extension <= 3 ist
; aber warum wird auch ZIEL_EXT gesetzt?
exten => _X.,n,Set(ZIEL_INT=${EXTEN})
exten => _X.,n,Set(ZIEL_EXT=${EXTEN})
exten => _X.,n,Goto(umleitung)
; Prio10 gewählte Nummer hat mehr als 3 Stellen
; und es handelt sich somit um ein externes Ziel
; Variable ZIEL_EXT auf gewähle Extension setzen
exten => _X.,10,Set(ZIEL_EXT=${EXTEN})
exten => _X.,n,Set(ZIEL_INT=${DB(MSN2SIP/${EXTEN})})
;
; Debug-Ausgabe: Wert aus MSN2SIP ausgeben
exten => _X.,n,NoOp(Zugehöriger Wert der Extension aus MSN2SIP: ${ZIEL_INT})
exten => _X.,n,GotoIf(${DB_EXISTS(MSN2SIP/${EXTEN})}?:200)
; Debug-Ausgabe: DB_EXISTS
exten => _X.,n,NoOp(DB_EXISTS: ${DB_EXISTS})
;Wahr wenn es eine Rufumleitung gibt
exten => _X.,n(umleitung),NoOp(Umleitung existiert: ${DB_EXISTS(CF/${EXTEN})})
exten => _X.,n,GotoIf(${DB_EXISTS(CF/${EXTEN})}?:100)
;Prüfen ob die Rufumleitung auf ein internes oder ein
;externe Ziel verweist
exten => _X.,n,NoOp(Länge des Eintrags: ${LEN(${DB(CF/${EXTEN})})})
exten => _X.,n,GotoIf($[${LEN(${DB(CF/${EXTEN})})} > 3]?300:)
exten => _X.,n,Set(ZIEL_INT=${DB(CF/${EXTEN})})
exten => _X.,n,NoOp(neues ZIEL_INT: ${ZIEL_INT})
exten => _X.,n,Goto(call_intern)
exten => _X.,100(call_intern),NoOp()
exten => _X.,101,NoOp(internen SIP-Teilnehmer anwählen)
exten => _X.,102,Dial(SIP/${ZIEL_INT},20)
exten => _X.,hint,SIP/${ZIEL_INT}
exten => _X.,n,Goto(s-${DIALSTATUS},80)
exten => _X.,n,Goto(ende)
;Prio60, gewählte Nummer ist keine interne, also über CAPI raus
exten => _X.,200,NoOp(Prio200: extern raus wählen)
exten => _X.,201,Dial(CAPI/contr1/${EXTEN})
exten => _X.,hint,CAPI/${EXTEN}
exten => _X.,n,Goto(ende)
;Prio80 DIALSTATUS
exten => s-NOANSWER,80,VoiceMail(${ZIEL_EXT},u)
exten => s-BUSY,80,VoiceMail(${ZIEL_EXT},b)
exten => s-ANSWER,80,Hangup()
exten => _s-.,1,Goto(s-NOANSWER,80)
;Prio100, Rufumleitung auf ein externes Ziel
exten => _X.,300,NoOp(Prio300: Rufumleitung auf ein externes Ziel)
exten => _X.,301,capicommand(deflect|${DB(CF/${EXTEN})})
exten => _X.,500(ende),NoOp()
; Mailbox von extern abfragen
;exten => asterisk,1,VoicemailMain(s${CALLERID(num)})
;exten => 250272,1,Answer()
;exten => 250272,n,Goto(mailbox,80,1)
[default]
include => echotest
include => mailbox
;include => mailbox_own
include => weiterleitung
include => weiterleitung_aus
include => capi-in