All pastes #902743 Raw Edit

Miscellany

public text v1 · immutable
·published 2008-02-13 19:02 UTC
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