Public feed
#601876
[general]
writeprotect=yes
autofallthrough=yes
clearglobalvars=yes
priorityjumping=no
[globals]
; TDM04B (4) POTS is Zap/g0
; Channel bank is Zap/g1
; Outbound T1 is Zap/g2
; Emergency trunk is Zap/3
EMERTRUNK=Zap/3
LOCALTRUNK=Zap/g0
CB=Zap/g1
LDTRUNK=Zap/g2
; Program code length
PGCODE=4
[from-internal]
include => applications
include => monitor
include => localextensions
include => tollfree
include => localtoll
include => ldtoll
include => remoteextensions
[from-pstn]
include => receptionist
[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)
exten => s,2,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Voicemail(u${ARG1})
exten => s-NOANSWER,n,Playback(vm-goodbye)
exten => s-NOANSWER,n,Hangup
exten => s-BUSY,1,Voicemail(b${ARG1})
exten => s-BUSY,n,Playback(vm-goodbye)
exten => s-BUSY,n,Hangup
exten => _s-.,1,Goto(s-NOANSWER,1)
exten => a,1,VoicemailMain(${ARG1})
exten => a,n,Playback(vm-goodbye)
exten => a,n,Hangup
[remoteextensions]
; FIXME
;switch => IAX2/rpcpbx005:rpcpbx005@rpcpbx001/default
exten => _5XX,1,Dial(IAX2/rpcpbx005:rpcpbx005@rpcpbx001/${EXTEN}|1000|t)
exten => _2XX,1,Dial(IAX2/rpcpbx005:rpcpbx005@rpcpbx001/${EXTEN}|1000|t)
exten => _3XX,1,Dial(IAX2/rpcpbx005:rpcpbx005@rpcpbx001/${EXTEN}|1000|t)
[localextensions]
exten => _7XX,1,NoOp(Finding channel for local exten ${EXTEN})
exten => _7XX,n,Set(channel=$[ ${EXTEN} - 695 ])
exten => _7XX,n,NoOp(Calling ${EXTEN} on channel Zap/${channel})
exten => _7XX,n,Macro(stdexten|${EXTEN}|Zap/${channel})
exten => _7XX,n,Hangup
[macro-monitor]
; ARG1 = EXTEN
exten => s,1,NoOp(Monitor macro initiated via exten ${ARG1})
exten => s,n,Set(channel=$[ ${ARG1} - 695 ])
exten => s,n,NoOp(Starting monitor on channel ${channel})
exten => s,n,ZapBarge(${channel})
exten => s,n,Hangup
[monitor]
exten => _*7XX,1,Macro(monitor|${EXTEN})
exten => _*7XX,n,Hangup
[applications]
exten => 8500,1,VoicemailMain(${CALLERID(num)})
[receptionist]
exten => s,1,Macro(stdexten|700|Zap/25)
[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 => _XXXXNXXXXXX,1,NoOp(Processing local call dialed as ${EXTEN})
; Capture the accountcode
exten => _XXXXNXXXXXX,n,Set(accountcode=${EXTEN:${PGCODE}})
exten => _XXXXNXXXXXX,n,NoOp(Account code extracted as ${accountcode})
; Get the number to be dialed (length of account code)
exten => _XXXXNXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}})
exten => _XXXXNXXXXXX,n,NoOp(Local number extracted as ${mynum})
; Dial
exten => _XXXXNXXXXXX,n,NoOp(Dialing local call)
exten => _XXXXNXXXXXX,n,Macro(localdial|${accountcode}|${mynum})
exten => _XXXXNXXXXXX,n,NoOp(Local call to ${mynum} ended)
[macro-localdial]
; $ARG1 = Accountcode
; $ARG2 = Number
exten => s,1,Set(CDR(accountcode)=${ARG1})
exten => s,n,Dial(${LOCALTRUNK}|${ARG2}|100|tRP)
exten => s,n,Hangup
[ldtoll]
; Begin processing LD call 14 digit, AAAA-NPA-NXX-XXXX
exten => _XXXXNXXNXXXXXX,1,NoOp(Processing LD call dialed as ${EXTEN})
; Capture the accountcode
exten => _XXXXNXXNXXXXXX,n,Set(accountcode=${EXTEN:0:${PGCODE}})
exten => _XXXXNXXNXXXXXX,n,NoOp(Account code extracted as ${accountcode})
; Get the number to be dialed (length of account code)
exten => _XXXXNXXNXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}})
exten => _XXXXNXXNXXXXXX,n,NoOp(LD number extracted as ${mynum})
; Dial
exten => _XXXXNXXNXXXXXX,n,NoOp(Dialing LD call)
exten => _XXXXNXXNXXXXXX,n,Macro(lddial|${accountcode}|${mynum})
exten => _XXXXNXXNXXXXXX,n,NoOp(LD call to ${mynum} ended)
exten => _XXXXNXXNXXXXXX,n,Hangup
; Begin processing LD call 15 digit, AAAA-1-NPA-NXX-XXXX
exten => _XXXX1NXXNXXXXXX,1,NoOp(Processing LD call dialed as ${EXTEN})
; Capture the accountcode and assign it to CDR
exten => _XXXX1NXXNXXXXXX,n,Set(accountcode=${EXTEN:0:${PGCODE}})
exten => _XXXX1NXXNXXXXXX,n,NoOp(Account code extracted as ${accountcode})
; Get the number to be dialed (length of accountcode + 1)
exten => _XXXX1NXXNXXXXXX,n,Set(mynum=${EXTEN:$[ ${PGCODE} + 1 ]})
exten => _XXXX1NXXNXXXXXX,n,NoOp(LD number extracted as ${mynum})
; Dial
exten => _XXXX1NXXNXXXXXX,n,NoOp(Dialing LD call)
exten => _XXXX1NXXNXXXXXX,n,Macro(lddial|${accountcode}|${mynum})
exten => _XXXX1NXXNXXXXXX,n,NoOp(LD call to ${mynum} ended)
exten => _XXXX1NXXNXXXXXX,n,Hangup
[macro-lddial]
; $ARG1 = account code
; $ARG2 = number
exten => s,1,Set(CDR(accountcode)=$ARG1)
exten => s,n,Dial(${LDTRUNK}|${ARG2}|100|tRP)
exten => s,n,Hangup
[macro-tfdial]
; $ARG1 = account code
; $ARG2 = number
exten => s,1,Set(CDR(accountcode)=${ARG1})
exten => s,n,Dial(${LOCALTRUNK}|${ARG2}|100|tRP)
exten => s,n,Hangup
[tollfree]
; 1-800-NXX-XXXX / 800-NXX-XXXX
exten => _XXXX800NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}})
exten => _XXXX800NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}})
exten => _XXXX800NXXXXXX,n,Macro(tfdial|${accountcode}|1${mynum})
exten => _XXXX1800NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}})
exten => _XXXX1800NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}})
exten => _XXXX1800NXXXXXX,n,Macro(tfdial|${accountcode}|${mynum})
; 1-855-NXX-XXXX / 855-NXX-XXXX
exten => _XXXX855NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}})
exten => _XXXX855NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}})
exten => _XXXX855NXXXXXX,n,Macro(tfdial|${accountcode}|1${mynum})
exten => _XXXX1855NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}})
exten => _XXXX1855NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}})
exten => _XXXX1855NXXXXXX,n,Macro(tfdial|${accountcode}|${mynum})
; 1-866-NXX-XXXX / 866-NXX-XXXX
exten => _XXXX866NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}})
exten => _XXXX866NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}})
exten => _XXXX866NXXXXXX,n,Macro(tfdial|${accountcode}|1${mynum})
exten => _XXXX1866NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}})
exten => _XXXX1866NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}})
exten => _XXXX1866NXXXXXX,n,Macro(tfdial|${accountcode}|${mynum})
; 1-877-NXX-XXXX / 877-NXX-XXXX
exten => _XXXX877NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}})
exten => _XXXX877NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}})
exten => _XXXX877NXXXXXX,n,Macro(tfdial|${accountcode}|1${mynum})
exten => _XXXX1877NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}})
exten => _XXXX1877NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}})
exten => _XXXX1877NXXXXXX,n,Macro(tfdial|${accountcode}|${mynum})
; 1-888-NXX-XXXX / 888-NXX-XXXX
exten => _XXXX888NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}})
exten => _XXXX888NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}})
exten => _XXXX888NXXXXXX,n,Macro(tfdial|${accountcode}|1${mynum})
exten => _XXXX1888NXXXXXX,1,Set(accountcode=${EXTEN:0:${PGCODE}})
exten => _XXXX1888NXXXXXX,n,Set(mynum=${EXTEN:${PGCODE}})
exten => _XXXX1888NXXXXXX,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|1000)
exten => s,n,Hangup