;--------------------------------------------------------------------------------; ; Do NOT edit this file as it is auto-generated by FreePBX. All modifications to ; ; this file must be done via the web gui. There are alternative files to make ; ; custom modifications, details at: http://freepbx.org/configuration_files ; ;--------------------------------------------------------------------------------; ; [globals] INTERCOMCODE = nointercom CALLFILENAME = "" DIAL_OPTIONS = tr TRUNK_OPTIONS = DIAL_OUT = 9 FAX = FAX_RX = system FAX_RX_EMAIL = fax@mydomain.com FAX_RX_FROM = freepbx@gmail.com INCOMING = group-all NULL = "" OPERATOR = OPERATOR_XTN = PARKNOTIFY = SIP/200 RECORDEXTEN = "" RINGTIMER = 15 DIRECTORY = last AFTER_INCOMING = IN_OVERRIDE = forcereghours REGTIME = 7:55-17:05 REGDAYS = mon-fri DIRECTORY_OPTS = DIALOUTIDS = 1 VM_PREFIX = * VM_OPTS = VM_GAIN = VM_DDTYPE = u TIMEFORMAT = kM TONEZONE = us ALLOW_SIP_ANON = yes VMX_CONTEXT = from-internal VMX_PRI = 1 VMX_TIMEDEST_CONTEXT = VMX_TIMEDEST_EXT = dovm VMX_TIMEDEST_PRI = 1 VMX_LOOPDEST_CONTEXT = VMX_LOOPDEST_EXT = dovm VMX_LOOPDEST_PRI = 1 VMX_OPTS_TIMEOUT = VMX_OPTS_LOOP = VMX_OPTS_DOVM = VMX_TIMEOUT = 2 VMX_REPEAT = 1 VMX_LOOPS = 1 TRANSFER_CONTEXT = from-internal-xfer MIXMON_FORMAT = wav MIXMON_DIR = MIXMON_POST = RECORDING_STATE = ENABLED ASTETCDIR = /etc/asterisk ASTMODDIR = /usr/lib/asterisk/modules ASTVARLIBDIR = /var/lib/asterisk ASTAGIDIR = /var/lib/asterisk/agi-bin ASTSPOOLDIR = /var/spool/asterisk ASTRUNDIR = /var/run/asterisk ASTLOGDIR = /var/log/asterisk CWINUSEBUSY = true AMPMGRUSER = admin AMPMGRPASS = adminphael AMPDBENGINE = mysql AMPDBHOST = localhost AMPDBNAME = asterisk AMPDBUSER = asteriskuser AMPDBPASS = adminphael ASTVERSION = 1.8.11.0 ASTCHANDAHDI = 1 OUT_2 = DAHDI/g0 OUTCID_2 = <2221017777> OUTMAXCHANS_2 = OUTFAIL_2 = OUTPREFIX_2 = OUTDISABLE_2 = off OUTKEEPCID_2 = off FORCEDOUTCID_2 = PREFIX_TRUNK_2 = 1 #include globals_custom.conf ;end of [globals] [macro-speeddial-lookup] include => macro-speeddial-lookup-custom exten => s,1,GotoIf($["${ARG2}"=""]]?lookupsys) exten => s,n,Set(SPEEDDIALNUMBER=) exten => s,n(lookupuser),Set(SPEEDDIALNUMBER=${DB(AMPUSER/${ARG2}/speeddials/${ARG1})}) exten => s,n,GotoIf($["${SPEEDDIALNUMBER}"=""]?lookupsys) exten => s,n,Noop(Found speeddial ${ARG1} for user ${ARG2}: ${SPEEDDIALNUMBER}) exten => s,n,Goto(end) exten => s,lookupuser+101(lookupsys),Set(SPEEDDIALNUMBER=${DB(sysspeeddials/${ARG1})}) exten => s,n,GotoIf($["${SPEEDDIALNUMBER}"=""]?failed) exten => s,n,Noop(Found system speeddial ${ARG1}: ${SPEEDDIALNUMBER}) exten => s,n,Goto(end) exten => s,lookupsys+101(failed),Noop(No system or user speeddial found) exten => s,n(end),Noop(End of Speeddial-lookup) ; end of [macro-speeddial-lookup] [app-speeddial] include => app-speeddial-custom exten => _*0.,1,Macro(user-callerid,) exten => _*0.,n,Set(SPEEDDIALLOCATION=${EXTEN:2}) exten => _*0.,n(lookup),Macro(speeddial-lookup,${SPEEDDIALLOCATION},${AMPUSER}) exten => _*0.,n,GotoIf($["${SPEEDDIALNUMBER}"=""]?failed) exten => _*0.,n,Goto(from-internal,${SPEEDDIALNUMBER},1) exten => _*0.,lookup+101(failed),Playback(speed-dial-empty) exten => _*0.,n,Congestion() exten => *75,1,Goto(app-speeddial-set,s,1) ; end of [app-speeddial] [app-speeddial-set] include => app-speeddial-set-custom exten => s,1,Macro(user-callerid,) exten => s,n(setloc),Read(newlocation,speed-enterlocation,,,,) exten => s,n(lookup),Macro(speeddial-lookup,${newlocation},${AMPUSER}) exten => s,n(lookup),GotoIf($["${SPEEDDIALNUMBER}"!=""]?conflicts) exten => s,n(setnum),Read(newnum,speed-enternumber,,,,) exten => s,n(success),Set(DB(AMPUSER/${AMPUSER}/speeddials/${newlocation})=${newnum}) exten => s,n,Playback(speed-dial) exten => s,n,SayDigits(${newlocation}) exten => s,n,Playback(is-set-to) exten => s,n,SayDigits(${newnum}) exten => s,n,Hangup exten => s,n(conflicts),Playback(speed-dial) exten => s,n,SayDigits(${newlocation}) exten => s,n,Playback(is-in-use) exten => s,n,Background(press-1&to-listen-to-it&press-2&to-enter-a-diff&location&press-3&to-change&telephone-number) exten => s,n,WaitExten(60,) exten => 1,1,Playback(speed-dial) exten => 1,n,SayDigits(${newlocation}) exten => 1,n,Playback(is-set-to) exten => 1,n,SayDigits(${SPEEDDIALNUMBER}) exten => 1,n,Goto(s,conflicts) exten => 2,1,Goto(s,setloc) exten => 3,1,Goto(s,setnum) exten => t,1,Congestion() ; end of [app-speeddial-set] [app-cf-busy-off] include => app-cf-busy-off-custom exten => *91,1,Answer exten => *91,n,Wait(1) exten => *91,n,Macro(user-callerid,) exten => *91,n,Set(fromext=${AMPUSER}) exten => *91,n,Noop(Deleting: CFB/${fromext} ${DB_DELETE(CFB/${fromext})}) exten => *91,n(hook_1),Playback(call-fwd-on-busy&de-activated) exten => *91,n,Macro(hangupcall,) exten => _*91.,1,Answer exten => _*91.,n,Wait(1) exten => _*91.,n,Set(fromext=${EXTEN:3}) exten => _*91.,n,Noop(Deleting: CFB/${fromext} ${DB_DELETE(CFB/${fromext})}) exten => _*91.,n(hook_2),Playback(call-fwd-on-busy&for&extension) exten => _*91.,n,SayDigits(${fromext}) exten => _*91.,n,Playback(cancelled) exten => _*91.,n,Macro(hangupcall,) ; end of [app-cf-busy-off] [app-cf-busy-off-any] include => app-cf-busy-off-any-custom exten => *92,1,Answer exten => *92,n,Macro(user-callerid,) exten => *92,n,Wait(1) exten => *92,n,Read(fromext,please-enter-your&extension&then-press-pound,,,,) exten => *92,n,Set(fromext=${IF($["foo${fromext}"="foo"]?${AMPUSER}:${fromext})}) exten => *92,n,Wait(1) exten => *92,n,Noop(Deleting: CFB/${fromext} ${DB_DELETE(CFB/${fromext})}) exten => *92,n(hook_1),Playback(call-fwd-on-busy&for&extension) exten => *92,n,SayDigits(${fromext}) exten => *92,n,Playback(cancelled) exten => *92,n,Macro(hangupcall,) ; end of [app-cf-busy-off-any] [app-cf-busy-on] include => app-cf-busy-on-custom exten => *90,1,Answer exten => *90,n,Wait(1) exten => *90,n,Macro(user-callerid,) exten => *90,n,Read(fromext,call-fwd-on-busy&please-enter-your&extension&then-press-pound,,,,) exten => *90,n,Set(fromext=${IF($["foo${fromext}"="foo"]?${AMPUSER}:${fromext})}) exten => *90,n,Wait(1) exten => *90,n(startread),Read(toext,ent-target-attendant&then-press-pound,,,,) exten => *90,n,GotoIf($["foo${toext}"="foo"]?startread) exten => *90,n,Wait(1) exten => *90,n,Set(DB(CFB/${fromext})=${toext}) exten => *90,n(hook_1),Playback(call-fwd-on-busy&for&extension) exten => *90,n,SayDigits(${fromext}) exten => *90,n,Playback(is-set-to) exten => *90,n,SayDigits(${toext}) exten => *90,n,Macro(hangupcall,) exten => _*90.,1,Answer exten => _*90.,n,Wait(1) exten => _*90.,n,Macro(user-callerid,) exten => _*90.,n,Set(fromext=${AMPUSER}) exten => _*90.,n,Set(toext=${EXTEN:3}) exten => _*90.,n,Set(DB(CFB/${fromext})=${toext}) exten => _*90.,n(hook_2),Playback(call-fwd-on-busy&for&extension) exten => _*90.,n,SayDigits(${fromext}) exten => _*90.,n,Playback(is-set-to) exten => _*90.,n,SayDigits(${toext}) exten => _*90.,n,Macro(hangupcall,) ; end of [app-cf-busy-on] [app-cf-off] include => app-cf-off-custom exten => *73,1,Answer exten => *73,n,Wait(1) exten => *73,n,Macro(user-callerid,) exten => *73,n,Set(fromext=${AMPUSER}) exten => *73,n,Noop(Deleting: CF/${fromext} ${DB_DELETE(CF/${fromext})}) exten => *73,n(hook_1),Playback(call-fwd-unconditional&de-activated) exten => *73,n,Macro(hangupcall,) exten => _*73.,1,Answer exten => _*73.,n,Wait(1) exten => _*73.,n,Set(fromext=${EXTEN:3}) exten => _*73.,n,Noop(Deleting: CF/${fromext} ${DB_DELETE(CF/${fromext})}) exten => _*73.,n(hook_2),Playback(call-fwd-unconditional&for&extension) exten => _*73.,n,SayDigits(${fromext}) exten => _*73.,n,Playback(cancelled) exten => _*73.,n,Macro(hangupcall,) ; end of [app-cf-off] [app-cf-off-any] include => app-cf-off-any-custom exten => *74,1,Answer exten => *74,n,Macro(user-callerid,) exten => *74,n,Wait(1) exten => *74,n,Read(fromext,please-enter-your&extension&then-press-pound,,,,) exten => *74,n,Set(fromext=${IF($["foo${fromext}"="foo"]?${AMPUSER}:${fromext})}) exten => *74,n,Wait(1) exten => *74,n,Noop(Deleting: CF/${fromext} ${DB_DELETE(CF/${fromext})}) exten => *74,n(hook_1),Playback(call-fwd-unconditional&for&extension) exten => *74,n,SayDigits(${fromext}) exten => *74,n,Playback(cancelled) exten => *74,n,Macro(hangupcall,) ; end of [app-cf-off-any] [app-cf-on] include => app-cf-on-custom exten => *72,1,Answer exten => *72,n,Wait(1) exten => *72,n,Macro(user-callerid,) exten => *72,n,Read(fromext,call-fwd-unconditional&please-enter-your&extension&then-press-pound,,,,) exten => *72,n,Set(fromext=${IF($["foo${fromext}"="foo"]?${AMPUSER}:${fromext})}) exten => *72,n,Wait(1) exten => *72,n(startread),Read(toext,ent-target-attendant&then-press-pound,,,,) exten => *72,n,GotoIf($["foo${toext}"="foo"]?startread) exten => *72,n,Wait(1) exten => *72,n,Set(DB(CF/${fromext})=${toext}) exten => *72,n(hook_1),Playback(call-fwd-unconditional&for&extension) exten => *72,n,SayDigits(${fromext}) exten => *72,n,Playback(is-set-to) exten => *72,n,SayDigits(${toext}) exten => *72,n,Macro(hangupcall,) exten => _*72.,1,Answer exten => _*72.,n,Wait(1) exten => _*72.,n,Macro(user-callerid,) exten => _*72.,n,Set(fromext=${AMPUSER}) exten => _*72.,n,Set(toext=${EXTEN:3}) exten => _*72.,n,Set(DB(CF/${fromext})=${toext}) exten => _*72.,n(hook_2),Playback(call-fwd-unconditional&for&extension) exten => _*72.,n,SayDigits(${fromext}) exten => _*72.,n,Playback(is-set-to) exten => _*72.,n,SayDigits(${toext}) exten => _*72.,n,Macro(hangupcall,) ; end of [app-cf-on] [app-cf-unavailable-off] include => app-cf-unavailable-off-custom exten => *53,1,Answer exten => *53,n,Wait(1) exten => *53,n,Macro(user-callerid,) exten => *53,n,Set(fromext=${AMPUSER}) exten => *53,n,Noop(Deleting: CFU/${fromext} ${DB_DELETE(CFU/${fromext})}) exten => *53,n(hook_1),Playback(call-fwd-no-ans&de-activated) exten => *53,n,Macro(hangupcall,) exten => _*53.,1,Answer exten => _*53.,n,Wait(1) exten => _*53.,n,Set(fromext=${EXTEN:3}) exten => _*53.,n,Noop(Deleting: CFU/${fromext} ${DB_DELETE(CFU/${fromext})}) exten => _*53.,n(hook_2),Playback(call-fwd-no-ans&for&extension) exten => _*53.,n,SayDigits(${fromext}) exten => _*53.,n,Playback(cancelled) exten => _*53.,n,Macro(hangupcall,) ; end of [app-cf-unavailable-off] [app-cf-unavailable-on] include => app-cf-unavailable-on-custom exten => *52,1,Answer exten => *52,n,Wait(1) exten => *52,n,Macro(user-callerid,) exten => *52,n,Read(fromext,call-fwd-no-ans&please-enter-your&extension&then-press-pound,,,,) exten => *52,n,Set(fromext=${IF($["foo${fromext}"="foo"]?${AMPUSER}:${fromext})}) exten => *52,n,Wait(1) exten => *52,n(startread),Read(toext,ent-target-attendant&then-press-pound,,,,) exten => *52,n,GotoIf($["foo${toext}"="foo"]?startread) exten => *52,n,Wait(1) exten => *52,n,Set(DB(CFU/${fromext})=${toext}) exten => *52,n(hook_1),Playback(call-fwd-no-ans&for&extension) exten => *52,n,SayDigits(${fromext}) exten => *52,n,Playback(is-set-to) exten => *52,n,SayDigits(${toext}) exten => *52,n,Macro(hangupcall,) exten => _*52.,1,Answer exten => _*52.,n,Wait(1) exten => _*52.,n,Macro(user-callerid,) exten => _*52.,n,Set(fromext=${AMPUSER}) exten => _*52.,n,Set(toext=${EXTEN:3}) exten => _*52.,n,Set(DB(CFU/${fromext})=${toext}) exten => _*52.,n(hook_2),Playback(call-fwd-no-ans&for&extension) exten => _*52.,n,SayDigits(${fromext}) exten => _*52.,n,Playback(is-set-to) exten => _*52.,n,SayDigits(${toext}) exten => _*52.,n,Macro(hangupcall,) ; end of [app-cf-unavailable-on] [app-cf-toggle] include => app-cf-toggle-custom exten => *740,1,Answer exten => *740,n,Wait(1) exten => *740,n,Macro(user-callerid,) exten => *740,n,Set(fromext=${AMPUSER}) exten => *740,n,GotoIf($["${DB(CF/${fromext})}" = ""]?activate:deactivate) exten => *740,n(activate),Read(toext,ent-target-attendant&then-press-pound,,,,) exten => *740,n,GotoIf($["${toext}"=""]?activate) exten => *740,n,Wait(1) exten => *740,n(toext),Set(DB(CF/${fromext})=${toext}) exten => *740,n(hook_on),Playback(call-fwd-unconditional&for&extension) exten => *740,n,SayDigits(${fromext}) exten => *740,n,Playback(is-set-to) exten => *740,n,SayDigits(${toext}) exten => *740,n,Macro(hangupcall,) exten => *740,n(setdirect),Answer exten => *740,n,Wait(1) exten => *740,n,Macro(user-callerid,) exten => *740,n,Goto(toext) exten => *740,n(deactivate),Noop(Deleting: CF/${fromext} ${DB_DELETE(CF/${fromext})}) exten => *740,n(hook_off),Playback(call-fwd-unconditional&de-activated) exten => *740,n,Macro(hangupcall,) ; end of [app-cf-toggle] [ivr-3] include => ivr-3-custom include => from-did-direct-ivr include => app-directory exten => #,1,Noop(Deleting: ${BLKVM_OVERRIDE} ${DB_DELETE(${BLKVM_OVERRIDE})}) exten => #,n,Set(__NODEST=) exten => #,n,Goto(app-directory,#,1) exten => h,1,Hangup exten => s,1,Set(MSG=) exten => s,n,Set(LOOPCOUNT=0) exten => s,n,Set(__DIR-CONTEXT=default) exten => s,n,Set(_IVR_CONTEXT_${CONTEXT}=${IVR_CONTEXT}) exten => s,n,Set(_IVR_CONTEXT=${CONTEXT}) exten => s,n,GotoIf($["${CDR(disposition)}" = "ANSWERED"]?begin) exten => s,n,Answer exten => s,n,Wait(1) exten => s,n(begin),Set(TIMEOUT(digit)=3) exten => s,n,Set(TIMEOUT(response)=10) exten => s,n,Set(__IVR_RETVM=) exten => s,n,ExecIf($["${MSG}" != ""]?Background(${MSG})) exten => s,n,WaitExten(,) exten => hang,1,Playback(vm-goodbye) exten => hang,n,Hangup exten => i,1,Playback(invalid) exten => i,n,Goto(loop,1) exten => t,1,Goto(loop,1) exten => loop,1,Set(LOOPCOUNT=$[${LOOPCOUNT} + 1]) exten => loop,n,GotoIf($[${LOOPCOUNT} > 2]?hang,1) exten => loop,n,Goto(ivr-3,s,begin) exten => return,1,Set(MSG=) exten => return,n,Set(_IVR_CONTEXT=${CONTEXT}) exten => return,n,Set(_IVR_CONTEXT_${CONTEXT}=${IVR_CONTEXT_${CONTEXT}}) exten => return,n,Goto(ivr-3,s,begin) exten => fax,1,Goto(${CUT(FAX_DEST,^,1)},${CUT(FAX_DEST,^,2)},${CUT(FAX_DEST,^,3)}) ; end of [ivr-3] [app-dnd-off] include => app-dnd-off-custom exten => *79,1,Answer exten => *79,n,Wait(1) exten => *79,n,Macro(user-callerid,) exten => *79,n,Noop(Deleting: DND/${AMPUSER} ${DB_DELETE(DND/${AMPUSER})}) exten => *79,n(hook_1),Playback(do-not-disturb&de-activated) exten => *79,n,Macro(hangupcall,) ; end of [app-dnd-off] [app-dnd-on] include => app-dnd-on-custom exten => *78,1,Answer exten => *78,n,Wait(1) exten => *78,n,Macro(user-callerid,) exten => *78,n,Set(DB(DND/${AMPUSER})=YES) exten => *78,n(hook_1),Playback(do-not-disturb&activated) exten => *78,n,Macro(hangupcall,) ; end of [app-dnd-on] [app-dnd-toggle] include => app-dnd-toggle-custom exten => *76,1,Answer exten => *76,n,Wait(1) exten => *76,n,Macro(user-callerid,) exten => *76,n,GotoIf($["${DB(DND/${AMPUSER})}" = ""]?activate:deactivate) exten => *76,n(activate),Set(DB(DND/${AMPUSER})=YES) exten => *76,n(hook_on),Playback(do-not-disturb&activated) exten => *76,n,Macro(hangupcall,) exten => *76,n(deactivate),Noop(Deleting: DND/${AMPUSER} ${DB_DELETE(DND/${AMPUSER})}) exten => *76,n(hook_off),Playback(do-not-disturb&de-activated) exten => *76,n,Macro(hangupcall,) ; end of [app-dnd-toggle] [app-gabcast] include => app-gabcast-custom exten => *422,1,Macro(user-callerid,) exten => *422,n,Goto(gabcast,${AMPUSER},1) ; end of [app-gabcast] [gabcast] include => gabcast-custom exten => _X.,1,Dial(IAX2/iax.gabcast.com/422,120,tr) exten => s,1,Dial(IAX2/iax.gabcast.com/422,120,tr) ; end of [gabcast] [macro-outisbusy] include => macro-outisbusy-custom exten => s,1,Progress exten => s,n,GotoIf($["${EMERGENCYROUTE}" = "YES"]?emergency,1) exten => s,n,GotoIf($["${INTRACOMPANYROUTE}" = "YES"]?intracompany,1) exten => s,n,Playback(all-circuits-busy-now&pls-try-call-later, noanswer) exten => s,n,Congestion(20) exten => s,n,Hangup exten => intracompany,1,Playback(all-circuits-busy-now&pls-try-call-later, noanswer) exten => intracompany,n,Congestion(20) exten => intracompany,n,Hangup exten => emergency,1,Playback(all-circuits-busy-now&pls-try-call-later) exten => emergency,n,Congestion(20) exten => emergency,n,Hangup ; end of [macro-outisbusy] [cidlookup] include => cidlookup-custom exten => cidlookup_return,1,ExecIf($["${DB(cidname/${CALLERID(num)})}" != ""]?Set(CALLERID(name)=${DB(cidname/${CALLERID(num)})})) exten => cidlookup_return,n,Return() ; end of [cidlookup] [app-fmf-toggle] include => app-fmf-toggle-custom exten => *21,1,Goto(app-fmf-toggle,s,start) exten => s,1(start),Answer exten => s,n,Wait(1) exten => s,n,Macro(user-callerid,) exten => s,n,GotoIf($["${DB(AMPUSER/${AMPUSER}/followme/ddial)}" = "EXTENSION"]?activate) exten => s,n,GotoIf($["${DB(AMPUSER/${AMPUSER}/followme/ddial)}" = "DIRECT"]?deactivate:end) exten => s,n(deactivate),Set(DB(AMPUSER/${AMPUSER}/followme/ddial)=EXTENSION) exten => s,n(hook_off),Playback(followme&de-activated) exten => s,n(end),Macro(hangupcall,) exten => s,n(activate),Set(DB(AMPUSER/${AMPUSER}/followme/ddial)=DIRECT) exten => s,n(hook_on),Playback(followme&activated) exten => s,n,Macro(hangupcall,) ; end of [app-fmf-toggle] [app-pbdirectory] include => app-pbdirectory-custom exten => 411,1,Goto(pbdirectory,1) exten => pbdirectory,1,Answer exten => pbdirectory,n,Wait(1) exten => pbdirectory,n,Macro(user-callerid,) exten => pbdirectory,n,AGI(pbdirectory) exten => pbdirectory,n,GotoIf($["${dialnumber}"=""]?hangup,1) exten => pbdirectory,n,Noop(Got number to dial: ${dialnumber}) exten => pbdirectory,n,Dial(Local/${dialnumber}@from-internal/n,) exten => hangup,1,Hangup ; end of [app-pbdirectory] [ext-fax] include => ext-fax-custom exten => s,1,Macro(user-callerid,) exten => s,n,Noop(Receiving Fax for: ${FAX_RX_EMAIL} , From: ${CALLERID(all)}) exten => s,n(receivefax),StopPlaytones exten => s,n,ReceiveFAX(${ASTSPOOLDIR}/fax/${UNIQUEID}.tif,f) exten => s,n,ExecIf($["${FAXOPT(error)}"=""]?Set(FAXSTATUS=FAILED LICENSE EXCEEDED)) exten => s,n,ExecIf($["${FAXOPT(error)}"!="" && "${FAXOPT(error)}"!="NO_ERROR"]?Set(FAXSTATUS="FAILED FAXOPT: error: ${FAXOPT(error)} status: ${FAXOPT(status)} statusstr: ${FAXOPT(statusstr)}")) exten => s,n,Hangup exten => h,1,GotoIf($["${FAXSTATUS:0:6}" = "FAILED"]?failed) exten => h,n(process),GotoIf($[${LEN(${FAX_RX_EMAIL})} = 0]?end) exten => h,n,System(${ASTVARLIBDIR}/bin/fax-process.pl --to "${FAX_RX_EMAIL}" --from "freepbx@gmail.com" --dest "${FROM_DID}" --subject "New fax from ${URIENCODE(${CALLERID(name)})} ${URIENCODE(<${CALLERID(number)}>)}" --attachment fax_${URIENCODE(${CALLERID(number)})}.pdf --type application/pdf --file ${ASTSPOOLDIR}/fax/${UNIQUEID}.tif) exten => h,n(end),Macro(hangupcall,) exten => h,process+101(failed),Noop(FAX ${FAXSTATUS} for: ${FAX_RX_EMAIL} , From: ${CALLERID(all)}) exten => h,n,Macro(hangupcall,) ; end of [ext-fax] [app-fax] include => app-fax-custom exten => 666,1,Set(FAX_RX_EMAIL=fax@mydomain.com) exten => 666,n,Goto(ext-fax,s,1) exten => h,1,Macro(hangupcall,) ; end of [app-fax] [ext-did-0001] include => ext-did-0001-custom exten => fax,1,Goto(${CUT(FAX_DEST,^,1)},${CUT(FAX_DEST,^,2)},${CUT(FAX_DEST,^,3)}) ; end of [ext-did-0001] [ext-did-0002] include => ext-did-0002-custom exten => fax,1,Goto(${CUT(FAX_DEST,^,1)},${CUT(FAX_DEST,^,2)},${CUT(FAX_DEST,^,3)}) exten => 7777,1,Set(__FROM_DID=${EXTEN}) exten => 7777,n,Gosub(app-blacklist-check,s,1) exten => 7777,n,ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)})) exten => 7777,n,Set(__CALLINGPRES_SV=${CALLERPRES()}) exten => 7777,n,Set(CALLERPRES()=allowed_not_screened) exten => 7777,n(dest-ext),Goto(from-did-direct,7777,1) ; end of [ext-did-0002] [app-queue-toggle] include => app-queue-toggle-custom exten => s,1(start),Answer exten => s,n,Wait(1) exten => s,n,Macro(user-callerid,) exten => s,n,Set(QUEUESTAT=LOGGEDOUT) exten => s,n,AGI(queue_devstate.agi,getqueues,${AMPUSER}) exten => s,n,GotoIf($["${QUEUESTAT}" = "LOGGEDOUT"]?activate) exten => s,n,GotoIf($["${QUEUESTAT}" = "LOGGEDIN"]?deactivate) exten => s,n,GotoIf($["${QUEUESTAT}" = "STATIC"]?static:end) exten => s,n(deactivate),Noop(Agent Logged out) exten => s,n,Macro(toggle-del-agent,) exten => s,n,Playback(agent-loggedoff) exten => s,n,Macro(hangupcall,) exten => s,n(activate),Noop(Agent Logged In) exten => s,n,Macro(toggle-add-agent,) exten => s,n,Playback(agent-loginok) exten => s,n,SayDigits(${CALLBACKNUM}) exten => s,n,Macro(hangupcall,) exten => s,n(static),Noop(User is a Static Agent) exten => s,n,Playback(agent-loginok) exten => s,n,Macro(hangupcall,) ; end of [app-queue-toggle] [macro-toggle-del-agent] include => macro-toggle-del-agent-custom exten => s,1,Wait(1) exten => s,n,Macro(user-callerid,SKIPTTL,) exten => s,n,Set(CALLBACKNUM=${AMPUSER}) exten => s,n,RemoveQueueMember(${QUEUENO},Local/${CALLBACKNUM}@from-queue/n) exten => s,n,RemoveQueueMember(${QUEUENO},Local/${CALLBACKNUM}@from-internal/n) exten => s,n,UserEvent(RefreshQueue) exten => s,n,MacroExit() ; end of [macro-toggle-del-agent] [macro-toggle-add-agent] include => macro-toggle-add-agent-custom exten => s,1,Wait(1) exten => s,n,Macro(user-callerid,SKIPTTL,) exten => s,n,Set(CALLBACKNUM=${AMPUSER}) exten => s,n,GotoIf($["${DB(QPENALTY/${QUEUENO}/dynmemberonly)}" = "yes" & ${DB_EXISTS(QPENALTY/${QUEUENO}/agents/${CALLBACKNUM})} != 1]?invalid) exten => s,n,AddQueueMember(${QUEUENO},Local/${CALLBACKNUM}@from-queue/n,${DB(QPENALTY/${QUEUENO}/agents/${CALLBACKNUM})},,${DB(AMPUSER/${CALLBACKNUM}/cidname)},${DB(DEVICE/${REALCALLERIDNUM}/dial)}) exten => s,n,UserEvent(AgentLogin,Agent: ${CALLBACKNUM}) exten => s,n,MacroExit() exten => s,n(invalid),Playback(pbx-invalid) exten => s,n,MacroExit() ; end of [macro-toggle-add-agent] [ext-queues] include => ext-queues-custom exten => h,1,Macro(hangupcall,) ; end of [ext-queues] [from-queue] include => from-queue-custom exten => _.,1,Set(QAGENT=${EXTEN}) exten => _.,n,Goto(${NODEST},1) ; end of [from-queue] [from-queue-exten-internal] include => from-queue-exten-internal-custom include => from-queue-exten-only include => from-internal exten => foo,1,Noop(bar) ; end of [from-queue-exten-internal] [from-queue-exten-only] include => from-queue-exten-only-custom exten => 7777,1,Set(RingGroupMethod=none) exten => 7777,n,Macro(record-enable,7777,IN) exten => 7777,n,Macro(dial-one,,${DIAL_OPTIONS},7777) exten => 7777,n,Hangup exten => h,1,Macro(hangupcall,) ; end of [from-queue-exten-only] [macro-agent-add] include => macro-agent-add-custom exten => s,1,Wait(1) exten => s,n,Macro(user-callerid,SKIPTTL) exten => s,n(a3),Read(CALLBACKNUM,agent-login,,,,) exten => s,n,GotoIf($[${LEN(${CALLBACKNUM})}=0]?a5:a7) exten => s,n(a5),Set(CALLBACKNUM=${IF($[${LEN(${AMPUSER})}=0]?${CALLERID(number)}:${AMPUSER})}) exten => s,n,Set(THISDEVICE=${DB(DEVICE/${REALCALLERIDNUM}/dial)}) exten => s,n,GotoIf($["${CALLBACKNUM}" = ""]?a3) exten => s,n(a7),GotoIf($["${CALLBACKNUM}" = "${ARG1}"]?invalid) exten => s,n,GotoIf($["${ARG3}" = "EXTEN" & ${DB_EXISTS(AMPUSER/${CALLBACKNUM}/cidname)} = 0]?invalid) exten => s,n,GotoIf($["${DB(QPENALTY/${ARG1}/dynmemberonly)}" = "yes" & ${DB_EXISTS(QPENALTY/${ARG1}/agents/${CALLBACKNUM})} != 1]?invalid) exten => s,n,ExecIf($["${QREGEX}" != ""]?GotoIf($["${REGEX("${QREGEX}" ${CALLBACKNUM})}" = "0"]?invalid)) exten => s,n,ExecIf($["${ARG2}" != ""]?Authenticate(${ARG2})) exten => s,n,Set(THISDEVICE=${IF($[${LEN(${THISDEVICE})}=0]?${DB(DEVICE/${CUT(DB(AMPUSER/${CALLBACKNUM}/device),&,1)}/dial)}:${THISDEVICE})}) exten => s,n,ExecIf($[${LEN(${THISDEVICE})}!=0]?AddQueueMember(${ARG1},Local/${CALLBACKNUM}@from-queue/n,${DB(QPENALTY/${ARG1}/agents/${CALLBACKNUM})},,${DB(AMPUSER/${CALLBACKNUM}/cidname)},${THISDEVICE})) exten => s,n,ExecIf($[${LEN(${THISDEVICE})}=0]?AddQueueMember(${ARG1},Local/${CALLBACKNUM}@from-queue/n,${DB(QPENALTY/${ARG1}/agents/${CALLBACKNUM})})) exten => s,n,UserEvent(Agentlogin,Agent: ${CALLBACKNUM}) exten => s,n,Wait(1) exten => s,n,Playback(agent-loginok&with&extension) exten => s,n,SayDigits(${CALLBACKNUM}) exten => s,n,Hangup exten => s,n,MacroExit() exten => s,n(invalid),Playback(pbx-invalid) exten => s,n,Goto(a3) ; end of [macro-agent-add] [macro-agent-del] include => macro-agent-del-custom exten => s,1,Wait(1) exten => s,n,Macro(user-callerid,SKIPTTL) exten => s,n(a3),Read(CALLBACKNUM,agent-logoff,,,,) exten => s,n,GotoIf($[${LEN(${CALLBACKNUM})}=0]?a5:a7) exten => s,n(a5),Set(CALLBACKNUM=${IF($[${LEN(${AMPUSER})}=0]?${CALLERID(number)}:${AMPUSER})}) exten => s,n,GotoIf($["${CALLBACKNUM}" = ""]?a3) exten => s,n(a7),RemoveQueueMember(${ARG1},Local/${CALLBACKNUM}@from-queue/n) exten => s,n,RemoveQueueMember(${ARG1},Local/${CALLBACKNUM}@from-internal/n) exten => s,n,UserEvent(RefreshQueue) exten => s,n,Wait(1) exten => s,n,Playback(agent-loggedoff) exten => s,n,Hangup ; end of [macro-agent-del] [app-recordings] include => app-recordings-custom exten => *77,1,Macro(user-callerid,) exten => *77,n,Wait(2) exten => *77,n,Macro(systemrecording,dorecord) exten => *99,1,Macro(user-callerid,) exten => *99,n,Wait(2) exten => *99,n,Macro(systemrecording,docheck) ; end of [app-recordings] [macro-systemrecording] include => macro-systemrecording-custom exten => s,1,Set(RECFILE=${IF($["${ARG2}" = ""]?/var/spool/asterisk/tmp/${AMPUSER}-ivrrecording:${ARG2})}) exten => s,n,ExecIf($["${ARG3}" != ""]?Authenticate(${ARG3})) exten => s,n,Goto(${ARG1},1) exten => dorecord,1,System(rm ${ASTVARLIBDIR}/sounds/${RECFILE}.*) exten => dorecord,n,Record(${RECFILE}:wav) exten => dorecord,n,Wait(1) exten => dorecord,n,Goto(confmenu,1) exten => docheck,1,Playback(beep) exten => docheck,n(dc_start),Background(${RECFILE},m,${CHANNEL(language)},macro-systemrecording) exten => docheck,n,Wait(1) exten => docheck,n,Goto(confmenu,1) exten => confmenu,1,Background(to-listen-to-it&press-1&to-rerecord-it&press-star&astcc-followed-by-pound,m,${CHANNEL(language)},macro-systemrecording) exten => confmenu,n,Read(RECRESULT,,1,,,4) exten => confmenu,n,GotoIf($["x${RECRESULT}"="x*"]?dorecord,1) exten => confmenu,n,GotoIf($["x${RECRESULT}"="x1"]?docheck,2) exten => confmenu,n,Goto(1) exten => 1,1,Goto(docheck,dc_start) exten => *,1,Goto(dorecord,1) exten => t,1,Playback(goodbye) exten => t,n,Hangup exten => i,1,Playback(pm-invalid-option) exten => i,n,Goto(confmenu,1) exten => h,1,Hangup ; end of [macro-systemrecording] [app-calltrace] include => app-calltrace-custom exten => *69,1,Goto(app-calltrace-perform,s,1) ; end of [app-calltrace] [app-calltrace-perform] include => app-calltrace-perform-custom exten => s,1,Answer exten => s,n,Wait(1) exten => s,n,Macro(user-callerid,) exten => s,n,Playback(info-about-last-call&telephone-number) exten => s,n,Set(lastcaller=${DB(CALLTRACE/${AMPUSER})}) exten => s,n,GotoIf($[ $[ "${lastcaller}" = "" ] | $[ "${lastcaller}" = "unknown" ] ]?noinfo) exten => s,n,SayDigits(${lastcaller}) exten => s,n,Set(TIMEOUT(digit)=3) exten => s,n,Set(TIMEOUT(response)=7) exten => s,n,Background(to-call-this-number&press-1) exten => s,n,Goto(fin) exten => s,n(noinfo),Playback(from-unknown-caller) exten => s,n,Macro(hangupcall,) exten => s,n(fin),Noop(Waiting for input) exten => s,n,WaitExten(60,) exten => s,n,Playback(sorry-youre-having-problems&goodbye) exten => 1,1,Goto(from-internal,${lastcaller},1) exten => i,1,Playback(vm-goodbye) exten => i,n,Macro(hangupcall,) exten => t,1,Playback(vm-goodbye) exten => t,n,Macro(hangupcall,) ; end of [app-calltrace-perform] [app-directory] include => app-directory-custom exten => #,1,Answer exten => #,n,Wait(1) exten => #,n,AGI(directory,${DIR-CONTEXT},from-did-direct,${DIRECTORY:0:1}${DIRECTORY_OPTS}) exten => #,n,Playback(vm-goodbye) exten => #,n,Hangup exten => o,1,Playback(privacy-incorrect) ; end of [app-directory] [app-echo-test] include => app-echo-test-custom exten => *43,1,Answer exten => *43,n,Wait(1) exten => *43,n,Playback(demo-echotest) exten => *43,n,Echo() exten => *43,n,Playback(demo-echodone) exten => *43,n,Hangup ; end of [app-echo-test] [app-speakextennum] include => app-speakextennum-custom exten => *65,1,Answer exten => *65,n,Wait(1) exten => *65,n,Macro(user-callerid,) exten => *65,n,Playback(your) exten => *65,n,Playback(extension) exten => *65,n,Playback(number) exten => *65,n,Playback(is) exten => *65,n,SayDigits(${AMPUSER}) exten => *65,n,Wait(2) exten => *65,n,Hangup ; end of [app-speakextennum] [app-speakingclock] include => app-speakingclock-custom exten => *60,1,Answer exten => *60,n,Wait(1) exten => *60,n,Set(NumLoops=0) exten => *60,n(start),Set(FutureTime=$[${EPOCH} + 11]) exten => *60,n,Playback(at-tone-time-exactly) exten => *60,n,GotoIf($["${TIMEFORMAT}" = "kM"]?hr24format) exten => *60,n,SayUnixTime(${FutureTime},,IM 'and' S 'seconds' p) exten => *60,n,Goto(waitloop) exten => *60,n(hr24format),SayUnixTime(${FutureTime},,kM 'and' S 'seconds') exten => *60,n(waitloop),Set(TimeLeft=$[${FutureTime} - ${EPOCH}]) exten => *60,n,GotoIf($[${TimeLeft} < 1]?playbeep) exten => *60,n,Wait(1) exten => *60,n,Goto(waitloop) exten => *60,n(playbeep),Playback(beep) exten => *60,n,Wait(5) exten => *60,n,Set(NumLoops=$[${NumLoops} + 1]) exten => *60,n,GotoIf($[${NumLoops} < 5]?start) exten => *60,n,Playback(goodbye) exten => *60,n,Hangup ; end of [app-speakingclock] [app-blacklist-check] include => app-blacklist-check-custom exten => s,1(check),GotoIf($["${BLACKLIST()}"="1"]?blacklisted) exten => s,n,Set(CALLED_BLACKLIST=1) exten => s,n,Return() exten => s,n(blacklisted),Answer exten => s,n,Wait(1) exten => s,n,Zapateller() exten => s,n,Playback(ss-noservice) exten => s,n,Hangup ; end of [app-blacklist-check] [app-blacklist] include => app-blacklist-custom exten => *30,1,Goto(app-blacklist-add,s,1) exten => *32,1,Goto(app-blacklist-last,s,1) exten => *31,1,Goto(app-blacklist-remove,s,1) ; end of [app-blacklist] [app-blacklist-add] include => app-blacklist-add-custom exten => s,1,Answer exten => s,n,Wait(1) exten => s,n,Set(NumLoops=0) exten => s,n(start),Playback(enter-num-blacklist) exten => s,n,Set(TIMEOUT(digit)=5) exten => s,n,Set(TIMEOUT(response)=60) exten => s,n,Read(blacknr,then-press-pound,,,,) exten => s,n,SayDigits(${blacknr}) exten => s,n,Playback(if-correct-press&digits/1) exten => s,n,Noop(Waiting for input) exten => s,n(end),WaitExten(60,) exten => s,n,Playback(sorry-youre-having-problems&goodbye) exten => 1,1,GotoIf($[ "${blacknr}" != ""]?:app-blacklist-add-invalid,s,1) exten => 1,n,Set(DB(blacklist/${blacknr})=1) exten => 1,n,Playback(num-was-successfully&added) exten => 1,n,Wait(1) exten => 1,n,Hangup ; end of [app-blacklist-add] [app-blacklist-add-invalid] include => app-blacklist-add-invalid-custom exten => s,1,Set(NumLoops=$[${NumLoops} + 1]) exten => s,n,Playback(pm-invalid-option) exten => s,n,GotoIf($[${NumLoops} < 3]?app-blacklist-add,s,start) exten => s,n,Playback(goodbye) exten => s,n,Hangup ; end of [app-blacklist-add-invalid] [app-blacklist-last] include => app-blacklist-last-custom exten => s,1,Answer exten => s,n,Wait(1) exten => s,n,Set(lastcaller=${DB(CALLTRACE/${CALLERID(number)})}) exten => s,n,GotoIf($[ $[ "${lastcaller}" = "" ] | $[ "${lastcaller}" = "unknown" ] ]?noinfo) exten => s,n,Playback(privacy-to-blacklist-last-caller&telephone-number) exten => s,n,SayDigits(${lastcaller}) exten => s,n,Set(TIMEOUT(digit)=3) exten => s,n,Set(TIMEOUT(response)=7) exten => s,n,Playback(if-correct-press&digits/1) exten => s,n,Goto(end) exten => s,n(noinfo),Playback(unidentified-no-callback) exten => s,n,Hangup exten => s,n,Noop(Waiting for input) exten => s,n(end),WaitExten(60,) exten => s,n,Playback(sorry-youre-having-problems&goodbye) exten => 1,1,Set(DB(blacklist/${lastcaller})=1) exten => 1,n,Playback(num-was-successfully) exten => 1,n,Playback(added) exten => 1,n,Wait(1) exten => 1,n,Hangup ; end of [app-blacklist-last] [app-blacklist-remove] include => app-blacklist-remove-custom exten => s,1,Answer exten => s,n,Wait(1) exten => s,n,Playback(entr-num-rmv-blklist) exten => s,n,Set(TIMEOUT(digit)=5) exten => s,n,Set(TIMEOUT(response)=60) exten => s,n,Read(blacknr,then-press-pound,,,,) exten => s,n,SayDigits(${blacknr}) exten => s,n,Playback(if-correct-press&digits/1) exten => s,n,Noop(Waiting for input) exten => s,n(end),WaitExten(60,) exten => s,n,Playback(sorry-youre-having-problems&goodbye) exten => 1,1,Noop(Deleting: blacklist/${blacknr} ${DB_DELETE(blacklist/${blacknr})}) exten => 1,n,Playback(num-was-successfully&removed) exten => 1,n,Wait(1) exten => 1,n,Hangup ; end of [app-blacklist-remove] [app-dictate-record] include => app-dictate-record-custom exten => *34,1,Answer exten => *34,n,Macro(user-callerid,) exten => *34,n,Noop(CallerID is ${AMPUSER}) exten => *34,n,Set(DICTENABLED=${DB(AMPUSER/${AMPUSER}/dictate/enabled)}) exten => *34,n,GotoIf($[$["x${DICTENABLED}"="x"]|$["x${DICTENABLED}"="xdisabled"]]?nodict:dictok) exten => *34,n(nodict),Playback(feature-not-avail-line) exten => *34,n,Hangup exten => *34,n(dictok),Dictate(/var/lib/asterisk/sounds/dictate/${AMPUSER}) exten => *34,n,Macro(hangupcall,) ; end of [app-dictate-record] [app-dictate-send] include => app-dictate-send-custom exten => *35,1,Answer exten => *35,n,Macro(user-callerid,) exten => *35,n,Noop(CallerID is ${AMPUSER}) exten => *35,n,Set(DICTENABLED=${DB(AMPUSER/${AMPUSER}/dictate/enabled)}) exten => *35,n,GotoIf($[$["x${DICTENABLED}"="x"]|$["x${DICTENABLED}"="xdisabled"]]?nodict:dictok) exten => *35,n(nodict),Playback(feature-not-avail-line) exten => *35,n,Hangup exten => *35,n(dictok),Read(DICTFILE,enter-filename-short,,,,) exten => *35,n,Set(DICTEMAIL=${DB(AMPUSER/${AMPUSER}/dictate/email)}) exten => *35,n,Set(DICTFMT=${DB(AMPUSER/${AMPUSER}/dictate/format)}) exten => *35,n,Set(NAME=${DB(AMPUSER/${AMPUSER}/cidname)}) exten => *35,n,Playback(dictation-being-processed) exten => *35,n,System(/var/lib/asterisk/bin/audio-email.pl --file /var/lib/asterisk/sounds/dictate/${AMPUSER}/${DICTFILE}.raw --attachment dict-${DICTFILE} --format ${DICTFMT} --to ${DICTEMAIL} --subject "Dictation from ${NAME} Attached") exten => *35,n,Playback(dictation-sent) exten => *35,n,Macro(hangupcall,) ; end of [app-dictate-send] [app-dialvm] include => app-dialvm-custom exten => *98,1,Answer exten => *98,n(start),Wait(1) exten => *98,n,Noop(app-dialvm: Asking for mailbox) exten => *98,n,Read(MAILBOX,vm-login,,,3,2) exten => *98,n(check),Noop(app-dialvm: Got Mailbox ${MAILBOX}) exten => *98,n,Macro(get-vmcontext,${MAILBOX}) exten => *98,n,Set(VMBOXEXISTSSTATUS=${IF(${MAILBOX_EXISTS(${MAILBOX}@${VMCONTEXT})}?SUCCESS:FAILED)}) exten => *98,n,GotoIf($["${VMBOXEXISTSSTATUS}" = "SUCCESS"]?good:bad) exten => *98,n,Macro(hangupcall,) exten => *98,n(good),Noop(app-dialvm: Good mailbox ${MAILBOX}@${VMCONTEXT}) exten => *98,n,VoiceMailMain(${MAILBOX}@${VMCONTEXT}) exten => *98,n,GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?playret) exten => *98,n,Macro(hangupcall,) exten => *98,n(bad),Noop(app-dialvm: BAD mailbox ${MAILBOX}@${VMCONTEXT}) exten => *98,n,Wait(1) exten => *98,n,Noop(app-dialvm: Asking for password so people can't probe for existence of a mailbox) exten => *98,n,Read(FAKEPW,vm-password,,,3,2) exten => *98,n,Noop(app-dialvm: Asking for mailbox again) exten => *98,n,Read(MAILBOX,vm-incorrect-mailbox,,,3,2) exten => *98,n,Goto(check) exten => *98,n,Macro(hangupcall,) exten => *98,n(playret),Playback(beep&you-will-be-transfered-menu&silence/1) exten => *98,n,Goto(${IVR_CONTEXT},return,1) exten => _*98.,1,Answer exten => _*98.,n,Wait(1) exten => _*98.,n,Macro(get-vmcontext,${EXTEN:3}) exten => _*98.,n,VoiceMailMain(${EXTEN:3}@${VMCONTEXT}) exten => _*98.,n,GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?${IVR_CONTEXT},return,1) exten => _*98.,n,Macro(hangupcall,) ; end of [app-dialvm] [app-vmmain] include => app-vmmain-custom exten => *97,1,Answer exten => *97,n,Wait(1) exten => *97,n,Macro(user-callerid,) exten => *97,n,Macro(get-vmcontext,${AMPUSER}) exten => *97,n(check),Set(VMBOXEXISTSSTATUS=${IF(${MAILBOX_EXISTS(${AMPUSER}@${VMCONTEXT})}?SUCCESS:FAILED)}) exten => *97,n,GotoIf($["${VMBOXEXISTSSTATUS}" = "SUCCESS"]?mbexist) exten => *97,n,VoiceMailMain() exten => *97,n,GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?playret) exten => *97,n,Macro(hangupcall,) exten => *97,check+101(mbexist),VoiceMailMain(${AMPUSER}@${VMCONTEXT}) exten => *97,n,GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?playret) exten => *97,n,Macro(hangupcall,) exten => *97,n(playret),Playback(beep&you-will-be-transfered-menu&silence/1) exten => *97,n,Goto(${IVR_CONTEXT},return,1) ; end of [app-vmmain] [app-callwaiting-cwoff] include => app-callwaiting-cwoff-custom exten => *71,1,Answer exten => *71,n,Wait(1) exten => *71,n,Macro(user-callerid,) exten => *71,n,Noop(Deleting: CW/${AMPUSER} ${DB_DELETE(CW/${AMPUSER})}) exten => *71,n(hook_1),Playback(call-waiting&de-activated) exten => *71,n,Macro(hangupcall,) ; end of [app-callwaiting-cwoff] [app-callwaiting-cwon] include => app-callwaiting-cwon-custom exten => *70,1,Answer exten => *70,n,Wait(1) exten => *70,n,Macro(user-callerid,) exten => *70,n,Set(DB(CW/${AMPUSER})=ENABLED) exten => *70,n(hook_1),Playback(call-waiting&activated) exten => *70,n,Macro(hangupcall,) ; end of [app-callwaiting-cwon] [ext-group] include => ext-group-custom exten => h,1,Macro(hangupcall,) ; end of [ext-group] [macro-autoanswer] include => macro-autoanswer-custom exten => s,1,Set(DIAL=${DB(DEVICE/${ARG1}/dial)}) exten => s,n,ExecIf($["${DIAL:0:3}" = "ZAP"]?Set(DIAL=DAHDI${DIAL:3})) exten => s,n,GotoIf($["${DB(DEVICE/${ARG1}/autoanswer/macro)}" != "" ]?macro) exten => s,n,Set(phone=${SIPPEER(${CUT(DIAL,/,2)}:useragent)}) exten => s,n,ExecIf($["${phone:0:5}" = "Mitel"]?Set(CALLINFO=Call-Info: \;answer-after=0)) exten => s,n,ExecIf($["${ALERTINFO}" != ""]?SipAddHeader(${ALERTINFO})) exten => s,n,ExecIf($["${CALLINFO}" != ""]?SipAddHeader(${CALLINFO})) exten => s,n,ExecIf($["${SIPURI}" != ""]?Set(__SIP_URI_OPTIONS=${SIPURI})) exten => s,n+2(macro),Macro(${DB(DEVICE/${ARG1}/autoanswer/macro)},${ARG1}) ; end of [macro-autoanswer] [ext-paging] include => ext-paging-custom exten => _PAGE.,1,GotoIf($[ ${AMPUSER} = ${EXTEN:4} ]?skipself) exten => _PAGE.,n(AVAIL),ChanIsAvail(${DB(DEVICE/${EXTEN:4}/dial)},s) exten => _PAGE.,n,GotoIf($["${AVAILORIGCHAN}" == ""]?skipself) exten => _PAGE.,n,GotoIf($["${DB(DND/${DB(DEVICE/${EXTEN:4}/user)})}" = "YES"]?skipself) exten => _PAGE.,n(SKIPCHECK),Macro(autoanswer,${EXTEN:4}) exten => _PAGE.,n,Dial(${DIAL},${DTIME},${DOPTIONS}) exten => _PAGE.,n(skipself),Hangup exten => _FPAGE.,1,GotoIf($[ ${AMPUSER} = ${EXTEN:5} ]?skipself) exten => _FPAGE.,n(SKIPCHECK),Macro(autoanswer,${EXTEN:5}) exten => _FPAGE.,n,Dial(${DIAL},${DTIME},${DOPTIONS}) exten => _FPAGE.,n(skipself),Hangup ; end of [ext-paging] [app-userlogonoff] include => app-userlogonoff-custom exten => *12,1,Macro(user-logoff,) exten => *12,n(hook_off),Hangup exten => *11,1,Macro(user-logon,) exten => *11,n(hook_on_1),Hangup exten => _*11.,1,Macro(user-logon,${EXTEN:3},) exten => _*11.,n(hook_on_2),Hangup ; end of [app-userlogonoff] [app-pickup] include => app-pickup-custom exten => _**.,1,Pickup(${EXTEN:2}&${EXTEN:2}@ext-local&${EXTEN:2}@from-internal&${EXTEN:2}@from-internal-xfer&${EXTEN:2}@from-did-direct&LC-${EXTEN:2}@from-internal&LC-${EXTEN:2}@from-internal-xfer&FMPR-${EXTEN:2}@from-internal&FMPR-${EXTEN:2}@from-internal-xfer&FMPR-${EXTEN:2}@from-did-direct) exten => _**.,n,Hangup ; end of [app-pickup] [app-zapbarge] include => app-zapbarge-custom exten => 888,1,Macro(user-callerid,) exten => 888,n,Set(GROUP()=${CALLERID(number)}) exten => 888,n,Answer exten => 888,n,Wait(1) exten => 888,n,DAHDIBarge() exten => 888,n,Hangup ; end of [app-zapbarge] [app-chanspy] include => app-chanspy-custom exten => 555,1,Macro(user-callerid,) exten => 555,n,Answer exten => 555,n,Wait(1) exten => 555,n,ChanSpy() exten => 555,n,Hangup ; end of [app-chanspy] [ext-did] include => ext-did-custom include => ext-did-0001 include => ext-did-0002 exten => foo,1,Noop(bar) ; end of [ext-did] [ext-did-catchall] include => ext-did-catchall-custom exten => s,1,Noop(No DID or CID Match) exten => s,n(a2),Answer exten => s,n,Wait(2) exten => s,n,Playback(ss-noservice) exten => s,n,SayAlpha(${FROM_DID}) exten => s,n,Hangup exten => _.,1,Set(__FROM_DID=${EXTEN}) exten => _.,n,Noop(Received an unknown call with DID set to ${EXTEN}) exten => _.,n,Goto(s,a2) exten => h,1,Hangup ; end of [ext-did-catchall] [ext-local] include => ext-local-custom exten => 7777,1,Macro(exten-vm,novm,7777) exten => 7777,n,Goto(${IVR_CONTEXT},return,1) exten => 7777,hint,SIP/7777 exten => vmret,1,GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?playret) exten => vmret,n,Hangup exten => vmret,n(playret),Playback(exited-vm-will-be-transfered&silence/1) exten => vmret,n,Goto(${IVR_CONTEXT},return,1) exten => h,1,Macro(hangupcall,) ; end of [ext-local] [from-did-direct-ivr] include => from-did-direct-ivr-custom exten => 7777,1,ExecIf($["${BLKVM_OVERRIDE}" != ""]?Noop(Deleting: ${BLKVM_OVERRIDE}: ${DB_DELETE(${BLKVM_OVERRIDE})})) exten => 7777,n,Set(__NODEST=) exten => 7777,n,Goto(from-did-direct,7777,1) ; end of [from-did-direct-ivr] [ext-trunk] include => ext-trunk-custom exten => 2,1,Set(TDIAL_STRING=DAHDI/g0) exten => 2,n,Set(DIAL_TRUNK=2) exten => 2,n,Goto(ext-trunk,tdial,1) exten => tdial,1,Set(OUTBOUND_GROUP=OUT_${DIAL_TRUNK}) exten => tdial,n,GotoIf($["${OUTMAXCHANS_${DIAL_TRUNK}}" = ""]?nomax) exten => tdial,n,GotoIf($[${GROUP_COUNT(OUT_${DIAL_TRUNK})} >= ${OUTMAXCHANS_${DIAL_TRUNK}}]?hangit) exten => tdial,n(nomax),ExecIf($["${CALLINGPRES_SV}" != ""]?Set(CALLERPRES()=${CALLINGPRES_SV})) exten => tdial,n,Set(DIAL_NUMBER=${FROM_DID}) exten => tdial,n,GosubIf($["${PREFIX_TRUNK_${DIAL_TRUNK}}" != ""]?sub-flp-${DIAL_TRUNK},s,1) exten => tdial,n,Set(OUTNUM=${OUTPREFIX_${DIAL_TRUNK}}${DIAL_NUMBER}) exten => tdial,n,Dial(${TDIAL_STRING}/${OUTNUM},300,${DIAL_TRUNK_OPTIONS}) exten => tdial,n,Set(CALLERID(number)=${CALLERID(number):0:40}) exten => tdial,n,Set(CALLERID(name)=${CALLERID(name):0:40}) exten => tdial,n(hangit),Hangup ; end of [ext-trunk] [sub-flp-2] include => sub-flp-2-custom exten => s,1,ExecIf($[${REGEX("^[0-9#\\*\\+]+$" ${DIAL_NUMBER})} = 1]?Return()) exten => s,n,Return() exten => s,n(match),Set(DIAL_NUMBER=${TARGET_FLP_2}) exten => s,n,Return() ; end of [sub-flp-2] [macro-record-enable] include => macro-record-enable-custom exten => s,1,GotoIf($["${BLINDTRANSFER}" = ""]?check) exten => s,n,ResetCDR(w) exten => s,n,StopMixMonitor() exten => s,n(check),ExecIf($["${ARG1}"=""]?MacroExit()) exten => s,n,GotoIf($["${ARG2}"="Group"]?Group:OUT) exten => s,n(Group),Set(LOOPCNT=${FIELDQTY(ARG1,-)}) exten => s,n,Set(ITER=1) exten => s,n(begin),GotoIf($["${CUT(DB(AMPUSER/${CUT(ARG1,-,${ITER})}/recording),=,3)}" != "Always"]?continue) exten => s,n,Set(TEXTEN=${CUT(ARG1,-,${ITER})}) exten => s,n,Noop(Recording enable for ${TEXTEN}) exten => s,n,Set(CALLFILENAME=g${TEXTEN}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${UNIQUEID}) exten => s,n,Goto(record) exten => s,n(continue),Set(ITER=$[${ITER}+1]) exten => s,n,GotoIf($[${ITER}<=${LOOPCNT}]?begin) exten => s,n(OUT),GotoIf($["${ARG2}"="IN"]?IN) exten => s,n,ExecIf($["${CUT(DB(AMPUSER/${ARG1}/recording),\\\|,1):4}" != "Always"]?MacroExit()) exten => s,n,Noop(Recording enable for ${ARG1}) exten => s,n,Set(CALLFILENAME=OUT${ARG1}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${UNIQUEID}) exten => s,n,Goto(record) exten => s,n(IN),ExecIf($["${CUT(DB(AMPUSER/${ARG1}/recording),\\\|,2):3}" != "Always"]?MacroExit()) exten => s,n,Noop(Recording enable for ${ARG1}) exten => s,n,Set(CALLFILENAME=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${UNIQUEID}) exten => s,n(record),MixMonitor(${MIXMON_DIR}${CALLFILENAME}.${MIXMON_FORMAT},,${MIXMON_POST}) exten => s,n,MacroExit() ; end of [macro-record-enable] [outbound-allroutes] include => outbound-allroutes-custom include => outrt-1 ; 9_outside exten => foo,1,Noop(bar) ; end of [outbound-allroutes] [outrt-1] ; 9_outside include => outrt-1-custom exten => _.,1,Macro(user-callerid,SKIPTTL,) exten => _.,n,Noop(Calling Out Route: 9_outside) exten => _.,n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}) exten => _.,n,Set(_NODEST=) exten => _.,n,Macro(record-enable,${AMPUSER},OUT,) exten => _.,n,Macro(dialout-trunk,2,${EXTEN},) exten => _.,n,Macro(outisbusy,) ; end of [outrt-1] [app-blackhole] include => app-blackhole-custom exten => hangup,1,Noop(Blackhole Dest: Hangup) exten => hangup,n,Hangup exten => zapateller,1,Noop(Blackhole Dest: Play SIT Tone) exten => zapateller,n,Answer exten => zapateller,n,Zapateller() exten => musiconhold,1,Noop(Blackhole Dest: Put caller on hold forever) exten => musiconhold,n,Answer exten => musiconhold,n,MusicOnHold() exten => congestion,1,Noop(Blackhole Dest: Congestion) exten => congestion,n,Answer exten => congestion,n,Playtones(congestion) exten => congestion,n,Congestion(20) exten => congestion,n,Hangup exten => busy,1,Noop(Blackhole Dest: Busy) exten => busy,n,Answer exten => busy,n,Playtones(busy) exten => busy,n,Busy(20) exten => busy,n,Hangup exten => ring,1,Noop(Blackhole Dest: Ring) exten => ring,n,Answer exten => ring,n,Playtones(ring) exten => ring,n,Wait(300) exten => ring,n,Hangup ; end of [app-blackhole] [bad-number] include => bad-number-custom exten => _X.,1,ResetCDR() exten => _X.,n,NoCDR() exten => _X.,n,Progress exten => _X.,n,Wait(1) exten => _X.,n,Progress exten => _X.,n,Playback(silence/1&cannot-complete-as-dialed&check-number-dial-again,noanswer) exten => _X.,n,Wait(1) exten => _X.,n,Congestion(20) exten => _X.,n,Hangup ; end of [bad-number] [macro-confirm] include => macro-confirm-custom exten => s,1,Set(LOOPCOUNT=0) exten => s,n,Set(__MACRO_RESULT=ABORT) exten => s,n,Set(MSG1=${IF($["foo${ARG1}" != "foo"]?${ARG1}:"incoming-call-1-accept-2-decline")}) exten => s,n(start),Background(${MSG1},m,${CHANNEL(language)},macro-confirm) exten => s,n,Read(INPUT,,1,,,4) exten => s,n,GotoIf($[${LEN(${INPUT})} > 0]?${INPUT},1:t,1) exten => 1,1,GotoIf($["${DB_EXISTS(RG/${ARG3}/${UNIQCHAN})}" = "0"]?toolate,1) exten => 1,n,Noop(Deleting: RG/${ARG3}/${UNIQCHAN} ${DB_DELETE(RG/${ARG3}/${UNIQCHAN})}) exten => 1,n,Noop(Deleting: ${BLKVM_OVERRIDE} ${DB_DELETE(${BLKVM_OVERRIDE})}) exten => 1,n,Set(__MACRO_RESULT=) exten => 1,n(exitopt1),MacroExit() exten => 2,1,Goto(noanswer,1) exten => 3,1,SayDigits(${CALLCONFIRMCID}) exten => 3,n,GotoIf($["${DB_EXISTS(RG/${ARG3}/${UNIQCHAN})}" = "0"]?toolate,1:s,start) exten => t,1,GotoIf($["${DB_EXISTS(RG/${ARG3}/${UNIQCHAN})}" = "0"]?toolate,1) exten => t,n,Set(LOOPCOUNT=$[ ${LOOPCOUNT} + 1 ]) exten => t,n,GotoIf($[ ${LOOPCOUNT} < 5 ]?s,start:noanswer,1) exten => _X,1,Background(invalid,m,${CHANNEL(language)},macro-confirm) exten => _X,n,GotoIf($["${DB_EXISTS(RG/${ARG3}/${UNIQCHAN})}" = "0"]?toolate,1) exten => _X,n,Set(LOOPCOUNT=$[ ${LOOPCOUNT} + 1 ]) exten => _X,n,GotoIf($[ ${LOOPCOUNT} < 5 ]?s,start:noanswer,1) exten => noanswer,1,Set(__MACRO_RESULT=ABORT) exten => noanswer,n(exitnoanswer),MacroExit() exten => toolate,1,Set(MSG2=${IF($["foo${ARG2}" != "foo"]?${ARG2}:"incoming-call-no-longer-avail")}) exten => toolate,n,Playback(${MSG2}) exten => toolate,n,Set(__MACRO_RESULT=ABORT) exten => toolate,n(exittoolate),MacroExit() exten => h,1,Macro(hangupcall,) ; end of [macro-confirm] [macro-auto-confirm] include => macro-auto-confirm-custom exten => s,1,Set(__MACRO_RESULT=) exten => s,n,Noop(Deleting: ${BLKVM_OVERRIDE} ${DB_DELETE(${BLKVM_OVERRIDE})}) exten => s,n,Noop(Deleting: RG/${ARG1}/${UNIQCHAN} ${DB_DELETE(RG/${ARG1}/${UNIQCHAN})}) ; end of [macro-auto-confirm] [macro-auto-blkvm] include => macro-auto-blkvm-custom exten => s,1,Set(__MACRO_RESULT=) exten => s,n,Noop(Deleting: ${BLKVM_OVERRIDE} ${DB_DELETE(${BLKVM_OVERRIDE})}) ; end of [macro-auto-blkvm] [sub-pincheck] include => sub-pincheck-custom exten => s,1,Authenticate(${ARG3},) exten => s,n,ResetCDR() exten => s,n,Return() ; end of [sub-pincheck] [macro-dialout-trunk] include => macro-dialout-trunk-custom exten => s,1,Set(DIAL_TRUNK=${ARG1}) exten => s,n,GosubIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]]?sub-pincheck,s,1) exten => s,n,GotoIf($["x${OUTDISABLE_${DIAL_TRUNK}}" = "xon"]?disabletrunk,1) exten => s,n,Set(DIAL_NUMBER=${ARG2}) exten => s,n,Set(DIAL_TRUNK_OPTIONS=${DIAL_OPTIONS}) exten => s,n,Set(OUTBOUND_GROUP=OUT_${DIAL_TRUNK}) exten => s,n,GotoIf($["${OUTMAXCHANS_${DIAL_TRUNK}}foo" = "foo"]?nomax) exten => s,n,GotoIf($[ ${GROUP_COUNT(OUT_${DIAL_TRUNK})} >= ${OUTMAXCHANS_${DIAL_TRUNK}} ]?chanfull) exten => s,n(nomax),GotoIf($["${INTRACOMPANYROUTE}" = "YES"]?skipoutcid) exten => s,n,Set(DIAL_TRUNK_OPTIONS=${TRUNK_OPTIONS}) exten => s,n,Macro(outbound-callerid,${DIAL_TRUNK}) exten => s,n(skipoutcid),GosubIf($["${PREFIX_TRUNK_${DIAL_TRUNK}}" != ""]?sub-flp-${DIAL_TRUNK},s,1) exten => s,n,Set(OUTNUM=${OUTPREFIX_${DIAL_TRUNK}}${DIAL_NUMBER}) exten => s,n,Set(custom=${CUT(OUT_${DIAL_TRUNK},:,1)}) exten => s,n,ExecIf($[$["${MOHCLASS}" != "default"] & $["${MOHCLASS}" != ""]]?Set(DIAL_TRUNK_OPTIONS=M(setmusic^${MOHCLASS})${DIAL_TRUNK_OPTIONS})) exten => s,n(gocall),Macro(dialout-trunk-predial-hook,) exten => s,n,GotoIf($["${PREDIAL_HOOK_RET}" = "BYPASS"]?bypass,1) exten => s,n,GotoIf($["${custom}" = "AMP"]?customtrunk) exten => s,n,Dial(${OUT_${DIAL_TRUNK}}/${OUTNUM},300,${DIAL_TRUNK_OPTIONS}) exten => s,n,Noop(Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE}) exten => s,n,Goto(s-${DIALSTATUS},1) exten => s,n(customtrunk),Set(pre_num=${CUT(OUT_${DIAL_TRUNK},$,1)}) exten => s,n,Set(the_num=${CUT(OUT_${DIAL_TRUNK},$,2)}) exten => s,n,Set(post_num=${CUT(OUT_${DIAL_TRUNK},$,3)}) exten => s,n,GotoIf($["${the_num}" = "OUTNUM"]?outnum:skipoutnum) exten => s,n(outnum),Set(the_num=${OUTNUM}) exten => s,n(skipoutnum),Dial(${pre_num:4}${the_num}${post_num},300,${DIAL_TRUNK_OPTIONS}) exten => s,n,Noop(Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE}) exten => s,n,Goto(s-${DIALSTATUS},1) exten => s,n(chanfull),Noop(max channels used up) exten => s-BUSY,1,Noop(Dial failed due to trunk reporting BUSY - giving up) exten => s-BUSY,n,Playtones(busy) exten => s-BUSY,n,Busy(20) exten => s-ANSWER,1,Noop(Call successfully answered - Hanging up now) exten => s-ANSWER,n,Macro(hangupcall,) exten => s-NOANSWER,1,Noop(Dial failed due to trunk reporting NOANSWER - giving up) exten => s-NOANSWER,n,Progress exten => s-NOANSWER,n,Playback(number-not-answering,noanswer) exten => s-NOANSWER,n,Congestion(20) exten => s-INVALIDNMBR,1,Noop(Dial failed due to trunk reporting Address Incomplete - giving up) exten => s-INVALIDNMBR,n,Progress exten => s-INVALIDNMBR,n,Playback(ss-noservice,noanswer) exten => s-INVALIDNMBR,n,Busy(20) exten => s-CHANGED,1,Noop(Dial failed due to trunk reporting Number Changed - giving up) exten => s-CHANGED,n,Playtones(busy) exten => s-CHANGED,n,Busy(20) exten => _s-.,1,Set(RC=${IF($[${ISNULL(${HANGUPCAUSE})}]?0:${HANGUPCAUSE})}) exten => _s-.,n,Goto(${RC},1) exten => 17,1,Goto(s-BUSY,1) exten => 18,1,Goto(s-NOANSWER,1) exten => 22,1,Goto(s-CHANGED,1) exten => 23,1,Goto(s-CHANGED,1) exten => 28,1,Goto(s-INVALIDNMBR,1) exten => _X,1,Goto(continue,1) exten => _X.,1,Goto(continue,1) exten => continue,1,GotoIf($["${OUTFAIL_${ARG1}}" = ""]?noreport) exten => continue,n,AGI(${OUTFAIL_${ARG1}}) exten => continue,n(noreport),Noop(TRUNK Dial failed due to ${DIALSTATUS} HANGUPCAUSE: ${HANGUPCAUSE} - failing through to other trunks) exten => continue,n,Set(CALLERID(number)=${AMPUSER}) exten => disabletrunk,1,Noop(TRUNK: ${OUT_${DIAL_TRUNK}} DISABLED - falling through to next trunk) exten => bypass,1,Noop(TRUNK: ${OUT_${DIAL_TRUNK}} BYPASSING because dialout-trunk-predial-hook) exten => h,1,Macro(hangupcall,) ; end of [macro-dialout-trunk] [macro-dialout-dundi] include => macro-dialout-dundi-custom exten => s,1,Set(DIAL_TRUNK=${ARG1}) exten => s,n,GosubIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]]?sub-pincheck,s,1) exten => s,n,GotoIf($["x${OUTDISABLE_${DIAL_TRUNK}}" = "xon"]?disabletrunk,1) exten => s,n,Set(DIAL_NUMBER=${ARG2}) exten => s,n,Set(DIAL_TRUNK_OPTIONS=${DIAL_OPTIONS}) exten => s,n,Set(OUTBOUND_GROUP=OUT_${DIAL_TRUNK}) exten => s,n,GotoIf($["${OUTMAXCHANS_${DIAL_TRUNK}}foo" = "foo"]?nomax) exten => s,n,GotoIf($[ ${GROUP_COUNT(OUT_${DIAL_TRUNK})} >= ${OUTMAXCHANS_${DIAL_TRUNK}} ]?chanfull) exten => s,n(nomax),GotoIf($["${INTRACOMPANYROUTE}" = "YES"]?skipoutcid) exten => s,n,Set(DIAL_TRUNK_OPTIONS=${TRUNK_OPTIONS}) exten => s,n,Macro(outbound-callerid,${DIAL_TRUNK}) exten => s,n(skipoutcid),GosubIf($["${PREFIX_TRUNK_${DIAL_TRUNK}}" != ""]?sub-flp-${DIAL_TRUNK},s,1) exten => s,n,Set(OUTNUM=${OUTPREFIX_${DIAL_TRUNK}}${DIAL_NUMBER}) exten => s,n,ExecIf($[$["${MOHCLASS}" != "default"] & $["${MOHCLASS}" != ""]]?Set(DIAL_TRUNK_OPTIONS=M(setmusic^${MOHCLASS})${DIAL_TRUNK_OPTIONS})) exten => s,n(gocall),Macro(dialout-dundi-predial-hook,) exten => s,n,GotoIf($["${PREDIAL_HOOK_RET}" = "BYPASS"]?bypass,1) exten => s,n,Macro(dundi-${DIAL_TRUNK},${OUTNUM}) exten => s,n,Goto(s-${DIALSTATUS},1) exten => s,n(chanfull),Noop(max channels used up) exten => s-BUSY,1,Noop(Dial failed due to trunk reporting BUSY - giving up) exten => s-BUSY,n,Playtones(busy) exten => s-BUSY,n,Busy(20) exten => s-ANSWER,1,Noop(Call successfully answered - Hanging up now) exten => s-ANSWER,n,Macro(hangupcall,) exten => s-NOANSWER,1,Noop(Dial failed due to trunk reporting NOANSWER - giving up) exten => s-NOANSWER,n,Progress exten => s-NOANSWER,n,Playback(number-not-answering,noanswer) exten => s-NOANSWER,n,Congestion(20) exten => s-INVALIDNMBR,1,Noop(Dial failed due to trunk reporting Address Incomplete - giving up) exten => s-INVALIDNMBR,n,Progress exten => s-INVALIDNMBR,n,Playback(ss-noservice,noanswer) exten => s-INVALIDNMBR,n,Busy(20) exten => s-CHANGED,1,Noop(Dial failed due to trunk reporting Number Changed - giving up) exten => s-CHANGED,n,Playtones(busy) exten => s-CHANGED,n,Busy(20) exten => _s-.,1,Set(RC=${IF($[${ISNULL(${HANGUPCAUSE})}]?0:${HANGUPCAUSE})}) exten => _s-.,n,Goto(${RC},1) exten => 17,1,Goto(s-BUSY,1) exten => 18,1,Goto(s-NOANSWER,1) exten => 22,1,Goto(s-CHANGED,1) exten => 23,1,Goto(s-CHANGED,1) exten => 28,1,Goto(s-INVALIDNMBR,1) exten => _X,1,Goto(continue,1) exten => _X.,1,Goto(continue,1) exten => continue,1,GotoIf($["${OUTFAIL_${ARG1}}" = ""]?noreport) exten => continue,n,AGI(${OUTFAIL_${ARG1}}) exten => continue,n(noreport),Noop(TRUNK Dial failed due to ${DIALSTATUS} HANGUPCAUSE: ${HANGUPCAUSE} - failing through to other trunks) exten => continue,n,Set(CALLERID(number)=${AMPUSER}) exten => disabletrunk,1,Noop(TRUNK: ${OUT_${DIAL_TRUNK}} DISABLED - falling through to next trunk) exten => bypass,1,Noop(TRUNK: ${OUT_${DIAL_TRUNK}} BYPASSING because dialout-dundi-predial-hook) exten => h,1,Macro(hangupcall,) ; end of [macro-dialout-dundi] [macro-user-callerid] include => macro-user-callerid-custom exten => s,1,Set(AMPUSER=${IF($["foo${AMPUSER}" = "foo"]?${CALLERID(number)}:${AMPUSER})}) exten => s,n,GotoIf($["${CHANNEL:0:5}" = "Local"]?report) exten => s,n,ExecIf($["${REALCALLERIDNUM:1:2}" = ""]?Set(REALCALLERIDNUM=${CALLERID(number)})) exten => s,n,Set(AMPUSER=${DB(DEVICE/${REALCALLERIDNUM}/user)}) exten => s,n,Set(AMPUSERCIDNAME=${DB(AMPUSER/${AMPUSER}/cidname)}) exten => s,n,GotoIf($["x${AMPUSERCIDNAME:1:2}" = "x"]?report) exten => s,n,Set(AMPUSERCID=${IF($["${DB_EXISTS(AMPUSER/${AMPUSER}/cidnum)}" = "1"]?${DB_RESULT}:${AMPUSER})}) exten => s,n,Set(CALLERID(all)="${AMPUSERCIDNAME}" <${AMPUSERCID}>) exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/language)}" != ""]?Set(CHANNEL(language)=${DB(AMPUSER/${AMPUSER}/language)})) exten => s,n(report),GotoIf($[ "${ARG1}" = "SKIPTTL" ]?continue) exten => s,n(report2),Set(__TTL=${IF($["foo${TTL}" = "foo"]?64:$[ ${TTL} - 1 ])}) exten => s,n,GotoIf($[ ${TTL} > 0 ]?continue) exten => s,n,Wait(${RINGTIMER}) exten => s,n,Answer exten => s,n,Wait(2) exten => s,n,Playback(im-sorry&an-error-has-occured&with&call-forwarding) exten => s,n,Macro(hangupcall,) exten => s,n,Congestion(20) exten => s,n(continue),Set(CALLERID(number)=${CALLERID(number):0:40}) exten => s,n,Set(CALLERID(name)=${CALLERID(name):0:40}) exten => s,n,Noop(Using CallerID ${CALLERID(all)}) exten => h,1,Macro(hangupcall,) ; end of [macro-user-callerid] [macro-dialout-enum] include => macro-dialout-enum-custom exten => s,1,GosubIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]]?sub-pincheck,s,1) exten => s,n,Macro(outbound-callerid,${ARG1}) exten => s,n,Set(OUTBOUND_GROUP=OUT_${ARG1}) exten => s,n,GotoIf($["${OUTMAXCHANS_${ARG1}}foo" = "foo"]?nomax) exten => s,n,GotoIf($[ ${GROUP_COUNT(OUT_${ARG1})} >= ${OUTMAXCHANS_${ARG1}} ]?nochans) exten => s,n(nomax),Set(DIAL_NUMBER=${ARG2}) exten => s,n,Set(DIAL_TRUNK=${ARG1}) exten => s,n,GosubIf($["${PREFIX_TRUNK_${DIAL_TRUNK}}" != ""]?sub-flp-${DIAL_TRUNK},s,1) exten => s,n,AGI(enumlookup.agi) exten => s,n(dialloop),GotoIf($["foo${DIALARR}"="foo"]?s-${DIALSTATUS},1) exten => s,n,Set(TRYDIAL=${CUT(DIALARR,%,1)}) exten => s,n,Set(DIALARR=${CUT(DIALARR,%,2-)}) exten => s,n,Dial(${TRYDIAL},) exten => s,n,GotoIf($[ $[ "${DIALSTATUS}" = "CHANUNAVAIL" ] | $[ "${DIALSTATUS}" = "CONGESTION" ] ]?dialloop:s-${DIALSTATUS},1) exten => s,n(nochans),Noop(max channels used up) exten => s-BUSY,1,Noop(Dial failed due to trunk reporting BUSY - giving up) exten => s-BUSY,n,Playtones(busy) exten => s-BUSY,n,Busy(20) exten => s-ANSWER,1,Noop(Call successfully answered - Hanging up now) exten => s-ANSWER,n,Macro(hangupcall,) exten => s-NOANSWER,1,Noop(Dial failed due to trunk reporting NOANSWER - giving up) exten => s-NOANSWER,n,Progress exten => s-NOANSWER,n,Playback(number-not-answering,noanswer) exten => s-NOANSWER,n,Congestion(20) exten => s-INVALIDNMBR,1,Noop(Dial failed due to trunk reporting Address Incomplete - giving up) exten => s-INVALIDNMBR,n,Progress exten => s-INVALIDNMBR,n,Playback(ss-noservice,noanswer) exten => s-INVALIDNMBR,n,Busy(20) exten => s-CHANGED,1,Noop(Dial failed due to trunk reporting Number Changed - giving up) exten => s-CHANGED,n,Playtones(busy) exten => s-CHANGED,n,Busy(20) exten => _s-.,1,Set(RC=${IF($[${ISNULL(${HANGUPCAUSE})}]?0:${HANGUPCAUSE})}) exten => _s-.,n,Goto(${RC},1) exten => 17,1,Goto(s-BUSY,1) exten => 18,1,Goto(s-NOANSWER,1) exten => 22,1,Goto(s-CHANGED,1) exten => 23,1,Goto(s-CHANGED,1) exten => 28,1,Goto(s-INVALIDNMBR,1) exten => _X,1,Goto(continue,1) exten => _X.,1,Goto(continue,1) exten => continue,1,GotoIf($["${OUTFAIL_${ARG1}}" = ""]?noreport) exten => continue,n,AGI(${OUTFAIL_${ARG1}}) exten => continue,n(noreport),Noop(TRUNK Dial failed due to ${DIALSTATUS} HANGUPCAUSE: ${HANGUPCAUSE} - failing through to other trunks) exten => continue,n,Set(CALLERID(number)=${AMPUSER}) exten => disabletrunk,1,Noop(TRUNK: ${OUT_${DIAL_TRUNK}} DISABLED - falling through to next trunk) exten => bypass,1,Noop(TRUNK: ${OUT_${DIAL_TRUNK}} BYPASSING because dialout-trunk-predial-hook) exten => h,1,Macro(hangupcall,) ; end of [macro-dialout-enum] [macro-outbound-callerid] include => macro-outbound-callerid-custom exten => s,1,ExecIf($["${CALLINGPRES_SV}" != ""]?Set(CALLERPRES()=${CALLINGPRES_SV})) exten => s,n,ExecIf($["${REALCALLERIDNUM:1:2}" = ""]?Set(REALCALLERIDNUM=${CALLERID(number)})) exten => s,n(start),GotoIf($[ $["${REALCALLERIDNUM}" = ""] | $["${KEEPCID}" != "TRUE"] | $["${OUTKEEPCID_${ARG1}}" = "on"] ]?normcid) exten => s,n,Set(USEROUTCID=${REALCALLERIDNUM}) exten => s,n,GotoIf($["foo${DB(AMPUSER/${REALCALLERIDNUM}/device)}" = "foo"]?bypass) exten => s,n(normcid),Set(USEROUTCID=${DB(AMPUSER/${AMPUSER}/outboundcid)}) exten => s,n(bypass),Set(EMERGENCYCID=${DB(DEVICE/${REALCALLERIDNUM}/emergency_cid)}) exten => s,n,Set(TRUNKOUTCID=${OUTCID_${ARG1}}) exten => s,n,GotoIf($["${EMERGENCYROUTE:1:2}" = "" | "${EMERGENCYCID:1:2}" = ""]?trunkcid) exten => s,n,Set(CALLERID(all)=${EMERGENCYCID}) exten => s,n(exit),MacroExit() exten => s,n(trunkcid),ExecIf($[${LEN(${TRUNKOUTCID})} != 0]?Set(CALLERID(all)=${TRUNKOUTCID})) exten => s,n(usercid),ExecIf($[${LEN(${USEROUTCID})} != 0]?Set(CALLERID(all)=${USEROUTCID})) exten => s,n,ExecIf($[${LEN(${TRUNKCIDOVERRIDE})} != 0 | ${LEN(${FORCEDOUTCID_${ARG1}})} != 0]?Set(CALLERID(all)=${IF($[${LEN(${FORCEDOUTCID_${ARG1}})}=0]?${TRUNKCIDOVERRIDE}:${FORCEDOUTCID_${ARG1}})})) exten => s,n(hidecid),ExecIf($["${CALLERID(name)}"="hidden"]?Set(CALLERPRES()=prohib_passed_screen)) ; end of [macro-outbound-callerid] [from-zaptel] include => from-zaptel-custom include => from-dahdi exten => foo,1,Noop(bar) ; end of [from-zaptel] [from-dahdi] include => from-dahdi-custom exten => _X.,1,Set(DID=${EXTEN}) exten => _X.,n,Goto(s,1) exten => s,1,Noop(Entering from-dahdi with DID == ${DID}) exten => s,n,Ringing() exten => s,n,Set(DID=${IF($["${DID}"= ""]?s:${DID})}) exten => s,n,Noop(DID is now ${DID}) exten => s,n,GotoIf($["${CHANNEL:0:5}"="DAHDI"]?dahdiok:checkzap) exten => s,n(checkzap),GotoIf($["${CHANNEL:0:3}"="Zap"]?zapok:neither) exten => s,n(neither),Goto(from-pstn,${DID},1) exten => s,n,Macro(Hangupcall,dummy) exten => s,n(dahdiok),Noop(Is a DAHDI Channel) exten => s,n,Set(CHAN=${CHANNEL:6}) exten => s,n,Set(CHAN=${CUT(CHAN,-,1)}) exten => s,n,Macro(from-dahdi-${CHAN},${DID},1) exten => s,n,Noop(Returned from Macro from-dahdi-${CHAN}) exten => s,n,Goto(from-pstn,${DID},1) exten => s,n(zapok),Noop(Is a Zaptel Channel) exten => s,n,Set(CHAN=${CHANNEL:4}) exten => s,n,Set(CHAN=${CUT(CHAN,-,1)}) exten => s,n,Macro(from-dahdi-${CHAN},${DID},1) exten => s,n,Noop(Returned from Macro from-dahdi-${CHAN}) exten => s,n,Goto(from-pstn,${DID},1) ; end of [from-dahdi] [vm-callme] include => vm-callme-custom exten => s,1,Answer exten => s,n,Wait(1) exten => s,n(repeat),Background(${MSG}&silence/2&vm-repeat&vm-starmain) exten => s,n,WaitExten(15,) exten => 5,1,Goto(s,repeat) exten => #,1,Playback(vm-goodbye) exten => #,n,Hangup exten => *,1,Macro(get-vmcontext,${MBOX}) exten => *,n,VoiceMailMain(${MBOX}@${VMCONTEXT},s) exten => i,1,Playback(pm-invalid-option) exten => i,n,Goto(s,repeat) exten => t,1,Playback(vm-goodbye) exten => t,n,Hangup exten => h,1,Hangup exten => s-ANSWER,1,Noop(Call successfully answered - Hanging up now) exten => s-ANSWER,n,Macro(hangupcall,) ; end of [vm-callme] [macro-vm] include => macro-vm-custom exten => s,1,Macro(user-callerid,SKIPTTL) exten => s,n,Set(VMGAIN=${IF($["foo${VM_GAIN}"!="foo"]?"g(${VM_GAIN})":"")}) exten => s,n,GotoIf($["foo${DB(${BLKVM_OVERRIDE})}" != "fooTRUE"]?vmx,1) exten => s,n,Noop(CAME FROM: ${NODEST} - Blocking VM cause of key: ${DB(BLKVM_OVERRIDE)}) exten => s,n,Hangup exten => vmx,1,Set(MEXTEN=${ARG1}) exten => vmx,n,Set(MMODE=${ARG2}) exten => vmx,n,Set(RETVM=${ARG3}) exten => vmx,n,Set(MODE=${IF($["${MMODE}"="BUSY"]?busy:unavail)}) exten => vmx,n,GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/vmxopts/timeout)}" = "0"]?chknomsg) exten => vmx,n,Set(VM_OPTS=${DB_RESULT}) exten => vmx,n(chknomsg),GotoIf($["${MMODE}"="NOMESSAGE"]?s-${MMODE},1) exten => vmx,n,GotoIf($["${MMODE}" != "DIRECTDIAL"]?notdirect) exten => vmx,n,Set(MODE=${IF($["${REGEX("[b]" ${VM_DDTYPE})}" = "1"]?busy:${MODE})}) exten => vmx,n(notdirect),Noop(Checking if ext ${MEXTEN} is enabled: ${DB(AMPUSER/${MEXTEN}/vmx/${MODE}/state)}) exten => vmx,n,GotoIf($["${DB(AMPUSER/${MEXTEN}/vmx/${MODE}/state)}" != "enabled"]?s-${MMODE},1) exten => vmx,n,Macro(get-vmcontext,${MEXTEN}) exten => vmx,n,GotoIf($[(${STAT(f,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${MEXTEN}/temp.wav)} = 1) || (${STAT(f,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${MEXTEN}/temp.WAV)} = 1)]?tmpgreet) exten => vmx,n,GotoIf($[(${STAT(f,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${MEXTEN}/${MODE}.wav)} = 0) && (${STAT(f,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${MEXTEN}/${MODE}.WAV)} = 0)]?nofile) exten => vmx,n,Set(LOOPCOUNT=0) exten => vmx,n,GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/repeat)}" = "0"]?vmxtime) exten => vmx,n,Set(VMX_REPEAT=${DB_RESULT}) exten => vmx,n(vmxtime),GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/timeout)}" = "0"]?vmxloops) exten => vmx,n,Set(VMX_TIMEOUT=${DB_RESULT}) exten => vmx,n(vmxloops),GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/loops)}" = "0"]?vmxanswer) exten => vmx,n,Set(VMX_LOOPS=${DB_RESULT}) exten => vmx,n(vmxanswer),Answer exten => vmx,n(loopstart),Read(ACTION,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${MEXTEN}/${MODE},1,skip,${VMX_REPEAT},${VMX_TIMEOUT}) exten => vmx,n,GotoIf($["${EXISTS(${ACTION})}" = "1"]?checkopt) exten => vmx,n(noopt),Noop(Timeout: going to timeout dest) exten => vmx,n,Set(VMX_OPTS=${VMX_OPTS_TIMEOUT}) exten => vmx,n,GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/vmxopts/timeout)}" = "0"]?chktime) exten => vmx,n,Set(VMX_OPTS=${DB_RESULT}) exten => vmx,n(chktime),GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/timedest/ext)}" = "0"]?dotime) exten => vmx,n,Set(VMX_TIMEDEST_EXT=${DB_RESULT}) exten => vmx,n,GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/timedest/context)}" = "0"]?timepri) exten => vmx,n,Set(VMX_TIMEDEST_CONTEXT=${DB_RESULT}) exten => vmx,n(timepri),GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/timedest/pri)}" = "0"]?dotime) exten => vmx,n,Set(VMX_TIMEDEST_PRI=${DB_RESULT}) exten => vmx,n(dotime),Goto(${VMX_TIMEDEST_CONTEXT},${VMX_TIMEDEST_EXT},${VMX_TIMEDEST_PRI}) exten => vmx,n(checkopt),GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/${ACTION}/ext)}" = "1"]?doopt) exten => vmx,n,GotoIf($["${ACTION}" = "0"]?o,1) exten => vmx,n,GotoIf($["${ACTION}" = "*"]?adef,1) exten => vmx,n,Set(LOOPCOUNT=$[${LOOPCOUNT} + 1]) exten => vmx,n,GotoIf($[${LOOPCOUNT} > ${VMX_LOOPS}]?toomany) exten => vmx,n,Playback(pm-invalid-option&please-try-again) exten => vmx,n,Goto(loopstart) exten => vmx,n(toomany),Noop(Too Many invalid entries, got to invalid dest) exten => vmx,n,Set(VMX_OPTS=${VMX_OPTS_LOOPS}) exten => vmx,n,GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/vmxopts/loops)}" = "0"]?chkloop) exten => vmx,n,Set(VMX_OPTS=${DB_RESULT}) exten => vmx,n(chkloop),GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/loopdest/ext)}" = "0"]?doloop) exten => vmx,n,Set(VMX_LOOPDEST_EXT=${DB_RESULT}) exten => vmx,n,GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/loopdest/context)}" = "0"]?looppri) exten => vmx,n,Set(VMX_LOOPDEST_CONTEXT=${DB_RESULT}) exten => vmx,n(looppri),GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/loopdest/pri)}" = "0"]?doloop) exten => vmx,n,Set(VMX_LOOPDEST_PRI=${DB_RESULT}) exten => vmx,n(doloop),Goto(${VMX_LOOPDEST_CONTEXT},${VMX_LOOPDEST_EXT},${VMX_LOOPDEST_PRI}) exten => vmx,n(doopt),Noop(Got a valid option: ${DB_RESULT}) exten => vmx,n,Set(VMX_EXT=${DB_RESULT}) exten => vmx,n,GotoIf($["${VMX_EXT}" != "dovm"]?getdest) exten => vmx,n(vmxopts),Set(VMX_OPTS=${VMX_OPTS_DOVM}) exten => vmx,n,GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/vmxopts/dovm)}" = "0"]?vmxdovm) exten => vmx,n(vmxopts),Set(VMX_OPTS=${DB_RESULT}) exten => vmx,n(vmxdovm),Goto(dovm,1) exten => vmx,n(getdest),GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/${ACTION}/context)}" = "0"]?vmxpri) exten => vmx,n,Set(VMX_CONTEXT=${DB_RESULT}) exten => vmx,n(vmxpri),GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/${ACTION}/pri)}" = "0"]?vmxgoto) exten => vmx,n,Set(VMX_PRI=${DB_RESULT}) exten => vmx,n(vmxgoto),Goto(${VMX_CONTEXT},${VMX_EXT},${VMX_PRI}) exten => vmx,n(nofile),Noop(File for mode: ${MODE} does not exist, SYSTEMSTATUS: ${SYSTEMSTATUS}, going to normal voicemail) exten => vmx,n,Goto(s-${MMODE},1) exten => vmx,n(tmpgreet),Noop(Temporary Greeting Detected, going to normal voicemail) exten => vmx,n,Goto(s-${MMODE},1) exten => dovm,1,Noop(VMX Timeout - go to voicemail) exten => dovm,n,VoiceMail(${MEXTEN}@${VMCONTEXT},${VMX_OPTS}${VMGAIN}) exten => dovm,n,Goto(exit-${VMSTATUS},1) exten => s-BUSY,1,Noop(BUSY voicemail) exten => s-BUSY,n,Macro(get-vmcontext,${MEXTEN}) exten => s-BUSY,n,VoiceMail(${MEXTEN}@${VMCONTEXT},${VM_OPTS}b${VMGAIN}) exten => s-BUSY,n,Goto(exit-${VMSTATUS},1) exten => s-NOMESSAGE,1,Noop(NOMESSAGE (beeb only) voicemail) exten => s-NOMESSAGE,n,Macro(get-vmcontext,${MEXTEN}) exten => s-NOMESSAGE,n,VoiceMail(${MEXTEN}@${VMCONTEXT},s${VM_OPTS}${VMGAIN}) exten => s-NOMESSAGE,n,Goto(exit-${VMSTATUS},1) exten => s-DIRECTDIAL,1,Noop(DIRECTDIAL voicemail) exten => s-DIRECTDIAL,n,Macro(get-vmcontext,${MEXTEN}) exten => s-DIRECTDIAL,n,VoiceMail(${MEXTEN}@${VMCONTEXT},${VM_OPTS}${VM_DDTYPE}${VMGAIN}) exten => s-DIRECTDIAL,n,Goto(exit-${VMSTATUS},1) exten => _s-.,1,Macro(get-vmcontext,${MEXTEN}) exten => _s-.,n,VoiceMail(${MEXTEN}@${VMCONTEXT},${VM_OPTS}u${VMGAIN}) exten => _s-.,n,Goto(exit-${VMSTATUS},1) exten => o,1,Playback(one-moment-please) exten => o,n,GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/0/ext)}" = "0"]?doopdef) exten => o,n,Set(VMX_OPDEST_EXT=${DB_RESULT}) exten => o,n,GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/0/context)}" = "1"]?opcontext) exten => o,n,Set(DB_RESULT=${VMX_CONTEXT}) exten => o,n(opcontext),Set(VMX_OPDEST_CONTEXT=${DB_RESULT}) exten => o,n,GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/0/pri)}" = "1"]?oppri) exten => o,n,Set(DB_RESULT=${VMX_PRI}) exten => o,n(oppri),Set(VMX_OPDEST_PRI=${DB_RESULT}) exten => o,n,Goto(${VMX_OPDEST_CONTEXT},${VMX_OPDEST_EXT},${VMX_OPDEST_PRI}) exten => o,n(doopdef),GotoIf($["x${OPERATOR_XTN}"="x"]?nooper:from-internal,${OPERATOR_XTN},1) exten => o,n(nooper),GotoIf($["x${FROM_DID}"="x"]?nodid) exten => o,n,Dial(Local/${FROM_DID}@from-pstn,) exten => o,n,Macro(hangup,) exten => o,n(nodid),Dial(Local/s@from-pstn,) exten => o,n,Macro(hangup,) exten => a,1,Macro(get-vmcontext,${MEXTEN}) exten => a,n,GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/*/ext)}" = "0"]?adef,1) exten => a,n,Set(VMX_ADEST_EXT=${DB_RESULT}) exten => a,n,GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/*/context)}" = "1"]?acontext) exten => a,n,Set(DB_RESULT=${VMX_CONTEXT}) exten => a,n(acontext),Set(VMX_ADEST_CONTEXT=${DB_RESULT}) exten => a,n,GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/*/pri)}" = "1"]?apri) exten => a,n,Set(DB_RESULT=${VMX_PRI}) exten => a,n(apri),Set(VMX_ADEST_PRI=${DB_RESULT}) exten => a,n,Goto(${VMX_ADEST_CONTEXT},${VMX_ADEST_EXT},${VMX_ADEST_PRI}) exten => adef,1,VoiceMailMain(${MEXTEN}@${VMCONTEXT}) exten => adef,n,GotoIf($["${RETVM}" = "RETURN"]?exit-RETURN,1) exten => adef,n,Hangup exten => exit-FAILED,1,Playback(im-sorry&an-error-has-occured) exten => exit-FAILED,n,GotoIf($["${RETVM}" = "RETURN"]?exit-RETURN,1) exten => exit-FAILED,n,Hangup exten => exit-SUCCESS,1,GotoIf($["${RETVM}" = "RETURN"]?exit-RETURN,1) exten => exit-SUCCESS,n,Playback(goodbye) exten => exit-SUCCESS,n,Hangup exten => exit-USEREXIT,1,GotoIf($["${RETVM}" = "RETURN"]?exit-RETURN,1) exten => exit-USEREXIT,n,Playback(goodbye) exten => exit-USEREXIT,n,Hangup exten => exit-RETURN,1,Noop(Returning From Voicemail because macro) exten => t,1,Hangup ; end of [macro-vm] [macro-exten-vm] include => macro-exten-vm-custom exten => s,1,Macro(user-callerid,) exten => s,n,Set(RingGroupMethod=none) exten => s,n,Set(VMBOX=${ARG1}) exten => s,n,Set(__EXTTOCALL=${ARG2}) exten => s,n,Set(CFUEXT=${DB(CFU/${EXTTOCALL})}) exten => s,n,Set(CFBEXT=${DB(CFB/${EXTTOCALL})}) exten => s,n,Set(RT=${IF($[$["${VMBOX}"!="novm"] | $["${CFUEXT}"!=""]]?${RINGTIMER}:"")}) exten => s,n(checkrecord),Macro(record-enable,${EXTTOCALL},IN) exten => s,n(macrodial),Macro(dial-one,${RT},${DIAL_OPTIONS},${EXTTOCALL}) exten => s,n,GotoIf($["${VMBOX}"!="novm" & "${SCREEN}"!="" & "${DIALSTATUS}"="NOANSWER"]?exit) exten => s,n,Set(SV_DIALSTATUS=${DIALSTATUS}) exten => s,n(calldocfu),GosubIf($[("${SV_DIALSTATUS}"="NOANSWER"|"${SV_DIALSTATUS}"="CHANUNAVAIL") & "${CFUEXT}"!="" & "${SCREEN}"=""]?docfu,1) exten => s,n(calldocfb),GosubIf($["${SV_DIALSTATUS}"="BUSY" & "${CFBEXT}"!=""]?docfb,1) exten => s,n,Set(DIALSTATUS=${SV_DIALSTATUS}) exten => s,n,Noop(Voicemail is '${VMBOX}') exten => s,n,GotoIf($["${VMBOX}"="novm"]?s-${DIALSTATUS},1) exten => s,n,Noop(Sending to Voicemail box ${EXTTOCALL}) exten => s,n,Macro(vm,${VMBOX},${DIALSTATUS},${IVR_RETVM}) exten => docfu,1(docfu),Set(RTCFU=${IF($["${VMBOX}"!="novm"]?${RINGTIMER}:"")}) exten => docfu,n,Dial(Local/${CFUEXT}@from-internal/n,${RTCFU},${DIAL_OPTIONS}) exten => docfu,n,Return() exten => docfb,1(docfb),Set(RTCFB=${IF($["${VMBOX}"!="novm"]?${RINGTIMER}:"")}) exten => docfb,n,Dial(Local/${CFBEXT}@from-internal/n,${RTCFB},${DIAL_OPTIONS}) exten => docfb,n,Return() exten => s-BUSY,1,Noop(Extension is reporting BUSY and not passing to Voicemail) exten => s-BUSY,n,GotoIf($["${IVR_RETVM}"="RETURN" & "${IVR_CONTEXT}"!=""]?exit,1) exten => s-BUSY,n,Playtones(busy) exten => s-BUSY,n,Busy(20) exten => _s-!,1,Noop(IVR_RETVM: ${IVR_RETVM} IVR_CONTEXT: ${IVR_CONTEXT}) exten => _s-!,n,GotoIf($["${IVR_RETVM}"="RETURN" & "${IVR_CONTEXT}"!=""]?exit,1) exten => _s-!,n,Playtones(congestion) exten => _s-!,n,Congestion(10) exten => exit,1,Playback(beep&line-busy-transfer-menu&silence/1) exten => exit,n,MacroExit() ; end of [macro-exten-vm] [macro-simple-dial] include => macro-simple-dial-custom exten => s,1,Set(__EXTTOCALL=${ARG1}) exten => s,n,Set(RT=${ARG2}) exten => s,n,Set(CFUEXT=${DB(CFU/${EXTTOCALL})}) exten => s,n,Set(CFBEXT=${DB(CFB/${EXTTOCALL})}) exten => s,n,Set(CWI_TMP=${CWIGNORE}) exten => s,n(macrodial),Macro(dial-one,${RT},${DIAL_OPTIONS},${EXTTOCALL}) exten => s,n,Set(__CWIGNORE=${CWI_TMP}) exten => s,n,Set(PR_DIALSTATUS=${DIALSTATUS}) exten => s,n(calldocfu),GosubIf($["${PR_DIALSTATUS}"="NOANSWER" & "${CFUEXT}"!=""]?docfu,1) exten => s,n(calldocfb),GosubIf($["${PR_DIALSTATUS}"="BUSY" & "${CFBEXT}"!=""]?docfb,1) exten => s,n,Set(DIALSTATUS=${PR_DIALSTATUS}) exten => s,n,Goto(s-${DIALSTATUS},1) exten => docfu,1,GotoIf($["${DB(AMPUSER/${CFUEXT}/device)}" = "" ]?chlocal) exten => docfu,n,Dial(Local/${CFUEXT}@ext-local,${RT},${DIAL_OPTIONS}) exten => docfu,n,Return() exten => docfu,n(chlocal),Dial(Local/${CFUEXT}@from-internal/n,${RT},${DIAL_OPTIONS}) exten => docfu,n,Return() exten => docfb,1,GotoIf($["${DB(AMPUSER/${CFBEXT}/device)}" = "" ]?chlocal) exten => docfb,n,Dial(Local/${CFBEXT}@ext-local,${RT},${DIAL_OPTIONS}) exten => docfb,n,Return() exten => docfb,n(chlocal),Dial(Local/${CFBEXT}@from-internal/n,${RT},${DIAL_OPTIONS}) exten => docfb,n,Return() exten => _s-.,1,Noop(Extension is reporting ${EXTEN}) ; end of [macro-simple-dial] [macro-hangupcall] include => macro-hangupcall-custom exten => s,1(start),GotoIf($["${USE_CONFIRMATION}"="" | "${RINGGROUP_INDEX}"="" | "${CHANNEL}"!="${UNIQCHAN}"]?skiprg) exten => s,n,Noop(Cleaning Up Confirmation Flag: RG/${RINGGROUP_INDEX}/${CHANNEL}) exten => s,n(delrgi),Noop(Deleting: RG/${RINGGROUP_INDEX}/${CHANNEL} ${DB_DELETE(RG/${RINGGROUP_INDEX}/${CHANNEL})}) exten => s,n(skiprg),GotoIf($["${BLKVM_BASE}"="" | "BLKVM/${BLKVM_BASE}/${CHANNEL}"!="${BLKVM_OVERRIDE}"]?skipblkvm) exten => s,n,Noop(Cleaning Up Block VM Flag: ${BLKVM_OVERRIDE}) exten => s,n(delblkvm),Noop(Deleting: ${BLKVM_OVERRIDE} ${DB_DELETE(${BLKVM_OVERRIDE})}) exten => s,n(skipblkvm),GotoIf($["${FMGRP}"="" | "${FMUNIQUE}"="" | "${CHANNEL}"!="${FMUNIQUE}"]?theend) exten => s,n(delfmrgp),Noop(Deleting: FM/DND/${FMGRP}/${CHANNEL} ${DB_DELETE(FM/DND/${FMGRP}/${CHANNEL})}) exten => s,n(theend),Hangup ; end of [macro-hangupcall] [macro-dial-one] include => macro-dial-one-custom exten => s,1,Set(DEXTEN=${ARG3}) exten => s,n,Set(DIALSTATUS_CW=) exten => s,n,GosubIf($["${FROM_DID}"!="" & "${SCREEN}"="" & "${DB(AMPUSER/${DEXTEN}/screen)}"!=""]?screen,1) exten => s,n,GosubIf($["${DB(CF/${DEXTEN})}"!=""]?cf,1) exten => s,n,GotoIf($["${DEXTEN:-1}"="#" | "${DB(DND/${DEXTEN})}"=""]?skip1) exten => s,n,Set(DEXTEN=) exten => s,n,Set(DIALSTATUS=BUSY) exten => s,n(skip1),GotoIf($["${DEXTEN}"=""]?nodial) exten => s,n,GotoIf($["${DEXTEN:-1}"="#"]?continue) exten => s,n,Set(EXTHASCW=${IF($["${CWIGNORE}"!=""]?"":${DB(CW/${DEXTEN})})}) exten => s,n,GotoIf($["${EXTHASCW}"="" | "${DB(CFB/${DEXTEN})}"!="" | "${DB(CFU/${DEXTEN})}"!=""]?next1:cwinusebusy) exten => s,n(next1),GotoIf($["${DB(CFU/${DEXTEN})}"!="" & ("${EXTENSION_STATE(${DEXTEN})}"="UNAVAILABLE" | "${EXTENSION_STATE(${DEXTEN})}"="UNKNOWN")]?docfu:skip3) exten => s,n(docfu),Set(DEXTEN=) exten => s,n,Set(DIALSTATUS=NOANSWER) exten => s,n,Goto(nodial) exten => s,n(skip3),GotoIf($["${EXTHASCW}"="" | "${DB(CFB/${DEXTEN})}"!=""]?next2:continue) exten => s,n(next2),GotoIf($["${EXTENSION_STATE(${DEXTEN})}"="NOT_INUSE" | "${EXTENSION_STATE(${DEXTEN})}"="UNAVAILABLE" | "${EXTENSION_STATE(${DEXTEN})}"="UNKNOWN"]?continue) exten => s,n,ExecIf($["${DB(CFB/${DEXTEN})}"!="" & "${CFIGNORE}"=""]?Set(DIALSTATUS=BUSY)) exten => s,n,GotoIf($["${EXTHASCW}"!="" | "${DEXTEN:-1}"="#"]?cwinusebusy) exten => s,n,Set(DEXTEN=) exten => s,n,Set(DIALSTATUS=BUSY) exten => s,n,Goto(nodial) exten => s,n(cwinusebusy),GotoIf($["${EXTHASCW}"!="" & "${CWINUSEBUSY}"!=""]?next3:continue) exten => s,n(next3),ExecIf($["${EXTENSION_STATE(${DEXTEN})}"!="UNAVAILABLE" & "${EXTENSION_STATE(${DEXTEN})}"!="NOT_INUSE" & "${EXTENSION_STATE(${DEXTEN})}"!="UNKNOWN"]?Set(DIALSTATUS_CW=BUSY)) exten => s,n(continue),GotoIf($["${DEXTEN}"=""]?nodial) exten => s,n,GosubIf($["${DEXTEN:-1}"!="#"]?dstring,1:dlocal,1) exten => s,n,GotoIf($[${LEN(${DSTRING})}=0]?nodial) exten => s,n,GotoIf($["${DEXTEN:-1}"!="#"]?skiptrace) exten => s,n,GosubIf($[${REGEX("^[\+]?[0-9]+$" ${CALLERID(number)})} = 1]?ctset,1:ctclear,1) exten => s,n(skiptrace),Set(D_OPTIONS=${IF($["${NODEST}"!="" & ${REGEX("(M[(]auto-blkvm[)])" ${ARG2})} != 1]?${ARG2}M(auto-blkvm):${ARG2})}) exten => s,n,ExecIf($["${ALERT_INFO}"!=""]?SIPAddHeader(Alert-Info: ${ALERT_INFO})) exten => s,n,ExecIf($["${SIPADDHEADER}"!=""]?SIPAddHeader(${SIPADDHEADER})) exten => s,n,ExecIf($["${MOHCLASS}"!=""]?Set(CHANNEL(musicclass)=${MEETME_MUSIC})) exten => s,n,GosubIf($["${QUEUEWAIT}"!=""]?qwait,1) exten => s,n,Set(__CWIGNORE=${CWIGNORE}) exten => s,n,Set(__KEEPCID=TRUE) exten => s,n,Dial(${DSTRING},${ARG1},${D_OPTIONS}) exten => s,n,ExecIf($["${DIALSTATUS_CW}"!=""]?Set(DIALSTATUS=${DIALSTATUS_CW})) exten => s,n,GosubIf($["${SCREEN}"!=""|"${DIALSTATUS}"="ANSWER"]?s-${DIALSTATUS},1) exten => s,n,MacroExit() exten => s,n(nodial),ExecIf($["${DIALSTATUS}" = ""]?Set(DIALSTATUS=NOANSWER)) exten => s,n,Noop(Returned from dial-one with nothing to call and DIALSTATUS: ${DIALSTATUS}) exten => s,n,MacroExit() exten => h,1,Macro(hangupcall,) exten => screen,1,GotoIf($["${DB(AMPUSER/${DEXTEN}/screen)}"!="nomemory" | "${CALLERID(number)}"=""]?memory) exten => screen,n,ExecIf($[${REGEX("^[0-9a-zA-Z ]+$" ${CALLERID(number)})} = 1]?System(rm -f ${ASTVARLIBDIR}/sounds/priv-callerintros/${CALLERID(number)}.*)) exten => screen,n(memory),Set(__SCREEN=${DB(AMPUSER/${DEXTEN}/screen)}) exten => screen,n,Set(__SCREEN_EXTEN=${DEXTEN}) exten => screen,n,Set(ARG2=${ARG2}p) exten => screen,n,Return() exten => cf,1,Set(CFAMPUSER=${IF($["${AMPUSER}"=""]?${CALLERID(number)}:${AMPUSER})}) exten => cf,n,ExecIf($["${DB(CF/${DEXTEN})}"="${CFAMPUSER}" | "${DB(CF/${DEXTEN})}"="${REALCALLERIDNUM}" | "${CUT(CUT(BLINDTRANSFER,-,1),/,1)}" = "${DB(CF/${DEXTEN})}" | "${DEXTEN}"="${DB(CF/${DEXTEN})}"]?Return()) exten => cf,n,Set(DEXTEN=${IF($["${CFIGNORE}"=""]?"${DB(CF/${DEXTEN})}#":"")}) exten => cf,n,ExecIf($["${DEXTEN}"!=""]?Return()) exten => cf,n,Set(DIALSTATUS=NOANSWER) exten => cf,n,Return() exten => qwait,1,ExecIf($["${SAVEDCIDNAME}" = ""]?Set(__SAVEDCIDNAME=${CALLERID(name)})) exten => qwait,n,Set(ELAPSED=${MATH($[${EPOCH}+30-${QUEUEWAIT}]/60,int)}) exten => qwait,n,Set(CALLERID(name)=M${ELAPSED}:${SAVEDCIDNAME}) exten => qwait,n,Return() exten => ctset,1,Set(DB(CALLTRACE/${DEXTEN})=${CALLERID(number)}) exten => ctset,n,Return() exten => ctclear,1,Noop(Deleting: CALLTRACE/${DEXTEN} ${DB_DELETE(CALLTRACE/${DEXTEN})}) exten => ctclear,n,Return() exten => dstring,1,Set(DSTRING=) exten => dstring,n,Set(DEVICES=${DB(AMPUSER/${DEXTEN}/device)}) exten => dstring,n,ExecIf($["${DEVICES}"=""]?Return()) exten => dstring,n,ExecIf($["${DEVICES:0:1}"="&"]?Set(DEVICES=${DEVICES:1})) exten => dstring,n,Set(LOOPCNT=${FIELDQTY(DEVICES,&)}) exten => dstring,n,Set(ITER=1) exten => dstring,n(begin),Set(THISDIAL=${DB(DEVICE/${CUT(DEVICES,&,${ITER})}/dial)}) exten => dstring,n,GosubIf($["${ASTCHANDAHDI}" != ""]?zap2dahdi,1) exten => dstring,n,Set(DSTRING=${DSTRING}${THISDIAL}&) exten => dstring,n,Set(ITER=$[${ITER}+1]) exten => dstring,n,GotoIf($[${ITER}<=${LOOPCNT}]?begin) exten => dstring,n,Set(DSTRING=${DSTRING:0:$[${LEN(${DSTRING})}-1]}) exten => dstring,n,Return() exten => dlocal,1,Set(DSTRING=Local/${DEXTEN:0:${MATH(${LEN(${DEXTEN})}-1,int)}}@from-internal/n) exten => dlocal,n,Return() exten => zap2dahdi,1,ExecIf($["${THISDIAL}" = ""]?Return()) exten => zap2dahdi,n,Set(NEWDIAL=) exten => zap2dahdi,n,Set(LOOPCNT2=${FIELDQTY(THISDIAL,&)}) exten => zap2dahdi,n,Set(ITER2=1) exten => zap2dahdi,n(begin2),Set(THISPART2=${CUT(THISDIAL,&,${ITER2})}) exten => zap2dahdi,n,ExecIf($["${THISPART2:0:3}" = "ZAP"]?Set(THISPART2=DAHDI${THISPART2:3})) exten => zap2dahdi,n,Set(NEWDIAL=${NEWDIAL}${THISPART2}&) exten => zap2dahdi,n,Set(ITER2=$[${ITER2} + 1]) exten => zap2dahdi,n,GotoIf($[${ITER2} <= ${LOOPCNT2}]?begin2) exten => zap2dahdi,n,Set(THISDIAL=${NEWDIAL:0:$[${LEN(${NEWDIAL})}-1]}) exten => zap2dahdi,n,Return() exten => s-NOANSWER,1,Macro(vm,${SCREEN_EXTEN},BUSY,${IVR_RETVM}) exten => s-NOANSWER,n,ExecIf($["${IVR_RETVM}"!="RETURN" | "${IVR_CONTEXT}"=""]?Hangup()) exten => s-NOANSWER,n,Return() exten => s-TORTURE,1,Goto(app-blackhole,musiconhold,1) exten => s-TORTURE,n,Macro(hangupcall,) exten => s-DONTCALL,1,Answer exten => s-DONTCALL,n,Wait(1) exten => s-DONTCALL,n,Zapateller() exten => s-DONTCALL,n,Playback(ss-noservice) exten => s-DONTCALL,n,Macro(hangupcall,) ; end of [macro-dial-one] [from-internal-additional] include => from-internal-additional-custom include => app-speeddial include => app-cf-busy-off include => app-cf-busy-off-any include => app-cf-busy-on include => app-cf-off include => app-cf-off-any include => app-cf-on include => app-cf-unavailable-off include => app-cf-unavailable-on include => app-cf-toggle include => app-dnd-off include => app-dnd-on include => app-dnd-toggle include => app-gabcast include => vmblast-grp include => app-fmf-toggle include => ext-findmefollow include => fmgrps include => app-pbdirectory include => app-fax include => ext-queues include => app-queue-toggle include => app-languages include => app-recordings include => ext-meetme include => app-calltrace include => app-directory include => app-echo-test include => app-speakextennum include => app-speakingclock include => app-blacklist include => app-dictate-record include => app-dictate-send include => app-dialvm include => app-vmmain include => app-callwaiting-cwoff include => app-callwaiting-cwon include => ext-group include => grps include => ext-paging include => app-userlogonoff include => app-pickup include => app-zapbarge include => app-chanspy include => ext-local include => outbound-allroutes exten => h,1,Hangup ; end of [from-internal-additional]