Public feed #601876

Someone

public text v1 · immutable
Raw Edit
·published 2007-07-03 19:37 UTC
rendered paste body
[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