exten => o,1,NoOp,-= Operator/Emergency =-
exten => o,n,GotoIf($["${DB_EXISTS(${dbroot}/settings/ahop/1)}" = "1"]?ah) ; Day mode
exten => o,n(dm),Dial(${DB(${dbroot}/settings/ringgroup-day)},20)
exten => o,n,Voicemail(u${DB(${dbroot}/settings/operatorvm)}@${DB(${dbroot}/settings/companynumber)})
exten => o,n,Goto(end)
exten => o,n(ah),NoOp,-= Handling with night operators =-
exten => o,n,Set(AHOP1DT=12) ;delay before dialing 2nd night op (was 24)
"1"],Dial,Local/${DB(${dbroot}/settings/ahop/1)}@mtu-trusted/n,${AHOP1DT},${DEFAULTDIALARGS})
exten => o,n,Set(DEFAULTDIALTIME=12)
exten => o,n,ExecIf(${DB_EXISTS(${dbroot}/settings/ahop/1)},Dial,Local/${DB(${dbroot}/settings/ahop/1)}@mtu-trusted/n,${AHOP1DT},${DEFAULTDIALARGS})
exten => o,n,ExecIf(${DB_EXISTS(${dbroot}/settings/ahop/2)},Dial,Local/${DB(${dbroot}/settings/ahop/2)}@mtu-trusted/n,,${DEFAULTDIALARGS})
exten => o,n,Voicemail(u${DB(${dbroot}/settings/operatorvm)}@${DB(${dbroot}/settings/companynumber)})
exten => o,n,Goto(end)
exten => o,n(end),Wait(1) ; Wait to see if user is going to hang up so we don't loop rig
exten => o,n,Goto(s,start)
[mtu-trusted]
include => answermode
include => app-callforward
include => mtu-nightop
include => mtu-exts
include => switch-services
include => switch-tollfree
include => switch-local
include => switch-ld
include => switch-int
[mtu-exts]
;===============================
; Capture three digit extensions
; This is where we process
exten => _ZXX,1,GotoIf($["${dbroot}" != ""]?handle)
exten => _ZXX,n,NoOp,-= dbroot not defined but required: DIALEDPEERNUMBER: ${DIALEDPEERNUMBER} DIALEDPEERNAME: ${DIALEDPEERNAME} BLINDTRANSFER: ${BLINDTRANSFER} =-
exten => _ZXX,n,DumpChan
exten => _ZXX,n,ExecIf($["${LEN(${DIALEDPEERNUMBER})}" = "5"],Set,dbroot=mtu/${DIALEDPEERNUMBER:0:2})
exten => _ZXX,n,GotoIf($["${dbroot}" != ""]?handle)
exten => _ZXX,n,ExecIf($["${DIALEDPEERNAME:0:3}" = "SIP"],Set,dbroot=mtu/${DIALEDPEERNUMBER:0:2})
exten => _ZXX,n,GotoIf($["${dbroot}" != ""]?handle)
exten => _ZXX,n,NoOp,-= dbroot still not defined but required =-
exten => _ZXX,n,Macro(admin-notify,email,passthrough,dbroot-notdefined-and-not-determined-at-${EXTEN}-DIALEDPEERNUMBER-${DIALEDPEERNUMBER})
exten => _ZXX,n,Set(TIMEOUT(absolute)=10)
exten => _ZXX,n,Congestion
exten => _ZXX,n(handle),Goto(${DB(${dbroot}/settings/companynumber)}${EXTEN},1)
;======================================
; Place company extension mappings here
exten => _21ZXX,1,Macro(mtu-ext-v3,${EXTEN:0:2},${EXTEN:2})
exten => _22ZXX,1,Macro(mtu-ext-v3,${EXTEN:0:2},${EXTEN:2})
exten => _23ZXX,1,Macro(mtu-ext-v3,${EXTEN:0:2},${EXTEN:2})
exten => _24ZXX,1,Macro(mtu-ext-v3,${EXTEN:0:2},${EXTEN:2})
exten => _26ZXX,1,Macro(mtu-ext-v3,${EXTEN:0:2},${EXTEN:2})
exten => _28ZXX,1,Macro(mtu-ext-v3,${EXTEN:0:2},${EXTEN:2})
exten => _30ZXX,1,Macro(mtu-ext-v3,${EXTEN:0:2},${EXTEN:2})
exten => _31ZXX,1,Macro(mtu-ext-v3,${EXTEN:0:2},${EXTEN:2})
;
; End company extension mappings
;===============================
[macro-mtu-ext-v3]
; Version 3 removed the daqe-lookup AGI script and now relies on the local
; asterisk database to be up to date for extension lookups
;
; ${ARG1} = Company number
; ${ARG2} = Extension minus company number
exten => s,1,ExecIf($["system/debug" = "1"],DumpChan)
exten => s,n,Set(COMPANY=${ARG1})
exten => s,n,Set(EXTENSION=${ARG2})
; Just in case!!!!!
exten => s,n,ExecIf($["${dbroot}" = ""],Set,__dbroot=mtu/${COMPANY})
; check for mtu/${COMPANY}/cf/${EXTENSION} forward
; If an entry does not exist at mtu/company/cf/exten, jump to the daqe lookup.
; This will provide a mechanism for *72/*73 to override DAQE
; If an entry does exist, set a variable and then jump to number processing
exten => s,n(check-cf),GotoIf($["${DB_EXISTS(mtu/${COMPANY}/cf/${EXTENSION})}" != "1"]?do-daqe-lookup)
exten => s,n,Set(MTU-FORWARD-NUM=${DB(mtu/${COMPANY}/cf/${EXTENSION})})
exten => s,n,Goto(processnumber)
; check daqe for forwarding information
; ask daqe for a number
; set a variable and then jump to number processing
exten => s,n(do-daqe-lookup),GotoIf($["${DB_EXISTS(DAQE-CACHE/${COMPANY}/agentphone/${EXTENSION})}" != "1"]?s-DS-NOANSWER,1)
exten => s,n,ExecIf($["${calltype}" = "incoming"],Playback,pls-wait-connect-call)
exten => s,n,Set(DAQE-NUMTODIAL=${DB(DAQE-CACHE/${COMPANY}/agentphone/${EXTENSION})})
exten => s,n,Set(DAQE-NUMTODIALLENGTH=${LEN(${DAQE-NUMTODIAL})})
exten => s,n,NoOp,${DAQE-NUMTODIALLENGTH} ${DAQE-NUMTODIAL}
exten => s,n,Set(MTU-FORWARD-NUM=${DAQE-NUMTODIAL})
exten => s,n,Goto(processnumber)
; record the length of the number were going to
exten => s,n(processnumber),Goto(s-len-${LEN(${MTU-FORWARD-NUM})},1)
; process forwards to pstn
exten => s-len-11,1,ExecIf($["${calltype}" = "incoming"],Playback,connecting)
exten => s-len-11,n,Goto(mtu-trusted,${MTU-FORWARD-NUM:1},1)
exten => s-len-10,1,ExecIf($["${calltype}" = "incoming"],Playback,connecting)
exten => s-len-10,n,Goto(mtu-trusted,${MTU-FORWARD-NUM},1)
exten => s-len-7,1,ExecIf($["${calltype}" = "incoming"],Playback,connecting)
exten => s-len-7,n,Goto(mtu-trusted,${DB(mtu/${COMPANY}/settings/defaultareacode)}${MTU-FORWARD-NUM},1)
; process forward to a 5 digit extension
; if the forward number is us, we're there and we can then figure out what devices to dial
; if the forward number is someone else, we forward to that extension
exten => s-len-5,1,GotoIf($["${MTU-FORWARD-NUM}" = "${COMPANY}${EXTENSION}"]?s-call-device|1)
exten => s-len-5,n,Goto(mtu-trusted,${MTU-FORWARD-NUM},1)
; process forward to a 3 digit extension
; all we're doing here is tacking on the current company number and then forwarding the 5 digit processor
exten => s-len-3,1,Goto(s-len-5,${COMPANY}${MTU-FORWARD-NUM},1)
; handle all other length numbers
; first check to see if we can leave them voicemail
; if we returned from voicemail with an error, goto the calling context invalid handler
exten => _s-len-_,1,Voicemail(u${EXTENSION}@${COMPANY})
exten => _s-len-_,n,GotoIf($[ ${VMSTATUS} = FAILED ]?${MACRO_CONTEXT}|i|1)
; lookup devices to dial and then dial
exten => s-call-device,1,Set(DEVICE=${DB(mtu/${COMPANY}/devices/${EXTENSION})})
exten => s-call-device,n,ExecIf(${DB_EXISTS(mtu/${COMPANY}/altdevs/${ARG2})},Set,DEVICE=${DEVICE}&${DB(mtu/${COMPANY}/altdevs/${ARG2})})
exten => s-call-device,n,GotoIf($["${DEVICE}" = ""]?s-DS-NOANSWER,1)
exten => s-call-device,n,NoOp,-= Macro mtu-ext: Using ${DEVICE} to call ${EXTENSION}@${COMPANY} =-
exten => s-call-device,n,ExecIf($["${calltype}" = "incoming"],Playback,connecting)
exten => s-call-device,n,Dial(${DEVICE},${DEFAULTDIALTIME},${DEFAULTDIALARGS})
exten => s-call-device,n,Goto(s-DS-${DIALSTATUS},1)
; handle dialstatus
exten => s-DS-ANSWER,1,Hangup
exten => s-DS-BUSY,1,Voicemail(b${EXTENSION}@${COMPANY}) ; If busy, send to voicemail w/ busy announce
exten => s-DS-BUSY,n,GotoIf($[$["${DIALSTATUS}" = "CHANUNAVAIL"] & $["${VMSTATUS}" = "FAILED"]]?s-INVALIDEXTEN|1)
exten => s-DS-BUSY,n,ExecIf($["${calltype}" = "incoming"],Goto,${DB(${dbroot}/settings/defaultreturncontext)}) ; If they press #, return to start
exten => s-DS-CANCEL,1,Hangup
exten => s-DS-CONGESTION,1,Goto(s-DS-NOANSWER,1)
exten => s-DS-CHANUNAVAIL,1,Goto(s-DS-NOANSWER,1)
exten => s-DS-DONTCALL,1,Goto(s-DS-NOANSWER,1)
exten => s-DS-NOANSWER,1,Voicemail(u${EXTENSION}@${COMPANY}) ; If unavailable, send to voicemail w/ unavail announce
exten => s-DS-NOANSWER,n,GotoIf($[$["${DIALSTATUS}" = "CHANUNAVAIL"] & $["${VMSTATUS}" = "FAILED"]]?s-INVALIDEXTEN|1)
exten => s-DS-NOANSWER,n,ExecIf($["${calltype}" = "incoming"],Goto,${DB(${dbroot}/settings/defaultreturncontext)}) ; If they press #, return to start
exten => s-DS-TORTURE,1,Goto(s-DS-NOANSWER,1)
exten => s-INVALIDEXTEN,1,NoOp,We must be calling an invalid extension ${EXTENSION}@${COMPANY}
exten => s-INVALIDEXTEN,n,Playback(pbx-invalid)
exten => s-INVALIDEXTEN,n,Wait(1)
exten => s-INVALIDEXTEN,n,GotoIf($["${calltype}" = "incoming"]?${DB(${dbroot}/settings/companynumber)}-incoming|s|start)
exten => s-INVALIDEXTEN,n,Hangup
; handle pressing * to go to VoicemailMain
exten => a,1,VoicemailMain(${EXTENSION}@${COMPANY})
[switch-ld]
exten => _XXXNXXXXXX,1,Goto(1${EXTEN},1)
exten => _1XXXNXXXXXX,1,NoOp
exten => _1XXXNXXXXXX,n,Macro(mungevars,outgoing)
exten => _1XXXNXXXXXX,n,Dial(${OUTBOUNDTRUNK}/${EXTEN},,tT)
exten => _1XXXNXXXXXX,n,NoOp,Dialstatus: ${DIALSTATUS}
exten => _1XXXNXXXXXX,n,Wait(1)
exten => _1XXXNXXXXXX,n,Set(TIMEOUT(absolute)=10)
exten => _1XXXNXXXXXX,n,Busy
exten => _1XXXNXXXXXX,n,Hangup
/mtu/26/altdevs/100 : SIP/26150
/mtu/26/altdevs/101 : SIP/26151
/mtu/26/altdevs/102 : SIP/26152
/mtu/26/altdevs/105 : SIP/26155
/mtu/26/altdevs/106 : SIP/26156
/mtu/26/devices/100 : SIP/26100
/mtu/26/devices/101 : SIP/26101
/mtu/26/devices/102 : SIP/26102
/mtu/26/devices/103 : SIP/26103
/mtu/26/devices/104 : SIP/26104
/mtu/26/devices/105 : SIP/26105
/mtu/26/devices/106 : SIP/26106
/mtu/26/devices/107 : SIP/26107
/mtu/26/devices/110 : SIP/26110
/mtu/26/devices/200 : IAX2/nothing
/mtu/26/settings//rnggroup-day : SIP/26100&SIP/26101&SIP/26102&SIP/26103&SIP/26104&SIP/26105&SIP/26106&SIP/26110&SIP/26150&SIP/26156&SIP/26151&SIP/26155&SIP/26152
/mtu/26/settings/ah : 1
/mtu/26/settings/am : 1
/mtu/26/settings/companyname : Teen Soulutions
/mtu/26/settings/companynumber : 26
/mtu/26/settings/defaultareacode : 435
/mtu/26/settings/defaultcidname : National Contract
/mtu/26/settings/defaultcidnumber : 8004295922
/mtu/26/settings/defaultreturncontext : 26-incoming,s,start
/mtu/26/settings/operatorvm : 104
/mtu/26/settings/ringgroup-day : SIP/26100&SIP/26101&SIP/26102&SIP/26103&SIP/26104&SIP/26105&SIP/26106&SIP/26110&SIP/26150&SIP/26156&SIP/26151&SIP/26155&SIP/26152