; ############################################################################ ; Applications [app] ; ############################################################################ ; [app-directory] ;DIR-CONTEXT set in Digital Receptionist exten => ${APP-DIRECTORY},1,Wait(1) exten => ${APP-DIRECTORY},2,AGI(directory,${DIR-CONTEXT},ext-local,${DIRECTORY:0:1}${DIRECTORY_OPTS}o) exten => ${APP-DIRECTORY},3,Playback(vm-goodbye) exten => ${APP-DIRECTORY},4,Hangup ; ${APP-DIRECTORY-TOTAL} will access the entire directory (not just a single context) exten => ${APP-DIRECTORY-TOTAL},1,Answer exten => ${APP-DIRECTORY-TOTAL},2,Wait(1) exten => ${APP-DIRECTORY-TOTAL},3,AGI(directory,general,ext-local,${DIRECTORY:0:1}${DIRECTORY_OPTS}) exten => ${APP-DIRECTORY-TOTAL},4,Playback(vm-goodbye) exten => ${APP-DIRECTORY-TOTAL},5,Hangup exten => h,1,Hangup exten => o,1,GotoIf($["foo${FROM_DID}" = "foo"]?from-pstn,s,1:from-pstn,${FROM_DID},1) [app-dnd] exten => ${APP-DND-ON},1,Answer exten => ${APP-DND-ON},2,Wait(1) exten => ${APP-DND-ON},3,Macro(user-callerid) exten => ${APP-DND-ON},4,Set(DB(DND/${CALLERID(number)})=YES) exten => ${APP-DND-ON},5,Playback(do-not-disturb) exten => ${APP-DND-ON},6,Playback(activated) exten => ${APP-DND-ON},7,Macro(hangupcall) exten => ${APP-DND-OFF},1,Answer exten => ${APP-DND-OFF},2,Wait(1) exten => ${APP-DND-OFF},3,Macro(user-callerid) exten => ${APP-DND-OFF},4,DBdel(DND/${CALLERID(number)}) exten => ${APP-DND-OFF},5,Playback(do-not-disturb) exten => ${APP-DND-OFF},6,Playback(de-activated) exten => ${APP-DND-OFF},7,Macro(hangupcall) exten => $(APP-DND-OFF-ANY),1,Answer exten => $(APP-DND-OFF-ANY),n,Wait(1) exten => $(APP-DND-OFF-ANY),n,Playback(please-enter-your&extension) exten => $(APP-DND-OFF-ANY),n,Read(fromext,then-press-pound,,) exten => $(APP-DND-OFF-ANY),n,Wait(1) exten => $(APP-DND-OFF-ANY),n,dbDel(dnd/${fromext}) exten => $(APP-DND-OFF-ANY),n,Playback(do-not-disturb&for&extension) exten => $(APP-DND-OFF-ANY),n,SayDigits(${fromext}) exten => $(APP-DND-OFF-ANY),n,Playback(cancelled) exten => $(APP-DND-OFF-ANY),n,Macro(hangupcall,) [app-messagecenter] exten => ${APP-MESSAGECENTER},1,Answer exten => ${APP-MESSAGECENTER},2,Wait(1) exten => ${APP-MESSAGECENTER},3,Macro(user-callerid) exten => ${APP-MESSAGECENTER},4,Macro(get-vmcontext,${CALLERIDNUM}) ; Asterisk 1.2 _requires_ that context be set if mailbox is not in default context ; Dialing ${APP-MESSAGECENTER} from an IVR will be a problem, as macro-get-vmcontext will only return "default" in that case exten => ${APP-MESSAGECENTER},5,VoiceMailMain(${VMCONTEXT}) exten => ${APP-MESSAGECENTER},6,Macro(hangupcall) exten => _${APP-MESSAGECENTER}X.,1,Answer ; can dial ${APP-MESSAGECENTER} to skip 'mailbox' prompt. Useful for speedial. exten => _${APP-MESSAGECENTER}X.,2,Wait(1) exten => _${APP-MESSAGECENTER}X.,3,Macro(get-vmcontext,${EXTEN:3}) exten => _${APP-MESSAGECENTER}X.,4,VoiceMailMain(${EXTEN:3}@${VMCONTEXT}) exten => _${APP-MESSAGECENTER}X.,5,Macro(hangupcall) exten => ${APP-MESSAGECENTER-DIRECT},1,Answer exten => ${APP-MESSAGECENTER-DIRECT},2,Wait(1) exten => ${APP-MESSAGECENTER-DIRECT},3,Macro(user-callerid) exten => ${APP-MESSAGECENTER-DIRECT},4,Macro(get-vmcontext,${CALLERIDNUM}) exten => ${APP-MESSAGECENTER-DIRECT},5,VoicemailMain(${CALLERIDNUM}@${VMCONTEXT}) exten => ${APP-MESSAGECENTER-DIRECT},6,Macro(hangupcall) [app-callwaiting] exten => ${APP-CALLWAITING-ON},1,Answer exten => ${APP-CALLWAITING-ON},2,Wait(1) exten => ${APP-CALLWAITING-ON},3,Macro(user-callerid) exten => ${APP-CALLWAITING-ON},4,Set(DB(CW/${CALLERID(number)})=ENABLED) exten => ${APP-CALLWAITING-ON},5,Playback(call-waiting) exten => ${APP-CALLWAITING-ON},6,Playback(activated) exten => ${APP-CALLWAITING-ON},7,Macro(hangupcall) exten => ${APP-CALLWAITING-OFF},1,Answer exten => ${APP-CALLWAITING-OFF},2,Wait(1) exten => ${APP-CALLWAITING-OFF},3,Macro(user-callerid) exten => ${APP-CALLWAITING-OFF},4,DBdel(CW/${CALLERID(number)}) exten => ${APP-CALLWAITING-OFF},5,Playback(call-waiting) exten => ${APP-CALLWAITING-OFF},6,Playback(de-activated) exten => ${APP-CALLWAITING-OFF},7,Macro(hangupcall) ;Overrides disabled callwaiting with callerid matching. exten => ${APP-SELECTIVE-CALLWAITING-ON},1,Answer exten => ${APP-SELECTIVE-CALLWAITING-ON},2,Wait(1) exten => ${APP-SELECTIVE-CALLWAITING-ON},3,Macro(user-callerid) exten => ${APP-SELECTIVE-CALLWAITING-ON},4,Set(DB(SCW/${CALLERID(number)})=ENABLED) exten => ${APP-SELECTIVE-CALLWAITING-ON},5,Playback(selective-call-waiting) exten => ${APP-SELECTIVE-CALLWAITING-ON},6,Playback(activated) exten => ${APP-SELECTIVE-CALLWAITING-ON},7,Macro(hangupcall) exten => _${APP-SELECTIVE-CALLFORWARD-ON}.,1,Macro(user-callerid) exten => _${APP-SELECTIVE-CALLWAITING-ON}.,2,Set(DB(SCW/${CALLERID(number)})=${EXTEN:3}) exten => _${APP-SELECTIVE-CALLWAITING-ON}.,3,Answer exten => _${APP-SELECTIVE-CALLWAITING-ON}.,4,Wait(1) exten => _${APP-SELECTIVE-CALLWAITING-ON}.,5,Playback(selective-call-waiting-unconditional) exten => _${APP-SELECTIVE-CALLWAITING-ON}.,6,Playback(for) exten => _${APP-SELECTIVE-CALLWAITING-ON}.,7,Playback(extension) exten => _${APP-SELECTIVE-CALLWAITING-ON}.,8,SayDigits(${CALLERID(number)}) exten => _${APP-SELECTIVE-CALLWAITING-ON}.,9,Playback(is-set-to) exten => _${APP-SELECTIVE-CALLWAITING-ON}.,10,SayDigits(${EXTEN:3}) exten => _${APP-SELECTIVE-CALLWAITING-ON}.,11,Macro(hangupcall) exten => ${APP-SELECTIVE-CALLWAITING-OFF},1,Answer exten => ${APP-SELECTIVE-CALLWAITING-OFF},2,Wait(1) exten => ${APP-SELECTIVE-CALLWAITING-OFF},3,Macro(user-callerid) exten => ${APP-SELECTIVE-CALLWAITING-OFF},4,DBdel(SCW/${CALLERID(number)}) exten => ${APP-SELECTIVE-CALLWAITING-OFF},5,Playback(selective-call-waiting) exten => ${APP-SELECTIVE-CALLWAITING-OFF},6,Playback(de-activated) exten => ${APP-SELECTIVE-CALLWAITING-OFF},7,Macro(hangupcall) ;[app-selective-callwaiting-off-any] exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),1,Answer exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,Wait(1) exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,Playback(please-enter-your&extension) exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,Read(fromext,then-press-pound,,) exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,Wait(1) exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,dbDel(scw/${fromext}) exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,Playback(selective-call-waiting&for&extension) exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,SayDigits(${fromext}) exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,Playback(cancelled) exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,Macro(hangupcall,) [app-callforward] ; dialed call forward app - forwards calling extension exten => _${APP-CALLFORWARD-ON}.,1,Macro(user-callerid) exten => _${APP-CALLFORWARD-ON}.,2,Set(DB(CF/${CALLERID(number)})=${EXTEN:3}) exten => _${APP-CALLFORWARD-ON}.,3,Answer exten => _${APP-CALLFORWARD-ON}.,4,Wait(1) exten => _${APP-CALLFORWARD-ON}.,5,Playback(call-fwd-unconditional) exten => _${APP-CALLFORWARD-ON}.,6,Playback(for) exten => _${APP-CALLFORWARD-ON}.,7,Playback(extension) exten => _${APP-CALLFORWARD-ON}.,8,SayDigits(${CALLERID(number)}) exten => _${APP-CALLFORWARD-ON}.,9,Playback(is-set-to) exten => _${APP-CALLFORWARD-ON}.,10,SayDigits(${EXTEN:3}) exten => _${APP-CALLFORWARD-ON}.,11,Macro(hangupcall) ; prompting call forward app - forwards entered extension exten => ${APP-CALLFORWARD-ON},1,Answer exten => ${APP-CALLFORWARD-ON},2,Wait(1) exten => ${APP-CALLFORWARD-ON},3,BackGround(please-enter-your) exten => ${APP-CALLFORWARD-ON},4,Playback(extension) exten => ${APP-CALLFORWARD-ON},5,Read(fromext,then-press-pound) exten => ${APP-CALLFORWARD-ON},6,Wait(1) exten => ${APP-CALLFORWARD-ON},7,BackGround(ent-target-attendant) exten => ${APP-CALLFORWARD-ON},8,Read(toext,then-press-pound) exten => ${APP-CALLFORWARD-ON},9,Wait(1) exten => ${APP-CALLFORWARD-ON},10,Set(DB(CF/${fromext})=${toext}) exten => ${APP-CALLFORWARD-ON},11,Playback(call-fwd-unconditional) exten => ${APP-CALLFORWARD-ON},12,Playback(for) exten => ${APP-CALLFORWARD-ON},13,Playback(extension) exten => ${APP-CALLFORWARD-ON},14,SayDigits(${fromext}) exten => ${APP-CALLFORWARD-ON},15,Playback(is-set-to) exten => ${APP-CALLFORWARD-ON},16,SayDigits(${toext}) exten => ${APP-CALLFORWARD-ON},17,Macro(hangupcall) ; cancels dialed extension call forward exten => _${APP-CALLFORWARD-OFF}.,1,DBdel(CF/${EXTEN:3}) exten => _${APP-CALLFORWARD-OFF}.,2,Answer exten => _${APP-CALLFORWARD-OFF}.,3,Wait(1) exten => _${APP-CALLFORWARD-OFF}.,4,SayDigits(${EXTEN:3}) exten => _${APP-CALLFORWARD-OFF}.,5,Playback(call-fwd-cancelled) exten => _${APP-CALLFORWARD-OFF}.,6,Macro(hangupcall) ; cancels call forward for calling extension exten => ${APP-CALLFORWARD-OFF},1,Macro(user-callerid) exten => ${APP-CALLFORWARD-OFF},2,DBdel(CF/${CALLERID(number)}) exten => ${APP-CALLFORWARD-OFF},3,Answer exten => ${APP-CALLFORWARD-OFF},4,Wait(1) exten => ${APP-CALLFORWARD-OFF},5,Playback(call-fwd-cancelled) exten => ${APP-CALLFORWARD-OFF},6,Macro(hangupcall) ;[app-CALLFORWARD-off-any] exten => $(APP-CALLFORWARD-OFF-ANY),1,Answer exten => $(APP-CALLFORWARD-OFF-ANY),n,Wait(1) exten => $(APP-CALLFORWARD-OFF-ANY),n,Playback(please-enter-your&extension) exten => $(APP-CALLFORWARD-OFF-ANY),n,Read(fromext,then-press-pound,,) exten => $(APP-CALLFORWARD-OFF-ANY),n,Wait(1) exten => $(APP-CALLFORWARD-OFF-ANY),n,dbDel(scw/${fromext}) exten => $(APP-CALLFORWARD-OFF-ANY),n,Playback(selective-call-waiting&for&extension) exten => $(APP-CALLFORWARD-OFF-ANY),n,SayDigits(${fromext}) exten => $(APP-CALLFORWARD-OFF-ANY),n,Playback(cancelled) exten => $(APP-CALLFORWARD-OFF-ANY),n,Macro(hangupcall,) ; dialed call forward on busy app - forwards calling extension when busy exten => _${APP-CALLFORWARD-BUSY-ON}.,1,Macro(user-callerid) exten => _${APP-CALLFORWARD-BUSY-ON}.,2,Set(DB(CFB/${CALLERID(number)})=${EXTEN:3}) exten => _${APP-CALLFORWARD-BUSY-ON}.,3,Answer exten => _${APP-CALLFORWARD-BUSY-ON}.,4,Wait(1) exten => _${APP-CALLFORWARD-BUSY-ON}.,5,Playback(call-fwd-on-busy) exten => _${APP-CALLFORWARD-BUSY-ON}.,6,Playback(for) exten => _${APP-CALLFORWARD-BUSY-ON}.,7,Playback(extension) exten => _${APP-CALLFORWARD-BUSY-ON}.,8,SayDigits(${CALLERID(number)}) exten => _${APP-CALLFORWARD-BUSY-ON}.,9,Playback(is-set-to) exten => _${APP-CALLFORWARD-BUSY-ON}.,10,SayDigits(${EXTEN:3}) exten => _${APP-CALLFORWARD-BUSY-ON}.,11,Macro(hangupcall) ; cancels call forward on busy for calling extension from any exten ;[APP-CALLFORWARD-busy-off] include => APP-CALLFORWARD-busy-off-custom exten => $(APP-CALLFORWARD-BUSY-OFF),1,Answer exten => $(APP-CALLFORWARD-BUSY-OFF),n,Wait(1) exten => $(APP-CALLFORWARD-BUSY-OFF),n,Macro(user-callerid,) exten => $(APP-CALLFORWARD-BUSY-OFF),n,dbDel(CFB/${CALLERID(number)}) exten => $(APP-CALLFORWARD-BUSY-OFF),n,Playback(call-fwd-on-busy&de-activated) exten => $(APP-CALLFORWARD-BUSY-OFF),n,Macro(hangupcall,) exten => _$(APP-CALLFORWARD-BUSY-OFF).,1,Answer exten => _$(APP-CALLFORWARD-BUSY-OFF).,n,Wait(1) exten => _$(APP-CALLFORWARD-BUSY-OFF).,n,Set(fromext=${EXTEN:3}) exten => _$(APP-CALLFORWARD-BUSY-OFF).,n,dbDel(CFB/${fromext}) exten => _$(APP-CALLFORWARD-BUSY-OFF).,n,Playback(call-fwd-on-busy&for&extension) exten => _$(APP-CALLFORWARD-BUSY-OFF).,n,SayDigits(${fromext}) exten => _$(APP-CALLFORWARD-BUSY-OFF).,n,Playback(cancelled) exten => _$(APP-CALLFORWARD-BUSY-OFF).,n,Macro(hangupcall,) exten => $(APP-CALLFORWARD-BUSY-OFF-ANY),1,Answer exten => $(APP-CALLFORWARD-BUSY-OFF-ANY),n,Wait(1) exten => $(APP-CALLFORWARD-BUSY-OFF-ANY),n,Playback(please-enter-your&extension) exten => $(APP-CALLFORWARD-BUSY-OFF-ANY),n,Read(fromext,then-press-pound,,) exten => $(APP-CALLFORWARD-BUSY-OFF-ANY),n,Wait(1) exten => $(APP-CALLFORWARD-BUSY-OFF-ANY),n,dbDel(scw/${fromext}) exten => $(APP-CALLFORWARD-BUSY-OFF-ANY),n,Playback(call-fwd-on-busy&for&extension) exten => $(APP-CALLFORWARD-BUSY-OFF-ANY),n,SayDigits(${fromext}) exten => $(APP-CALLFORWARD-BUSY-OFF-ANY),n,Playback(cancelled) exten => $(APP-CALLFORWARD-BUSY-OFF-ANY),n,Macro(hangupcall,) ;[APP-CF-UNAVAIBLE-] include => app-cf-unavailable-off-custom exten => [APP-CF-UNAVAIBLE-OFF],1,Answer exten => [APP-CF-UNAVAIBLE-OFF],n,Wait(1) exten => [APP-CF-UNAVAIBLE-OFF],n,Macro(user-callerid,) exten => [APP-CF-UNAVAIBLE-OFF],n,dbDel(CFU/${CALLERID(number)}) exten => [APP-CF-UNAVAIBLE-OFF],n,Playback(call-fwd-no-ans&de-activated) exten => [APP-CF-UNAVAIBLE-OFF],n,Macro(hangupcall,) exten => _[APP-CF-UNAVAIBLE-OFF].,1,Answer exten => _[APP-CF-UNAVAIBLE-OFF].,n,Wait(1) exten => _[APP-CF-UNAVAIBLE-OFF].,n,Set(fromext=${EXTEN:3}) exten => _[APP-CF-UNAVAIBLE-OFF].,n,dbDel(CFU/${fromext}) exten => _[APP-CF-UNAVAIBLE-OFF].,n,Playback(call-fwd-no-ans&for&extension) exten => _[APP-CF-UNAVAIBLE-OFF].,n,SayDigits(${fromext}) exten => _[APP-CF-UNAVAIBLE-OFF].,n,Playback(cancelled) exten => _[APP-CF-UNAVAIBLE-OFF].,n,Macro(hangupcall,) ;[APP-CF-UNAVAIBLE-ON] exten => [APP-CF-UNAVAIBLE-ON],1,Answer exten => [APP-CF-UNAVAIBLE-ON],n,Wait(1) exten => [APP-CF-UNAVAIBLE-ON],n,Playback(call-fwd-no-ans) exten => [APP-CF-UNAVAIBLE-ON],n,Playback(please-enter-your&extension) exten => [APP-CF-UNAVAIBLE-ON],n,Read(fromext,then-press-pound,,) exten => [APP-CF-UNAVAIBLE-ON],n,Set(fromext=${IF($["foo${fromext}"="foo"]?${CALLERID(number)}:${fromext})}) exten => [APP-CF-UNAVAIBLE-ON],n,Wait(1) exten => [APP-CF-UNAVAIBLE-ON],n(startread),Playback(ent-target-attendant) exten => [APP-CF-UNAVAIBLE-ON],n,Read(toext,then-press-pound,,) exten => [APP-CF-UNAVAIBLE-ON],n,GotoIf($["foo${toext}"="foo"]?startread) exten => [APP-CF-UNAVAIBLE-ON],n,Wait(1) exten => [APP-CF-UNAVAIBLE-ON],n,Set(DB(CFU/${fromext})=${toext}) exten => [APP-CF-UNAVAIBLE-ON],n,Playback(call-fwd-no-ans&for&extension) exten => [APP-CF-UNAVAIBLE-ON],n,SayDigits(${fromext}) exten => [APP-CF-UNAVAIBLE-ON],n,Playback(is-set-to) exten => [APP-CF-UNAVAIBLE-ON],n,SayDigits(${toext}) exten => [APP-CF-UNAVAIBLE-ON],n,Macro(hangupcall,) exten => _[APP-CF-UNAVAIBLE-ON].,1,Answer exten => _[APP-CF-UNAVAIBLE-ON].,n,Wait(1) exten => _[APP-CF-UNAVAIBLE-ON].,n,Macro(user-callerid,) exten => _[APP-CF-UNAVAIBLE-ON].,n,Set(DB(CFU/${CALLERID(number)})=${EXTEN:3}) exten => _[APP-CF-UNAVAIBLE-ON].,n,Playback(call-fwd-no-ans&for&extension) exten => _[APP-CF-UNAVAIBLE-ON].,n,SayDigits(${CALLERID(number)}) exten => _[APP-CF-UNAVAIBLE-ON].,n,Playback(is-set-to) exten => _[APP-CF-UNAVAIBLE-ON].,n,SayDigits(${EXTEN:3}) exten => _[APP-CF-UNAVAIBLE-ON].,n,Macro(hangupcall,) [app-selective-callforward-on] ; dialed call forward app - forwards calling extension exten => _${APP-SELECTIVE-CALLFORWARD-ON}.,1,Macro(user-callerid) exten => _${APP-SELECTIVE-CALLFORWARD-ON}.,2,Set(DB(SCF/${CALLERID(number)})=${EXTEN:3}) exten => _${APP-SELECTIVE-CALLFORWARD-ON}.,3,Answer exten => _${APP-SELECTIVE-CALLFORWARD-ON}.,4,Wait(1) exten => _${APP-SELECTIVE-CALLFORWARD-ON}.,5,Playback(selective-call-fwd-unconditional) exten => _${APP-SELECTIVE-CALLFORWARD-ON}.,6,Playback(for) exten => _${APP-SELECTIVE-CALLFORWARD-ON}.,7,Playback(extension) exten => _${APP-SELECTIVE-CALLFORWARD-ON}.,8,SayDigits(${CALLERID(number)}) exten => _${APP-SELECTIVE-CALLFORWARD-ON}.,9,Playback(is-set-to) exten => _${APP-SELECTIVE-CALLFORWARD-ON}.,10,SayDigits(${EXTEN:3}) exten => _${APP-SELECTIVE-CALLFORWARD-ON}.,11,Macro(hangupcall) ; prompting selective call forward app - forwards entered extension exten => ${APP-SELECTIVE-CALLFORWARD-ON},1,Answer exten => ${APP-SELECTIVE-CALLFORWARD-ON},2,Wait(1) exten => ${APP-SELECTIVE-CALLFORWARD-ON},3,BackGround(please-enter-your) exten => ${APP-SELECTIVE-CALLFORWARD-ON},4,Playback(extension) exten => ${APP-SELECTIVE-CALLFORWARD-ON},5,Read(fromext,then-press-pound) exten => ${APP-SELECTIVE-CALLFORWARD-ON},6,Wait(1) exten => ${APP-SELECTIVE-CALLFORWARD-ON},7,BackGround(ent-target-attendant) exten => ${APP-SELECTIVE-CALLFORWARD-ON},8,Read(toext,then-press-pound) exten => ${APP-SELECTIVE-CALLFORWARD-ON},9,Wait(1) exten => ${APP-SELECTIVE-CALLFORWARD-ON},10,Set(DB(SCF/${fromext})=${toext}) exten => ${APP-SELECTIVE-CALLFORWARD-ON},11,Playback(selective-call-fwd-unconditional) exten => ${APP-SELECTIVE-CALLFORWARD-ON},12,Playback(for) exten => ${APP-SELECTIVE-CALLFORWARD-ON},13,Playback(extension) exten => ${APP-SELECTIVE-CALLFORWARD-ON},14,SayDigits(${fromext}) exten => ${APP-SELECTIVE-CALLFORWARD-ON},15,Playback(is-set-to) exten => ${APP-SELECTIVE-CALLFORWARD-ON},16,SayDigits(${toext}) exten => ${APP-SELECTIVE-CALLFORWARD-ON},17,Macro(hangupcall) ; cancels dialed extension selective call forward exten => _${APP-SELECTIVE-CALLFORWARD-OFF}.,1,DBdel(SCF/${EXTEN:3}) exten => _${APP-SELECTIVE-CALLFORWARD-OFF}.,2,Answer exten => _${APP-SELECTIVE-CALLFORWARD-OFF}.,3,Wait(1) exten => _${APP-SELECTIVE-CALLFORWARD-OFF}.,4,SayDigits(${EXTEN:3}) exten => _${APP-SELECTIVE-CALLFORWARD-OFF}.,5,Playback(call-fwd-cancelled) exten => _${APP-SELECTIVE-CALLFORWARD-OFF}.,6,Macro(hangupcall) ; cancels call forward for selective calling extension exten => ${APP-SELECTIVE-CALLFORWARD-OFF},1,Macro(user-callerid) exten => ${APP-SELECTIVE-CALLFORWARD-OFF},2,DBdel(SCF/${CALLERID(number)}) exten => ${APP-SELECTIVE-CALLFORWARD-OFF},3,Answer exten => ${APP-SELECTIVE-CALLFORWARD-OFF},4,Wait(1) exten => ${APP-SELECTIVE-CALLFORWARD-OFF},5,Playback(call-fwd-cancelled) exten => ${APP-SELECTIVE-CALLFORWARD-OFF},6,Macro(hangupcall) ; cancels call forward for selective calling extension from any exten exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),1,Answer exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,Wait(1) exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,Playback(please-enter-your&extension) exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,Read(fromext,then-press-pound,,) exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,Wait(1) exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,dbDel(scw/${fromext}) exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,Playback(selective-call-waiting&for&extension) exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,SayDigits(${fromext}) exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,Playback(cancelled) exten => $(APP-SELECTIVE-CALLWAITING-OFF-ANY),n,Macro(hangupcall,) exten => h,1,Hangup [app-callforward-unavailable-on] include => APP-CALLFORWARD-unavailable-on-custom exten => $(APP-CALLFORWARD-UNAVIL-ON),1,Answer exten => $(APP-CALLFORWARD-UNAVIL-ON),n,Wait(1) exten => $(APP-CALLFORWARD-UNAVIL-ON),n,Playback(call-fwd-no-ans) exten => $(APP-CALLFORWARD-UNAVIL-ON),n,Playback(please-enter-your&extension) exten => $(APP-CALLFORWARD-UNAVIL-ON),n,Read(fromext,then-press-pound,,) exten => $(APP-CALLFORWARD-UNAVIL-ON),n,Set(fromext=${IF($["foo${fromext}"="foo"]?${CALLERID(number)}:${fromext})}) exten => $(APP-CALLFORWARD-UNAVIL-ON),n,Wait(1) exten => $(APP-CALLFORWARD-UNAVIL-ON),n(startread),Playback(ent-target-attendant) exten => $(APP-CALLFORWARD-UNAVIL-ON),n,Read(toext,then-press-pound,,) exten => $(APP-CALLFORWARD-UNAVIL-ON),n,GotoIf($["foo${toext}"="foo"]?startread) exten => $(APP-CALLFORWARD-UNAVIL-ON),n,Wait(1) exten => $(APP-CALLFORWARD-UNAVIL-ON),n,Set(DB(CFU/${fromext})=${toext}) exten => $(APP-CALLFORWARD-UNAVIL-ON),n,Playback(call-fwd-no-ans&for&extension) exten => $(APP-CALLFORWARD-UNAVIL-ON),n,SayDigits(${fromext}) exten => $(APP-CALLFORWARD-UNAVIL-ON),n,Playback(is-set-to) exten => $(APP-CALLFORWARD-UNAVIL-ON),n,SayDigits(${toext}) exten => $(APP-CALLFORWARD-UNAVIL-ON),n,Macro(hangupcall,) exten => _$(APP-CALLFORWARD-UNAVIL-ON).,1,Answer exten => _$(APP-CALLFORWARD-UNAVIL-ON).,n,Wait(1) exten => _$(APP-CALLFORWARD-UNAVIL-ON).,n,Macro(user-callerid,) exten => _$(APP-CALLFORWARD-UNAVIL-ON).,n,Set(DB(CFU/${CALLERID(number)})=${EXTEN:3}) exten => _$(APP-CALLFORWARD-UNAVIL-ON).,n,Playback(call-fwd-no-ans&for&extension) exten => _$(APP-CALLFORWARD-UNAVIL-ON).,n,SayDigits(${CALLERID(number)}) exten => _$(APP-CALLFORWARD-UNAVIL-ON).,n,Playback(is-set-to) exten => _$(APP-CALLFORWARD-UNAVIL-ON).,n,SayDigits(${EXTEN:3}) exten => _$(APP-CALLFORWARD-UNAVIL-ON).,n,Macro(hangupcall,) ;[APP-CALLFORWARD-unavailable-off] include => APP-CALLFORWARD-unavailable-off-custom exten => $(APP-CALLFORWARD-UNAVIL-OFF),1,Answer exten => $(APP-CALLFORWARD-UNAVIL-OFF),n,Wait(1) exten => $(APP-CALLFORWARD-UNAVIL-OFF),n,Macro(user-callerid,) exten => $(APP-CALLFORWARD-UNAVIL-OFF),n,dbDel(CFU/${CALLERID(number)}) exten => $(APP-CALLFORWARD-UNAVIL-OFF),n,Playback(call-fwd-no-ans&de-activated) exten => $(APP-CALLFORWARD-UNAVIL-OFF),n,Macro(hangupcall,) exten => _$(APP-CALLFORWARD-UNAVIL-OFF).,1,Answer exten => _$(APP-CALLFORWARD-UNAVIL-OFF).,n,Wait(1) exten => _$(APP-CALLFORWARD-UNAVIL-OFF).,n,Set(fromext=${EXTEN:3}) exten => _$(APP-CALLFORWARD-UNAVIL-OFF).,n,dbDel(CFU/${fromext}) exten => _$(APP-CALLFORWARD-UNAVIL-OFF).,n,Playback(call-fwd-no-ans&for&extension) exten => _$(APP-CALLFORWARD-UNAVIL-OFF).,n,SayDigits(${fromext}) exten => _$(APP-CALLFORWARD-UNAVIL-OFF).,n,Playback(cancelled) exten => _$(APP-CALLFORWARD-UNAVIL-OFF).,n,Macro(hangupcall,) ;[app-call-forward-unavil-off-any] include => app-CALLFORWARD-UNAVIL-off-any-custom exten => $(APP-CALLFORWARD-UNAVIL-OFF-ANY),1,Answer exten => $(APP-CALLFORWARD-UNAVIL-OFF-ANY),n,Wait(1) exten => $(APP-CALLFORWARD-UNAVIL-OFF-ANY),n,Playback(please-enter-your&extension) exten => $(APP-CALLFORWARD-UNAVIL-OFF-ANY),n,Read(fromext,then-press-pound,,) exten => $(APP-CALLFORWARD-UNAVIL-OFF-ANY),n,Wait(1) exten => $(APP-CALLFORWARD-UNAVIL-OFF-ANY),n,dbDel(scw/${fromext}) exten => $(APP-CALLFORWARD-UNAVIL-OFF-ANY),n,Playback(call-fwd-no-ans&for&extension) exten => $(APP-CALLFORWARD-UNAVIL-OFF-ANY),n,SayDigits(${fromext}) exten => $(APP-CALLFORWARD-UNAVIL-OFF-ANY),n,Playback(cancelled) exten => $(APP-CALLFORWARD-UNAVIL-OFF-ANY),n,Macro(hangupcall,) [app-anoncall-rejection] ;Activate's anonamous call rejection exten => ${APP-ANONCALL-REJECTION-ON},1,Macro(user-callerid) exten => ${APP-ANONCALL-REJECTION-ON},2,Set(DB(ACR/${CALLERIDNUM}=>YES) exten => ${APP-ANONCALL-REJECTION-ON},3,Answer exten => ${APP-ANONCALL-REJECTION-ON},4,Wait(1) exten => ${APP-ANONCALL-REJECTION-ON},5,Playback(anon-call-rej) exten => ${APP-ANONCALL-REJECTION-ON},6,Playback(activated) exten => ${APP-ANONCALL-REJECTION-ON},7,Hangup ; cancels anonamous call blocking. exten => ${APP-ANONCALL-REJECTION-OFF},1,Macro(user-callerid) exten => ${APP-ANONCALL-REJECTION-OFF},2,DBdel(ACR/${CALLERIDNUM}) exten => ${APP-ANONCALL-REJECTION-OFF},3,Answer exten => ${APP-ANONCALL-REJECTION-OFF},4,Wait(1) exten => ${APP-ANONCALL-REJECTION-OFF},5,Playback(anon-call-rej) exten => ${APP-ANONCALL-REJECTION-OFF},6,Playback(deactivated) exten => ${APP-ANONCALL-REJECTION-OFF},7,Hangup [app-blacklist] exten => _${APP-BLACKLIST-ADD}.,1,Macro(user-callerid) exten => _${APP-BLACKLIST-ADD}.,2,Set(DB(BLACKLIST/${CALLERID(number)})=${EXTEN:3}) exten => _${APP-BLACKLIST-ADD}.,3,Answer exten => _${APP-BLACKLIST-ADD}.,4,Wait(1) exten => _${APP-BLACKLIST-ADD}.,5,Playback(blacklist-add) exten => _${APP-BLACKLIST-ADD}.,6,Playback(for) exten => _${APP-BLACKLIST-ADD}.,7,Playback(extension) exten => _${APP-BLACKLIST-ADD}.,8,SayDigits(${CALLERID(number)}) exten => _${APP-BLACKLIST-ADD}.,9,Playback(is-set-to) exten => _${APP-BLACKLIST-ADD}.,10,SayDigits(${EXTEN:3}) exten => _${APP-BLACKLIST-ADD}.,11,Macro(hangupcall) exten => _${APP-BLACKLIST-REMOVE}.,1,Answer exten => _${APP-BLACKLIST-REMOVE}.,2,Wait(1) exten => _${APP-BLACKLIST-REMOVE}.,3,Macro(user-callerid) exten => _${APP-BLACKLIST-REMOVE}.,4,DBdel(BLACKLIST/${CALLERID(number)}) exten => _${APP-BLACKLIST-REMOVE}.,5,Playback(do-not-disturb) exten => _${APP-BLACKLIST-REMOVE}.,6,Playback(de-activated) exten => _${APP-BLACKLIST-REMOVE}.,7,Macro(hangupcall) [app-calltrace] ; We can't have our timeouts or dial digits collide with other applications ; or extensions, so we build the app in pieces exten => ${APP-CALLTRACE},1,Goto(app-calltrace-perform,s,1) [app-calltrace-perform] exten => s,1,Macro(user-callerid) exten => s,2,Answer exten => s,3,Wait(1) exten => s,4,Background(info-about-last-call) exten => s,5,Background(telephone-number) exten => s,6,Set(lastcaller=${DB(CALLTRACE/${CALLERID(number)})}) exten => s,7,GotoIf($[${lastcaller}]?8:14) exten => s,8,SayDigits(${lastcaller}) exten => s,9,Set(TIMEOUT(digit)=3) exten => s,10,Set(TIMEOUT(response)=7) exten => s,11,Background(to-call-this-number) exten => s,12,Background(press-1) exten => s,13,Goto(16) exten => s,14,Playback(from-unknown-caller) exten => s,15,Macro(hangupcall) exten => s,16,NoOp exten => 1,1,Goto(from-internal,${lastcaller},1); exten => i,1,Playback(vm-goodbye) exten => i,2,Macro(hangupcall) exten => t,1,Playback(vm-goodbye) exten => t,2,Macro(hangupcall) [app-userlogonoff] exten => ${APP-USERLOGON},1,Macro(user-logon) exten => ${APP-USERLOGON},2,Hangup() exten => _${APP-USERLOGON}.,1,Macro(user-logon,${EXTEN:3}) exten => _${APP-USERLOGON}.,2,Hangup() exten => ${APP-USERLOGOFF},1,Macro(user-logoff) exten => ${APP-USERLOGOFF},2,Hangup()