[macro-enable-forward] exten => s,1,Playback(pls-ent-num-transfer) exten => s,n,Playback(then-press-pound) exten => s,n,Read(target) exten => s,n,Playback(you-entered) exten => s,n,SayDigits(${TARGET}) exten => s,n,Playback(if-this-is-correct) exten => s,n,Playback(press-1) exten => s,n,Playback(if-this-is-not-correct) exten => s,n,Playback(press-2) exten => s,n,Read(option||1) exten => s,n,GotoIf($[${option} = 2]?*73,1) exten => s,n,Goto(commit,1) exten => commit,1,Set(DB(forward/${CALLERID(num)})=${TARGET}); exten => commit,n,Playback(activated) exten => commit,n,Playback(goodbye) exten => commit,n,Hangup() [macro-disable-forward] exten => s,1,DBdel(forward/${CALLERID(num)}); exten => s,n,Playback(de-activated) exten => s,n,Playback(goodbye) exten => s,n,Hangup [macro-stdexten]; ; ; Standard extension macro: ; ${ARG1} - Extension (we could have used ${MACRO_EXTEN} here as well ; ${ARG2} - Device(s) to ring ; exten => s,1,Set(TARGET=${DB(forward/${ARG1})}) exten => s,2,GotoIf(["${TARGET}" = ""]?5:forward,1) exten => s,5,Dial(${ARG2},20,Tt) ; Ring the interface, 20 seconds maximum exten => s,6,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER) exten => s-NOANSWER,1,GotoIf($["${DB_EXISTS(followme/${MACRO_EXTEN})}" = "1"]?follow) exten => s-NOANSWER,n,Voicemail(${ARG1}|u) ; If unavailable, send to voicemail w/ unavail announce exten => s-NOANSWER,n,Goto(default,s,1) ; If they press , return to start exten => s-BUSY,1,GotoIf($["${DB_EXISTS(followme/${MACRO_EXTEN})}" = "1"]?follow) exten => s-BUSY,n,Voicemail(${ARG1}|b) ; If busy, send to voicemail w/ busy announce exten => s-BUSY,n,Goto(default,s,1) ; If they press , return to start exten => _s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answer exten => a,1,VoicemailMain(${ARG1}) ; If they press *, send the user into VoicemailMain exten => o,1,Goto(mainmenu,0,1) exten => _X,1,Goto(mainmenu,${EXTEN},1) exten => forward,1,Goto(default,${TARGET},1) [default] ; ; By default we include the demo. In a production system, you ; probably don't want to have the demo there. ; exten => *72,1,Macro(enable-forward) exten => *73,1,Macro(disable-forward) exten => 600,1,Playback(demo-echotest) ; Let them know what's going on exten => 600,n,Echo ; Do the echo test exten => 600,n,Playback(demo-echodone) ; Let them know it's over exten => 600,n,Goto(s,6) ; Start over ;include => macro-enable-forward ;include => macro-stdexten include => dans include => localcalling include => networkone ;include => CFIM [dans] ; create call forward ;exten => _*21*X.,1,GotoIf(${EXTEN:4} = #?2:3) ;exten => _*21*X.,1,DBput(CFIM/${CALLERIDNUM}=+${EXTEN:4}) ;exten => _*21*X.,2,Hangup ; delete call forward ;exten => **21,1,DBdel(CFIM/${CALLERIDNUM}) ;exten => **21,2,Hangup ;exten => s,1,DBget(temp=CFIM/${ARG1}) ; Get CFIM key, if not existing, goto 102 ;exten => s,2,Dial(SIP/${temp}@netlogic/n) ; Unconditional forward ;exten => s,3,Dial(${ARG2},20) ; 20sec timeout ;exten => s,4,DBget(temp=CFBS/${ARG1}) ; Get CFBS key, if not existing, goto 105 ;exten => s,5,Dial(SIP/${temp}@netlogic/n) ; Forward on busy or unavailable ; No CFIM key ;exten => s,102,Goto(s,3) ; No CFBS key - voicemail ? ;exten => s,105,Busy exten => 7602,1,Dial,SIP/dansip exten => 7601,1,Dial,IAX2/3142624843 exten => +13142624843,1,Dial(IAX2/3142624843,10,tT) exten => 3142624843,1,Dial(IAX2/3142624843,,r) exten => +13142661005,1,Macro(stdexten,${EXTEN},SIP/3142661005) exten => 3142661005,1,Macro(stdexten,${EXTEN},SIP/3142661005,,tr) exten => +16366141361,1,Dial(SIP/6366141361,,tr) [localcalling] exten => _2[16][26]XXXX/_3142[16][26]XXXX,1,Set(CDR(accountcode)=00000) exten => _2[16][26]XXXX/_3142[16][26]XXXX,2,Dial(SIP/+1314${EXTEN}@netlogic,,T) exten => _474XXXX/_636474XXXX,1,Set(CDR(accountcode)=00000) exten => _474XXXX/_636474XXXX,2,Dial(SIP/+1636${EXTEN}@netlogic,,T) exten => _681XXXX/_3149[16][138]XXXX,1,Set(CDR(accountcode)=00000) exten => _681XXXX/_3149[16][138]XXXX,2,Dial(SIP/+1314${EXTEN}@netlogic,,T) exten => _9[16][138]XXXX/_3149[16][138]XXXX,1,Set(CDR(accountcode)=00000) exten => _9[16][138]XXXX/_3149[16][138]XXXX,2,Dial(SIP/+1314${EXTEN}@netlogic,,T) exten => _NXXXXXX/_314[92]XXXXXX,1,Set(CDR(accountcode)=4444) exten => _NXXXXXX/_314[92]XXXXXX,2,Dial(SIP/+1314${EXTEN}@netlogic,,T) exten => _636NXXXXXX/_314[92]XXXXXX,1,Set(CDR(accountcode)=5555) exten => _636NXXXXXX/_314[92]XXXXXX,2,Dial(SIP/+1${EXTEN}@netlogic,,T) [networkone] exten => _1NXXNXXXXXX,1,Dial(SIP/+${EXTEN}@netlogic,,T) exten => _1NXXNXXXXXX,n,Hangup exten => _911,1,Dial,SIP/+${EXTEN}@netlogic) exten => _911,n,Hangup exten => _411,1,Dial,SIP/+1${EXTEN}@netlogic) exten => _411,n,Hangup exten => _0,1,Dial,SIP/+${EXTEN}@netlogic) exten => _0,n,Hangup