[general] writeprotect=yes autofallthrough=yes clearglobalvars=yes priorityjumping=no [globals] ; FXS Channel bank to stations is Zap/g2, Zap/g3 ; T1 to PSTN is Zap/g1 ; POTS to PSTN is Zap/g4 EMERTRUNK=Zap/g4 LOCALTRUNK=Zap/g4 CB=Zap/g1 LDTRUNK=Zap/g1 FONELDTRUNK=IAX2/rpc-pbx-mol-01:rpc-pbx-mol-01@rpc-pbx-peo-02.royalpublishing.com FTWOLDTRUNK=IAX2/rpc-pbx-mol-01:rpc-pbx-mol-01@rpc-pbx-blm-01.royalpublishing.com #FONELDTRUNK=IAX2/rpc-pbx-mol-01:rpc-pbx-mol-01@rpc-pbx-urb-01.royalpublishing.com ; Program code length PGCODE=5 [from-internal] include => applications include => localextensions include => tollfree include => localtoll include => ldtoll include => remoteextensions include => branches [from-sip] include => presence include => admin include => from-internal include => localextensions include => remoteextensions include => tollfree include => localtoll include => ldtoll [from-iax] include => from-sip [from-external] include => from-pstn [from-pstn] include => receptionist [fax-in] exten => fax,1,Dial(${FAXIN}|10000|t) exten => fax,n,Hangup exten => s,1,Dial(${FAXIN}|10000|t) exten => s,n,Hangup [admin] include => retrunks include => monitor [retrunks] exten => _*862NXXNXXXXXX,1,NoOp(Retrunking ${EXTEN:4} via rpcpbx002) exten => _*862NXXNXXXXXX,n,Dial(IAX2/rpcpbx004:rpcpbx004@rpcpbx002/1${EXTEN:4}|1000|t) exten => _*862NXXNXXXXXX,n,Hangup exten => _*863NXXNXXXXXX,1,NoOp(Retrunking ${EXTEN:4} via rpcpbx003) exten => _*863NXXNXXXXXX,n,Dial(IAX2/rpcpbx004:rpcpbx004@rpcpbx003/1${EXTEN:4}|1000|t) exten => _*863NXXNXXXXXX,n,Hangup exten => _*865NXXNXXXXXX,1,NoOp(Retrunking ${EXTEN:4} via rpcpbx005) exten => _*865NXXNXXXXXX,n,Dial(IAX2/rpcpbx004:rpcpbx004@rpcpbx005/1${EXTEN:4}|1000|t) exten => _*865NXXNXXXXXX,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,Dial(${ARG2}|20|tT) exten => s,2,Goto(s-${DIALSTATUS},1) exten => s-NOANSWER,1,Voicemail(u7596) exten => s-NOANSWER,n,Playback(vm-goodbye) exten => s-NOANSWER,n,Hangup exten => s-BUSY,1,Voicemail(b7596) exten => s-BUSY,n,Playback(vm-goodbye) exten => s-BUSY,n,Hangup exten => _s-.,1,Goto(s-NOANSWER,1) exten => a,1,VoicemailMain(7596) exten => a,n,Playback(vm-goodbye) exten => a,n,Hangup [remoteextensions] ; 7700 = Bloomington (rpcpbx005) ; 7600 = Urbana (rpcpbx002) ; 7500 = Moline (rpcpbx003) ; 7400 = Peoria Training ; 7300 = Galesburg ; 7200 = Peru ; 7100 = Peoria (old rpcpbx001) ; 7000 = Peoria (reserved for PBX upgrade) ; Bloomington exten => _77XX,1,NoOp(Pre-AGI CallerID(num): ${CALLERID(num)}) exten => _77XX,n,NoOp(Pre-AGI CallerID(name): ${CALLERID(name)}) exten => _77XX,n,AGI(callerid-test.agi) exten => _77XX,n,NoOp(Post-AGI CallerID(num): ${CALLERID(num)}) exten => _77XX,n,NoOp(Post-AGI CallerID(name): ${CALLERID(name)}) exten => _77XX,n,Dial(IAX2/rpc-pbx-mol-01:rpc-pbx-mol-01@rpc-pbx-blm-01.royalpublishing.com/${EXTEN}|1000|t) exten => _77XX,n,Hangup ; Urbana exten => _76XX,1,NoOp(Pre-AGI CallerID(num): ${CALLERID(num)}) exten => _76XX,n,NoOp(Pre-AGI CallerID(name): ${CALLERID(name)}) exten => _76XX,n,AGI(callerid-test.agi) exten => _76XX,n,NoOp(Post-AGI CallerID(num): ${CALLERID(num)}) exten => _76XX,n,NoOp(Post-AGI CallerID(name): ${CALLERID(name)}) exten => _76XX,n,Dial(IAX2/rpc-pbx-mol-01:rpc-pbx-mol-01@rpc-pbx-urb-01.royalpublishing.com/${EXTEN}|1000|t) exten => _76XX,n,Hangup ; Galesburg exten => _73XX,1,NoOp(Pre-AGI CallerID(num): ${CALLERID(num)}) exten => _73XX,n,NoOp(Pre-AGI CallerID(name): ${CALLERID(name)}) exten => _73XX,n,AGI(callerid-test.agi) exten => _73XX,n,NoOp(Post-AGI CallerID(num): ${CALLERID(num)}) exten => _73XX,n,NoOp(Post-AGI CallerID(name): ${CALLERID(name)}) exten => _73XX,n,Dial(IAX2/rpc-pbx-mol-01:rpc-pbx-mol-01@rpc-pbx-glb-01.royalpublishing.com/${EXTEN}|1000|t) exten => _73XX,n,Hangup ; Peru exten => _72XX,1,NoOp(Pre-AGI CallerID(num): ${CALLERID(num)}) exten => _72XX,n,NoOp(Pre-AGI CallerID(name): ${CALLERID(name)}) exten => _72XX,n,AGI(callerid-test.agi) exten => _72XX,n,NoOp(Post-AGI CallerID(num): ${CALLERID(num)}) exten => _72XX,n,NoOp(Post-AGI CallerID(name): ${CALLERID(name)}) exten => _72XX,n,Dial(IAX2/rpc-pbx-mol-01:rpc-pbx-mol-01@rpc-pbx-per-01.royalpublishing.com/${EXTEN}|1000|t) exten => _72XX,n,Hangup ; Peoria - Analog / ZAP exten => _71XX,1,NoOp(Pre-AGI CallerID(num): ${CALLERID(num)}) exten => _71XX,n,NoOp(Pre-AGI CallerID(name): ${CALLERID(name)}) exten => _71XX,n,AGI(callerid-test.agi) exten => _71XX,n,NoOp(Post-AGI CallerID(num): ${CALLERID(num)}) exten => _71XX,n,NoOp(Post-AGI CallerID(name): ${CALLERID(name)}) exten => _71XX,n,Dial(IAX2/rpc-pbx-mol-01:rpc-pbx-mol-01@rpc-pbx-peo-02.royalpublishing.com/${EXTEN}|1000|t) exten => _71XX,n,Hangup ; Peoria - SIP / IP exten => _70XX,1,NoOp(Pre-AGI CallerID(num): ${CALLERID(num)}) exten => _70XX,n,NoOp(Pre-AGI CallerID(name): ${CALLERID(name)}) exten => _70XX,n,AGI(callerid-test.agi) exten => _70XX,n,NoOp(Post-AGI CallerID(num): ${CALLERID(num)}) exten => _70XX,n,NoOp(Post-AGI CallerID(name): ${CALLERID(name)}) exten => _70XX,n,Dial(IAX2/rpc-pbx-mol-01:rpc-pbx-mol-01@rpc-pbx-peo-02.royalpublishing.com/${EXTEN}|1000|t) exten => _70XX,n,Hangup [localextensions] ; Explicitly match SIP extensions first ; Play with the caller ID exten => 7596,1,NoOp(Pre-AGI CallerID(num): ${CALLERID(num)}) exten => 7596,n,NoOp(Pre-AGI CallerID(name): ${CALLERID(name)}) exten => 7596,n,AGI(callerid-test.agi) exten => 7596,n,NoOp(Post-AGI CallerID(num): ${CALLERID(num)}) exten => 7596,n,NoOp(Post-AGI CallerID(name): ${CALLERID(name)}) ; Dial exten => 7596,n,Macro(stdexten|${EXTEN}|SIP/${EXTEN}) exten => 7596,n,Hangup exten => _75XX,1,NoOp(Finding channel for local exten ${EXTEN}) exten => _75XX,n,Set(channel=$[ ${EXTEN} - 7475 ]) ; Play with the caller ID exten => _75XX,n,NoOp(Pre-AGI CallerID(num): ${CALLERID(num)}) exten => _75XX,n,NoOp(Pre-AGI CallerID(name): ${CALLERID(name)}) exten => _75XX,n,AGI(callerid-test.agi) exten => _75XX,n,NoOp(Post-AGI CallerID(num): ${CALLERID(num)}) exten => _75XX,n,NoOp(Post-AGI CallerID(name): ${CALLERID(name)}) exten => _75XX,n,NoOp(Calling ${EXTEN} on channel Zap/${channel}) ; Dial exten => _75XX,n,Macro(stdexten|${EXTEN}|Zap/${channel}) exten => _75XX,n,Hangup [macro-monitor] ; ARG1 = EXTEN exten => s,1,NoOp(Monitor macro initiated via exten ${ARG1}) exten => s,n,Set(channel=$[ ${ARG1} - 7499 ]) exten => s,n,NoOp(Starting monitor on channel ${channel}) exten => s,n,ZapBarge(Zap/${channel}) exten => s,n,Hangup [monitor] exten => _8600*,1,Authenticate(8675309) exten => _8600*,n,ChanSpy(SIP) exten => _8600*,n,Hangup exten => _75XX*,1,Authenticate(8675309) exten => _75XX*,n,Macro(monitor|${EXTEN:0:4}) exten => _75XX*,n,Hangup exten => _075XX,1,Authenticate(8675309) exten => _075XX,n,Macro(monitor|${EXTEN:1:4}) exten => _075XX,n,Hangup [read-test] exten => s,1,Read(digits||7) exten => s,n,NoOp(!!! DTMF DETECTED: ${digits}) exten => s,n,SayDigits(${digits}) exten => h,1,hangup() [presence] exten => 7599,hint,SIP/7599 exten => 7598,hint,SIP/7598 exten => 7597,hint,SIP/7597 exten => 7596,hint,SIP/7596 exten => 7299,hint,SIP/7299@rpc-pbx-per-01 exten => 7298,hint,SIP/7298@rpc-pbx-per-01 exten => 7297,hint,SIP/7297@rpc-pbx-per-01 exten => 7296,hint,SIP/7296@rpc-pbx-per-01 exten => 7699,hint,SIP/7699@rpc-pbx-urb-01 exten => 7698,hint,SIP/7698@rpc-pbx-urb-01 exten => 7697,hint,SIP/7697@rpc-pbx-urb-01 exten => 7696,hint,SIP/7696@rpc-pbx-urb-01 exten => 7799,hint,SIP/7799@rpc-pbx-blm-01 exten => 7798,hint,SIP/7798@rpc-pbx-blm-01 exten => 7797,hint,SIP/7797@rpc-pbx-blm-01 exten => 7796,hint,SIP/7796@rpc-pbx-blm-01 [applications] exten => 8500,1,VoicemailMain(7596) [receptionist] exten => s,1,Answer exten => s,n,Background(tyfc) exten => s,n,WaitExten(5) exten => s,n,Goto(receptionist|s|2) exten => s,n,Hangup ; 7520 => back office, 7523 => cordless exten => 1,1,Dial(SIP/7596&ZAP/24&ZAP/21|15|tT) exten => 1,n,Voicemail(u7596) exten => 1,n,Hangup exten => t,1,Playback(vm-goodbye) exten => t,n,Hangup exten => i,1,Playback(invalid) exten => i,n,Goto(receptionist|s|2) [localtoll] ; Best place as any to include 911 support exten => 911,1,NoOp(!!! EMERGENCY 911 CALL !!!) exten => 911,n,Macro(call911) exten => 911,n,NoOp(!!! EMERGENCY 911 CALL ENDED !!!) ; Begin processing local call 11 digit, AAAA-NXX-XXXX exten => _7XXX7NXXXXXX,1,NoOp(Processing local call dialed as ${EXTEN}) ; Capture the accountcode exten => _7XXX7NXXXXXX,n,Set(accountcode=${EXTEN:${PGCODE}}) exten => _7XXX7NXXXXXX,n,NoOp(Account code extracted as ${accountcode}) ; Get the number to be dialed (length of account code) exten => _7XXX7NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}}) exten => _7XXX7NXXXXXX,n,NoOp(Local number extracted as ${mynum}) ; Play with the caller ID exten => _7XXX7NXXXXXX,n,NoOp(Pre-AGI CallerID(num): ${CALLERID(num)}) exten => _7XXX7NXXXXXX,n,NoOp(Pre-AGI CallerID(name): ${CALLERID(name)}) exten => _7XXX7NXXXXXX,n,AGI(callerid-test.agi) exten => _7XXX7NXXXXXX,n,NoOp(Post-AGI CallerID(num): ${CALLERID(num)}) exten => _7XXX7NXXXXXX,n,NoOp(Post-AGI CallerID(name): ${CALLERID(name)}) ; Dial exten => _7XXX7NXXXXXX,n,NoOp(Dialing local call) exten => _7XXX7NXXXXXX,n,Macro(localdial|${accountcode}|${mynum}) exten => _7XXX7NXXXXXX,n,NoOp(Local call to ${mynum} ended) ; Regular-dialed call? ; exten => _NXXXXXX,1,NoOp(Dialing local call to ${EXTEN}) ; ; Play with the caller ID ; exten => _NXXXXXX,n,NoOp(Pre-AGI CallerID(num): ${CALLERID(num)}) ; exten => _NXXXXXX,n,NoOp(Pre-AGI CallerID(name): ${CALLERID(name)}) ; exten => _NXXXXXX,n,AGI(callerid-test.agi) ; exten => _NXXXXXX,n,NoOp(Post-AGI CallerID(num): ${CALLERID(num)}) ; exten => _NXXXXXX,n,NoOp(Post-AGI CallerID(name): ${CALLERID(name)}) ; exten => _NXXXXXX,n,Macro(lddial|9999|309${EXTEN}) ; exten => _NXXXXXX,n,NoOp(Local call to ${EXTEN} ended) [macro-localdial] ; Not using this macro anymore, don't want to use local ; trunks for outbound calls at all ; BP - 8.8.2007 ; $ARG1 = Accountcode ; $ARG2 = Number exten => s,1,Set(CDR(accountcode)=${ARG1}) ; See if this is the problem child causing outbound calls to have to be dialed twice ; BP 7.31.2007 ;exten => s,n,Dial(${LOCALTRUNK}|${ARG2}|100|tRP) ; Replace above with this exten => s,n,Dial(${LOCALTRUNK}/${ARG2}) exten => s,n,Hangup [ldtoll] ; Begin processing LD call 15 digit, AAAA-NPA-NXX-XXXX exten => _7XXX7NXXNXXXXXX,1,NoOp(Processing LD call dialed as ${EXTEN}) ; Capture the accountcode exten => _7XXX7NXXNXXXXXX,n,Set(accountcode=${EXTEN:0:${PGCODE}}) exten => _7XXX7NXXNXXXXXX,n,NoOp(Account code extracted as ${accountcode}) ; Get the number to be dialed (length of account code) exten => _7XXX7NXXNXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}}) exten => _7XXX7NXXNXXXXXX,n,NoOp(LD number extracted as ${mynum}) ; Play with the caller ID exten => _7XXX7NXXNXXXXXX,n,NoOp(Pre-AGI CallerID(num): ${CALLERID(num)}) exten => _7XXX7NXXNXXXXXX,n,NoOp(Pre-AGI CallerID(name): ${CALLERID(name)}) exten => _7XXX7NXXNXXXXXX,n,AGI(callerid-test.agi) exten => _7XXX7NXXNXXXXXX,n,NoOp(Post-AGI CallerID(num): ${CALLERID(num)}) exten => _7XXX7NXXNXXXXXX,n,NoOp(Post-AGI CallerID(name): ${CALLERID(name)}) ; Dial exten => _7XXX7NXXNXXXXXX,n,NoOp(Dialing LD call) exten => _7XXX7NXXNXXXXXX,n,Macro(lddial|${accountcode}|${mynum}) exten => _7XXX7NXXNXXXXXX,n,NoOp(LD call to ${mynum} ended) exten => _7XXX7NXXNXXXXXX,n,Hangup ; Begin processing LD call 16 digit, AAAA-1-NPA-NXX-XXXX exten => _7XXX71NXXNXXXXXX,1,NoOp(Processing LD call dialed as ${EXTEN}) ; Capture the accountcode and assign it to CDR exten => _7XXX71NXXNXXXXXX,n,Set(accountcode=${EXTEN:0:${PGCODE}}) exten => _7XXX71NXXNXXXXXX,n,NoOp(Account code extracted as ${accountcode}) ; Get the number to be dialed (length of accountcode + 1) exten => _7XXX71NXXNXXXXXX,n,Set(mynum=${EXTEN:$[ ${PGCODE} + 1 ]}) exten => _7XXX71NXXNXXXXXX,n,NoOp(LD number extracted as ${mynum}) ; Play with the caller ID exten => _7XXX71NXXNXXXXXX,n,NoOp(Pre-AGI CallerID(num): ${CALLERID(num)}) exten => _7XXX71NXXNXXXXXX,n,NoOp(Pre-AGI CallerID(name): ${CALLERID(name)}) exten => _7XXX71NXXNXXXXXX,n,AGI(callerid-test.agi) exten => _7XXX71NXXNXXXXXX,n,NoOp(Post-AGI CallerID(num): ${CALLERID(num)}) exten => _7XXX71NXXNXXXXXX,n,NoOp(Post-AGI CallerID(name): ${CALLERID(name)}) ; Dial exten => _7XXX71NXXNXXXXXX,n,NoOp(Dialing LD call) exten => _7XXX71NXXNXXXXXX,n,Macro(lddial|${accountcode}|${mynum}) exten => _7XXX71NXXNXXXXXX,n,NoOp(LD call to ${mynum} ended) exten => _7XXX71NXXNXXXXXX,n,Hangup ; Begin processing LD call 11 digit, 1-NPA-NXX-XXXX exten => _1NXXNXXXXXX,1,NoOp(Processing LD call dialed as ${EXTEN}) exten => _1NXXNXXXXXX,n,Set(CDR(accountcode)=9999) ; Play with the caller ID exten => _1NXXNXXXXXX,n,NoOp(Pre-AGI CallerID(num): ${CALLERID(num)}) exten => _1NXXNXXXXXX,n,NoOp(Pre-AGI CallerID(name): ${CALLERID(name)}) exten => _1NXXNXXXXXX,n,AGI(callerid-test.agi) exten => _1NXXNXXXXXX,n,NoOp(Post-AGI CallerID(num): ${CALLERID(num)}) exten => _1NXXNXXXXXX,n,NoOp(Post-AGI CallerID(name): ${CALLERID(name)}) ; Dial exten => _1NXXNXXXXXX,n,Macro(lddial|${CDR(accountcode)}|${EXTEN:1}) exten => _1NXXNXXXXXX,n,Hangup ; Begin processing LD call 10 digit, NPA-NXX-XXXX ; exten => _NXXNXXXXXX,1,NoOp(Processing LD call dialed as ${EXTEN}) ; exten => _NXXNXXXXXX,n,Set(CDR(accountcode)=9999) ; ; Play with the caller ID ; exten => _NXXNXXXXXX,n,NoOp(Pre-AGI CallerID(num): ${CALLERID(num)}) ; exten => _NXXNXXXXXX,n,NoOp(Pre-AGI CallerID(name): ${CALLERID(name)}) ; exten => _NXXNXXXXXX,n,AGI(callerid-test.agi) ; exten => _NXXNXXXXXX,n,NoOp(Post-AGI CallerID(num): ${CALLERID(num)}) ; exten => _NXXNXXXXXX,n,NoOp(Post-AGI CallerID(name): ${CALLERID(name)}) ; ; Dial ; exten => _NXXNXXXXXX,n,Macro(lddial|${CDR(accountcode)}|${EXTEN}) ; exten => _NXXNXXXXXX,n,Hangup [macro-lddial] ; $ARG1 = account code ; $ARG2 = number exten => s,1,Set(CDR(accountcode)=${ARG1}) exten => s,n,Dial(${LDTRUNK}/${ARG2}) exten => s,n,Dial(${FONELDTRUNK}/${ARG2}) exten => s,n,Dial(${FTWOLDTRUNK}/${ARG2}) exten => s,n,Hangup [macro-tfdial] ; $ARG1 = account code ; $ARG2 = number exten => s,1,Set(CDR(accountcode)=${ARG1}) ; See if this is the problem child causing outbound calls to have ; to be dialed twice ; BP 7.31.2007 ;exten => s,n,Dial(${LOCALTRUNK}|${ARG2}|100|tRP) ; Replace with this exten => s,n,Dial(${LOCALTRUNK}/${ARG2}) exten => s,n,Hangup [tollfree] ; 1-800-NXX-XXXX / 800-NXX-XXXX exten => _7XXX7800NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}}) exten => _7XXX7800NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}}) exten => _7XXX7800NXXXXXX,n,Macro(tfdial|${accountcode}|1${mynum}) exten => _7XXX71800NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}}) exten => _7XXX71800NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}}) exten => _7XXX71800NXXXXXX,n,Macro(tfdial|${accountcode}|${mynum}) exten => _800NXXXXXX,1,Set(accountcode=9999) exten => _800NXXXXXX,n,Set(mynum=${EXTEN}) exten => _800NXXXXXX,n,Macro(tfdial|${accountcode}|1${mynum}) exten => _1800NXXXXXX,1,Set(accountcode=9999) exten => _1800NXXXXXX,n,Set(mynum=${EXTEN}) exten => _1800NXXXXXX,n,Macro(tfdial|${accountcode}|${mynum}) ; 1-855-NXX-XXXX / 855-NXX-XXXX exten => _7XXX7855NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}}) exten => _7XXX7855NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}}) exten => _7XXX7855NXXXXXX,n,Macro(tfdial|${accountcode}|1${mynum}) exten => _7XXX71855NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}}) exten => _7XXX71855NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}}) exten => _7XXX71855NXXXXXX,n,Macro(tfdial|${accountcode}|${mynum}) exten => _855NXXXXXX,1,Set(accountcode=9999) exten => _855NXXXXXX,n,Set(mynum=${EXTEN}) exten => _855NXXXXXX,n,Macro(tfdial|${accountcode}|1${mynum}) exten => _1855NXXXXXX,1,Set(accountcode=9999) exten => _1855NXXXXXX,n,Set(mynum=${EXTEN}) exten => _1855NXXXXXX,n,Macro(tfdial|${accountcode}|${mynum}) ; 1-866-NXX-XXXX / 866-NXX-XXXX exten => _7XXX7866NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}}) exten => _7XXX7866NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}}) exten => _7XXX7866NXXXXXX,n,Macro(tfdial|${accountcode}|1${mynum}) exten => _7XXX71866NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}}) exten => _7XXX71866NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}}) exten => _7XXX71866NXXXXXX,n,Macro(tfdial|${accountcode}|${mynum}) exten => _866NXXXXXX,1,Set(accountcode=9999) exten => _866NXXXXXX,n,Set(mynum=${EXTEN}) exten => _866NXXXXXX,n,Macro(tfdial|${accountcode}|1${mynum}) exten => _1866NXXXXXX,1,Set(accountcode=9999) exten => _1866NXXXXXX,n,Set(mynum=${EXTEN}) exten => _1866NXXXXXX,n,Macro(tfdial|${accountcode}|${mynum}) ; 1-877-NXX-XXXX / 877-NXX-XXXX exten => _7XXX7877NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}}) exten => _7XXX7877NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}}) exten => _7XXX7877NXXXXXX,n,Macro(tfdial|${accountcode}|1${mynum}) exten => _7XXX71877NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}}) exten => _7XXX71877NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}}) exten => _7XXX71877NXXXXXX,n,Macro(tfdial|${accountcode}|${mynum}) exten => _877NXXXXXX,1,Set(accountcode=9999) exten => _877NXXXXXX,n,Set(mynum=${EXTEN}) exten => _877NXXXXXX,n,Macro(tfdial|${accountcode}|1${mynum}) exten => _1877NXXXXXX,1,Set(accountcode=9999) exten => _1877NXXXXXX,n,Set(mynum=${EXTEN}) exten => _1877NXXXXXX,n,Macro(tfdial|${accountcode}|${mynum}) ; 1-888-NXX-XXXX / 888-NXX-XXXX exten => _7XXX7888NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}}) exten => _7XXX7888NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}}) exten => _7XXX7888NXXXXXX,n,Macro(tfdial|${accountcode}|1${mynum}) exten => _7XXX71888NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}}) exten => _7XXX71888NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}}) exten => _7XXX71888NXXXXXX,n,Macro(tfdial|${accountcode}|${mynum}) exten => _888NXXXXXX,1,Set(accountcode=9999) exten => _888NXXXXXX,n,Set(mynum=${EXTEN}) exten => _888NXXXXXX,n,Macro(tfdial|${accountcode}|1${mynum}) exten => _1888NXXXXXX,1,Set(accountcode=9999) exten => _1888NXXXXXX,n,Set(mynum=${EXTEN}) exten => _1888NXXXXXX,n,Macro(tfdial|${accountcode}|${mynum}) [macro-call911] exten => s,1,Monitor(wav|/var/spool/asterisk/monitor/911/Caller-${CALLERID(num)}-Called-911-On-${TIMESTAMP}.wav|b) exten => s,n,SoftHangup(${EMERTRUNK}) exten => s,n,Dial(${EMERTRUNK}/911) exten => s,n,Hangup [test] exten => _X.,1,NoOp(${EXTEN}) exten => _X.,n,Hangup