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