rendered paste body[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