PBX in a Flash for Newbies

/etc/asterisk/extensions_additional.conf


/etc/asterisk/extensions_additional.conf

; do not edit this file, this is an auto-generated file by freepbx
; all modifications must be done from the web gui


[globals]
#include globals_custom.conf
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 = 1001
PARKNOTIFY = SIP/200
RECORDEXTEN = ""
RINGTIMER = 15
DIRECTORY = last
AFTER_INCOMING =
IN_OVERRIDE = forcereghours
REGTIME = 7:55-17:05
REGDAYS = mon-fri
DIRECTORY_OPTS = e
OUTDISABLE_2 = off
OUTFAIL_2 =
VM_PREFIX = *
VM_OPTS =
VM_GAIN =
VM_DDTYPE = u
TIMEFORMAT = IMp
TONEZONE = us
ALLOW_SIP_ANON = no
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
DIALOUTIDS = 2/
OUTKEEPCID_2 = off
OUTCID_2 = PBX 288-2703
OUTMAXCHANS_2 = 1
OUTPREFIX_2 =
OUT_2 = ZAP/4
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 = amp111
ASTVERSION = 1.4.18.1


;end of [globals]


[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]


[app-dialvm]
include => app-dialvm-custom
exten => *98,1,Answer
exten => *98,n,Wait(1)
exten => *98,n,Macro(user-callerid,)
exten => *98,n,VoiceMailMain()
exten => *98,n,Macro(hangupcall,)
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,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),MailBoxExists(${AMPUSER}@${VMCONTEXT})
exten => *97,n,GotoIf($["${VMBOXEXISTSSTATUS}" = "SUCCESS"]?mbexist)
exten => *97,n,VoiceMailMain()
exten => *97,n,Macro(hangupcall,)
exten => *97,check+101(mbexist),VoiceMailMain(${AMPUSER}@${VMCONTEXT})
exten => *97,n,Macro(hangupcall,)

; end of [app-vmmain]


[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}o)
exten => #,n,Playback(vm-goodbye)
exten => #,n,Hangup
exten => o,1,Goto(from-internal,${OPERATOR_XTN},1)

; 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-userlogonoff]
include => app-userlogonoff-custom
exten => *12,1,Macro(user-logoff,)
exten => *12,n,Hangup
exten => *11,1,Macro(user-logon,)
exten => *11,n,Hangup
exten => _*11.,1,Macro(user-logon,${EXTEN:3},)
exten => _*11.,n,Hangup

; end of [app-userlogonoff]


[app-pickup]
include => app-pickup-custom
exten => _**.,1,Noop(Attempt to Pickup ${EXTEN:2} by ${CALLERID(num)})
exten => _**.,n,Pickup(${EXTEN:2})

; 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,ZapBarge()
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-test]
include => ext-test-custom
exten => 7777,1,Goto(from-pstn,s,1)
exten => 666,1,Goto(ext-fax,in_fax,1)
exten => h,1,Macro(hangupcall,)

; end of [ext-test]


[ext-did]
include => ext-did-custom
exten => fax,1,Goto(ext-fax,in_fax,1)
exten => s,1,Set(__FROM_DID=${EXTEN})
exten => s,n,GotoIf($[ "${CALLERID(name)}" != "" ] ?cidok)
exten => s,n,Set(CALLERID(name)=${CALLERID(num)})
exten => s,n(cidok),Noop(CallerID is ${CALLERID(all)})
exten => s,n,Goto(from-did-direct,1001,1)

; end of [ext-did]


[ext-did-catchall]
include => ext-did-catchall-custom
exten => _.,1,Noop(Catch-All DID Match - Found ${EXTEN} - You probably want a DID for this.)
exten => _.,n,Goto(ext-did,s,1)

; end of [ext-did-catchall]


[ext-local]
include => ext-local-custom
exten => 1000,1,Macro(exten-vm,1000,1000)
exten => 1000,n,Hangup
exten => 1000,hint,SIP/1000
exten => ${VM_PREFIX}1000,1,Macro(vm,1000,DIRECTDIAL)
exten => ${VM_PREFIX}1000,n,Hangup
exten => vmb1000,1,Macro(vm,1000,BUSY)
exten => vmb1000,n,Hangup
exten => vmu1000,1,Macro(vm,1000,NOANSWER)
exten => vmu1000,n,Hangup
exten => vms1000,1,Macro(vm,1000,NOMESSAGE)
exten => vms1000,n,Hangup
exten => 1001,1,Macro(exten-vm,1001,1001)
exten => 1001,n,Hangup
exten => 1001,hint,SIP/1001
exten => ${VM_PREFIX}1001,1,Macro(vm,1001,DIRECTDIAL)
exten => ${VM_PREFIX}1001,n,Hangup
exten => vmb1001,1,Macro(vm,1001,BUSY)
exten => vmb1001,n,Hangup
exten => vmu1001,1,Macro(vm,1001,NOANSWER)
exten => vmu1001,n,Hangup
exten => vms1001,1,Macro(vm,1001,NOMESSAGE)
exten => vms1001,n,Hangup
exten => 1002,1,Macro(exten-vm,novm,1002)
exten => 1002,n,Hangup
exten => 1002,hint,SIP/1002
exten => 1003,1,Macro(exten-vm,1003,1003)
exten => 1003,n,Hangup
exten => 1003,hint,SIP/1003
exten => ${VM_PREFIX}1003,1,Macro(vm,1003,DIRECTDIAL)
exten => ${VM_PREFIX}1003,n,Hangup
exten => vmb1003,1,Macro(vm,1003,BUSY)
exten => vmb1003,n,Hangup
exten => vmu1003,1,Macro(vm,1003,NOANSWER)
exten => vmu1003,n,Hangup
exten => vms1003,1,Macro(vm,1003,NOMESSAGE)
exten => vms1003,n,Hangup
exten => 1004,1,Macro(exten-vm,1004,1004)
exten => 1004,n,Hangup
exten => 1004,hint,SIP/1004
exten => ${VM_PREFIX}1004,1,Macro(vm,1004,DIRECTDIAL)
exten => ${VM_PREFIX}1004,n,Hangup
exten => vmb1004,1,Macro(vm,1004,BUSY)
exten => vmb1004,n,Hangup
exten => vmu1004,1,Macro(vm,1004,NOANSWER)
exten => vmu1004,n,Hangup
exten => vms1004,1,Macro(vm,1004,NOMESSAGE)
exten => vms1004,n,Hangup
exten => 1005,1,Macro(exten-vm,1005,1005)
exten => 1005,n,Hangup
exten => 1005,hint,SIP/1005
exten => ${VM_PREFIX}1005,1,Macro(vm,1005,DIRECTDIAL)
exten => ${VM_PREFIX}1005,n,Hangup
exten => vmb1005,1,Macro(vm,1005,BUSY)
exten => vmb1005,n,Hangup
exten => vmu1005,1,Macro(vm,1005,NOANSWER)
exten => vmu1005,n,Hangup
exten => vms1005,1,Macro(vm,1005,NOMESSAGE)
exten => vms1005,n,Hangup
exten => 1006,1,Macro(exten-vm,1006,1006)
exten => 1006,n,Hangup
exten => 1006,hint,SIP/1006
exten => ${VM_PREFIX}1006,1,Macro(vm,1006,DIRECTDIAL)
exten => ${VM_PREFIX}1006,n,Hangup
exten => vmb1006,1,Macro(vm,1006,BUSY)
exten => vmb1006,n,Hangup
exten => vmu1006,1,Macro(vm,1006,NOANSWER)
exten => vmu1006,n,Hangup
exten => vms1006,1,Macro(vm,1006,NOMESSAGE)
exten => vms1006,n,Hangup
exten => 1007,1,Macro(exten-vm,1007,1007)
exten => 1007,n,Hangup
exten => 1007,hint,SIP/1007
exten => ${VM_PREFIX}1007,1,Macro(vm,1007,DIRECTDIAL)
exten => ${VM_PREFIX}1007,n,Hangup
exten => vmb1007,1,Macro(vm,1007,BUSY)
exten => vmb1007,n,Hangup
exten => vmu1007,1,Macro(vm,1007,NOANSWER)
exten => vmu1007,n,Hangup
exten => vms1007,1,Macro(vm,1007,NOMESSAGE)
exten => vms1007,n,Hangup
exten => 1008,1,Macro(exten-vm,1008,1008)
exten => 1008,n,Hangup
exten => 1008,hint,SIP/1008
exten => ${VM_PREFIX}1008,1,Macro(vm,1008,DIRECTDIAL)
exten => ${VM_PREFIX}1008,n,Hangup
exten => vmb1008,1,Macro(vm,1008,BUSY)
exten => vmb1008,n,Hangup
exten => vmu1008,1,Macro(vm,1008,NOANSWER)
exten => vmu1008,n,Hangup
exten => vms1008,1,Macro(vm,1008,NOMESSAGE)
exten => vms1008,n,Hangup
exten => 1009,1,Macro(exten-vm,1009,1009)
exten => 1009,n,Hangup
exten => 1009,hint,SIP/1009
exten => ${VM_PREFIX}1009,1,Macro(vm,1009,DIRECTDIAL)
exten => ${VM_PREFIX}1009,n,Hangup
exten => vmb1009,1,Macro(vm,1009,BUSY)
exten => vmb1009,n,Hangup
exten => vmu1009,1,Macro(vm,1009,NOANSWER)
exten => vmu1009,n,Hangup
exten => vms1009,1,Macro(vm,1009,NOMESSAGE)
exten => vms1009,n,Hangup
exten => 1010,1,Macro(exten-vm,novm,1010)
exten => 1010,n,Hangup
exten => 1010,hint,SIP/1010
exten => 2001,1,Macro(exten-vm,novm,2001)
exten => 2001,n,Hangup
exten => 2001,hint,ZAP/1
exten => 2002,1,Macro(exten-vm,novm,2002)
exten => 2002,n,Hangup
exten => 2002,hint,ZAP/2
exten => 2003,1,Macro(exten-vm,novm,2003)
exten => 2003,n,Hangup
exten => 2003,hint,ZAP/3
exten => 3001,1,Macro(exten-vm,3001,3001)
exten => 3001,n,Hangup
exten => 3001,hint,SIP/3001
exten => ${VM_PREFIX}3001,1,Macro(vm,3001,DIRECTDIAL)
exten => ${VM_PREFIX}3001,n,Hangup
exten => vmb3001,1,Macro(vm,3001,BUSY)
exten => vmb3001,n,Hangup
exten => vmu3001,1,Macro(vm,3001,NOANSWER)
exten => vmu3001,n,Hangup
exten => vms3001,1,Macro(vm,3001,NOMESSAGE)
exten => vms3001,n,Hangup
exten => 3002,1,Macro(exten-vm,novm,3002)
exten => 3002,n,Hangup
exten => 3002,hint,SIP/3002
exten => 3004,1,Macro(exten-vm,3004,3004)
exten => 3004,n,Hangup
exten => 3004,hint,SIP/3004
exten => ${VM_PREFIX}3004,1,Macro(vm,3004,DIRECTDIAL)
exten => ${VM_PREFIX}3004,n,Hangup
exten => vmb3004,1,Macro(vm,3004,BUSY)
exten => vmb3004,n,Hangup
exten => vmu3004,1,Macro(vm,3004,NOANSWER)
exten => vmu3004,n,Hangup
exten => vms3004,1,Macro(vm,3004,NOMESSAGE)
exten => vms3004,n,Hangup
exten => 3005,1,Macro(exten-vm,3005,3005)
exten => 3005,n,Hangup
exten => 3005,hint,SIP/3005
exten => ${VM_PREFIX}3005,1,Macro(vm,3005,DIRECTDIAL)
exten => ${VM_PREFIX}3005,n,Hangup
exten => vmb3005,1,Macro(vm,3005,BUSY)
exten => vmb3005,n,Hangup
exten => vmu3005,1,Macro(vm,3005,NOANSWER)
exten => vmu3005,n,Hangup
exten => vms3005,1,Macro(vm,3005,NOMESSAGE)
exten => vms3005,n,Hangup
exten => 3006,1,Macro(exten-vm,3006,3006)
exten => 3006,n,Hangup
exten => 3006,hint,SIP/3006
exten => ${VM_PREFIX}3006,1,Macro(vm,3006,DIRECTDIAL)
exten => ${VM_PREFIX}3006,n,Hangup
exten => vmb3006,1,Macro(vm,3006,BUSY)
exten => vmb3006,n,Hangup
exten => vmu3006,1,Macro(vm,3006,NOANSWER)
exten => vmu3006,n,Hangup
exten => vms3006,1,Macro(vm,3006,NOMESSAGE)
exten => vms3006,n,Hangup
exten => 3007,1,Macro(exten-vm,3007,3007)
exten => 3007,n,Hangup
exten => 3007,hint,SIP/3007
exten => ${VM_PREFIX}3007,1,Macro(vm,3007,DIRECTDIAL)
exten => ${VM_PREFIX}3007,n,Hangup
exten => vmb3007,1,Macro(vm,3007,BUSY)
exten => vmb3007,n,Hangup
exten => vmu3007,1,Macro(vm,3007,NOANSWER)
exten => vmu3007,n,Hangup
exten => vms3007,1,Macro(vm,3007,NOMESSAGE)
exten => vms3007,n,Hangup
exten => 3008,1,Macro(exten-vm,novm,3008)
exten => 3008,n,Hangup
exten => 3008,hint,SIP/3008
exten => 3009,1,Macro(exten-vm,3009,3009)
exten => 3009,n,Hangup
exten => 3009,hint,SIP/3009
exten => ${VM_PREFIX}3009,1,Macro(vm,3009,DIRECTDIAL)
exten => ${VM_PREFIX}3009,n,Hangup
exten => vmb3009,1,Macro(vm,3009,BUSY)
exten => vmb3009,n,Hangup
exten => vmu3009,1,Macro(vm,3009,NOANSWER)
exten => vmu3009,n,Hangup
exten => vms3009,1,Macro(vm,3009,NOMESSAGE)
exten => vms3009,n,Hangup
exten => 3010,1,Macro(exten-vm,3010,3010)
exten => 3010,n,Hangup
exten => 3010,hint,SIP/3010
exten => ${VM_PREFIX}3010,1,Macro(vm,3010,DIRECTDIAL)
exten => ${VM_PREFIX}3010,n,Hangup
exten => vmb3010,1,Macro(vm,3010,BUSY)
exten => vmb3010,n,Hangup
exten => vmu3010,1,Macro(vm,3010,NOANSWER)
exten => vmu3010,n,Hangup
exten => vms3010,1,Macro(vm,3010,NOMESSAGE)
exten => vms3010,n,Hangup
exten => 4001,1,Macro(exten-vm,4001,4001)
exten => 4001,n,Hangup
exten => 4001,hint,IAX2/4001
exten => ${VM_PREFIX}4001,1,Macro(vm,4001,DIRECTDIAL)
exten => ${VM_PREFIX}4001,n,Hangup
exten => vmb4001,1,Macro(vm,4001,BUSY)
exten => vmb4001,n,Hangup
exten => vmu4001,1,Macro(vm,4001,NOANSWER)
exten => vmu4001,n,Hangup
exten => vms4001,1,Macro(vm,4001,NOMESSAGE)
exten => vms4001,n,Hangup
exten => 4002,1,Macro(exten-vm,novm,4002)
exten => 4002,n,Hangup
exten => 4002,hint,IAX2/4002
exten => 4003,1,Macro(exten-vm,novm,4003)
exten => 4003,n,Hangup
exten => 4003,hint,IAX2/4003
exten => 4004,1,Macro(exten-vm,novm,4004)
exten => 4004,n,Hangup
exten => 4004,hint,IAX2/4004
exten => 4006,1,Macro(exten-vm,novm,4006)
exten => 4006,n,Hangup
exten => 4006,hint,IAX2/4006
exten => 4007,1,Macro(exten-vm,novm,4007)
exten => 4007,n,Hangup
exten => 4007,hint,IAX2/4007
exten => 4011,1,Macro(exten-vm,novm,4011)
exten => 4011,n,Hangup
exten => 4011,hint,IAX2/4011
exten => 4012,1,Macro(exten-vm,novm,4012)
exten => 4012,n,Hangup
exten => 4012,hint,IAX2/4012
exten => 4014,1,Macro(exten-vm,novm,4014)
exten => 4014,n,Hangup
exten => 4014,hint,IAX2/4014
exten => 4016,1,Macro(exten-vm,novm,4016)
exten => 4016,n,Hangup
exten => 4016,hint,IAX2/4016

; end of [ext-local]


[from-did-direct-ivr]
include => from-did-direct-ivr-custom
exten => 1000,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 1000,n,Set(__NODEST=)
exten => 1000,n,Goto(from-did-direct,1000,1)
exten => ${VM_PREFIX}1000,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}1000,n,Set(__NODEST=)
exten => ${VM_PREFIX}1000,n,Macro(vm,1000,DIRECTDIAL)
exten => 1001,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 1001,n,Set(__NODEST=)
exten => 1001,n,Goto(from-did-direct,1001,1)
exten => ${VM_PREFIX}1001,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}1001,n,Set(__NODEST=)
exten => ${VM_PREFIX}1001,n,Macro(vm,1001,DIRECTDIAL)
exten => 1002,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 1002,n,Set(__NODEST=)
exten => 1002,n,Goto(from-did-direct,1002,1)
exten => 1003,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 1003,n,Set(__NODEST=)
exten => 1003,n,Goto(from-did-direct,1003,1)
exten => ${VM_PREFIX}1003,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}1003,n,Set(__NODEST=)
exten => ${VM_PREFIX}1003,n,Macro(vm,1003,DIRECTDIAL)
exten => 1004,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 1004,n,Set(__NODEST=)
exten => 1004,n,Goto(from-did-direct,1004,1)
exten => ${VM_PREFIX}1004,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}1004,n,Set(__NODEST=)
exten => ${VM_PREFIX}1004,n,Macro(vm,1004,DIRECTDIAL)
exten => 1005,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 1005,n,Set(__NODEST=)
exten => 1005,n,Goto(from-did-direct,1005,1)
exten => ${VM_PREFIX}1005,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}1005,n,Set(__NODEST=)
exten => ${VM_PREFIX}1005,n,Macro(vm,1005,DIRECTDIAL)
exten => 1006,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 1006,n,Set(__NODEST=)
exten => 1006,n,Goto(from-did-direct,1006,1)
exten => ${VM_PREFIX}1006,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}1006,n,Set(__NODEST=)
exten => ${VM_PREFIX}1006,n,Macro(vm,1006,DIRECTDIAL)
exten => 1007,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 1007,n,Set(__NODEST=)
exten => 1007,n,Goto(from-did-direct,1007,1)
exten => ${VM_PREFIX}1007,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}1007,n,Set(__NODEST=)
exten => ${VM_PREFIX}1007,n,Macro(vm,1007,DIRECTDIAL)
exten => 1008,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 1008,n,Set(__NODEST=)
exten => 1008,n,Goto(from-did-direct,1008,1)
exten => ${VM_PREFIX}1008,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}1008,n,Set(__NODEST=)
exten => ${VM_PREFIX}1008,n,Macro(vm,1008,DIRECTDIAL)
exten => 1009,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 1009,n,Set(__NODEST=)
exten => 1009,n,Goto(from-did-direct,1009,1)
exten => ${VM_PREFIX}1009,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}1009,n,Set(__NODEST=)
exten => ${VM_PREFIX}1009,n,Macro(vm,1009,DIRECTDIAL)
exten => 1010,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 1010,n,Set(__NODEST=)
exten => 1010,n,Goto(from-did-direct,1010,1)
exten => 2001,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 2001,n,Set(__NODEST=)
exten => 2001,n,Goto(from-did-direct,2001,1)
exten => 2002,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 2002,n,Set(__NODEST=)
exten => 2002,n,Goto(from-did-direct,2002,1)
exten => 2003,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 2003,n,Set(__NODEST=)
exten => 2003,n,Goto(from-did-direct,2003,1)
exten => 3001,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 3001,n,Set(__NODEST=)
exten => 3001,n,Goto(from-did-direct,3001,1)
exten => ${VM_PREFIX}3001,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}3001,n,Set(__NODEST=)
exten => ${VM_PREFIX}3001,n,Macro(vm,3001,DIRECTDIAL)
exten => 3002,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 3002,n,Set(__NODEST=)
exten => 3002,n,Goto(from-did-direct,3002,1)
exten => 3004,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 3004,n,Set(__NODEST=)
exten => 3004,n,Goto(from-did-direct,3004,1)
exten => ${VM_PREFIX}3004,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}3004,n,Set(__NODEST=)
exten => ${VM_PREFIX}3004,n,Macro(vm,3004,DIRECTDIAL)
exten => 3005,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 3005,n,Set(__NODEST=)
exten => 3005,n,Goto(from-did-direct,3005,1)
exten => ${VM_PREFIX}3005,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}3005,n,Set(__NODEST=)
exten => ${VM_PREFIX}3005,n,Macro(vm,3005,DIRECTDIAL)
exten => 3006,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 3006,n,Set(__NODEST=)
exten => 3006,n,Goto(from-did-direct,3006,1)
exten => ${VM_PREFIX}3006,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}3006,n,Set(__NODEST=)
exten => ${VM_PREFIX}3006,n,Macro(vm,3006,DIRECTDIAL)
exten => 3007,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 3007,n,Set(__NODEST=)
exten => 3007,n,Goto(from-did-direct,3007,1)
exten => ${VM_PREFIX}3007,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}3007,n,Set(__NODEST=)
exten => ${VM_PREFIX}3007,n,Macro(vm,3007,DIRECTDIAL)
exten => 3008,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 3008,n,Set(__NODEST=)
exten => 3008,n,Goto(from-did-direct,3008,1)
exten => 3009,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 3009,n,Set(__NODEST=)
exten => 3009,n,Goto(from-did-direct,3009,1)
exten => ${VM_PREFIX}3009,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}3009,n,Set(__NODEST=)
exten => ${VM_PREFIX}3009,n,Macro(vm,3009,DIRECTDIAL)
exten => 3010,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 3010,n,Set(__NODEST=)
exten => 3010,n,Goto(from-did-direct,3010,1)
exten => ${VM_PREFIX}3010,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}3010,n,Set(__NODEST=)
exten => ${VM_PREFIX}3010,n,Macro(vm,3010,DIRECTDIAL)
exten => 4001,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 4001,n,Set(__NODEST=)
exten => 4001,n,Goto(from-did-direct,4001,1)
exten => ${VM_PREFIX}4001,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => ${VM_PREFIX}4001,n,Set(__NODEST=)
exten => ${VM_PREFIX}4001,n,Macro(vm,4001,DIRECTDIAL)
exten => 4002,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 4002,n,Set(__NODEST=)
exten => 4002,n,Goto(from-did-direct,4002,1)
exten => 4003,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 4003,n,Set(__NODEST=)
exten => 4003,n,Goto(from-did-direct,4003,1)
exten => 4004,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 4004,n,Set(__NODEST=)
exten => 4004,n,Goto(from-did-direct,4004,1)
exten => 4006,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 4006,n,Set(__NODEST=)
exten => 4006,n,Goto(from-did-direct,4006,1)
exten => 4007,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 4007,n,Set(__NODEST=)
exten => 4007,n,Goto(from-did-direct,4007,1)
exten => 4011,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 4011,n,Set(__NODEST=)
exten => 4011,n,Goto(from-did-direct,4011,1)
exten => 4012,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 4012,n,Set(__NODEST=)
exten => 4012,n,Goto(from-did-direct,4012,1)
exten => 4014,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 4014,n,Set(__NODEST=)
exten => 4014,n,Goto(from-did-direct,4014,1)
exten => 4016,1,ExecIf($["${BLKVM_OVERRIDE}" != ""],dbDel,${BLKVM_OVERRIDE})
exten => 4016,n,Set(__NODEST=)
exten => 4016,n,Goto(from-did-direct,4016,1)

; end of [from-did-direct-ivr]


[outbound-allroutes]
include => outbound-allroutes-custom
include => outrt-001-9_outside
exten => foo,1,Noop(bar)

; end of [outbound-allroutes]


[outrt-001-9_outside]
include => outrt-001-9_outside-custom
exten => _9.,1,Macro(user-callerid,SKIPTTL,)
exten => _9.,n,Set(_NODEST=)
exten => _9.,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _9.,n,Macro(dialout-trunk,2,${EXTEN:1},,)
exten => _9.,n,Macro(outisbusy,)

; end of [outrt-001-9_outside]


[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,Wait(1)
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
exten => _*.,1,ResetCDR()
exten => _*.,n,NoCDR()
exten => _*.,n,Wait(1)
exten => _*.,n,Playback(silence/1&feature-not-avail-line&silence/1&cannot-complete-as-dialed&check-number-dial-again,noanswer)
exten => _*.,n,Wait(1)
exten => _*.,n,Congestion(20)
exten => _*.,n,Hangup

; end of [bad-number]


[macro-dialout-trunk]
include => macro-dialout-trunk-custom
exten => s,1,Set(DIAL_TRUNK=${ARG1})
exten => s,n,ExecIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]],Authenticate,${ARG3})
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(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),AGI(fixlocalprefix)
exten => s,n,Set(OUTNUM=${OUTPREFIX_${DIAL_TRUNK}}${DIAL_NUMBER})
exten => s,n,Set(custom=${CUT(OUT_${DIAL_TRUNK},:,1)})
exten => s,n,GotoIf($[$["${MOHCLASS}" = "default"] | $["foo${MOHCLASS}" = "foo"]]?gocall)
exten => s,n,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,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,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-NOANSWER,1,Noop(Dial failed due to trunk reporting NOANSWER - giving up)
exten => s-NOANSWER,n,Playtones(congestion)
exten => s-NOANSWER,n,Congestion(20)
exten => s-CANCEL,1,Noop(Dial failed due to trunk reporting CANCEL - giving up)
exten => s-CANCEL,n,Playtones(congestion)
exten => s-CANCEL,n,Congestion(20)
exten => _s-.,1,GotoIf($["x${OUTFAIL_${ARG1}}" = "x"]?noreport)
exten => _s-.,n,AGI(${OUTFAIL_${ARG1}})
exten => _s-.,n(noreport),Noop(TRUNK Dial failed due to ${DIALSTATUS} - failing through to other trunks)
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,ExecIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]],Authenticate,${ARG3})
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(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),AGI(fixlocalprefix)
exten => s,n,Set(OUTNUM=${OUTPREFIX_${DIAL_TRUNK}}${DIAL_NUMBER})
exten => s,n,GotoIf($[$["${MOHCLASS}" = "default"] | $["foo${MOHCLASS}" = "foo"]]?gocall)
exten => s,n,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,GotoIf($["${custom}" = "AMP"]?customtrunk)
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-NOANSWER,1,Noop(Dial failed due to trunk reporting NOANSWER - giving up)
exten => s-NOANSWER,n,Playtones(congestion)
exten => s-NOANSWER,n,Congestion(20)
exten => s-CANCEL,1,Noop(Dial failed due to trunk reporting CANCEL - giving up)
exten => s-CANCEL,n,Playtones(congestion)
exten => s-CANCEL,n,Congestion(20)
exten => _s-.,1,GotoIf($["x${OUTFAIL_${ARG1}}" = "x"]?noreport)
exten => _s-.,n,AGI(${OUTFAIL_${ARG1}})
exten => _s-.,n(noreport),Noop(TRUNK Dial failed due to ${DIALSTATUS} - failing through to other trunks)
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,Noop(user-callerid: ${CALLERID(name)} ${CALLERID(number)})
exten => s,n,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(start),Noop(REALCALLERIDNUM is ${REALCALLERIDNUM})
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,Set(REALCALLERIDNUM=${DB(DEVICE/${REALCALLERIDNUM}/user)})
exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/language)}" != ""],Set,CHANNEL(language)=${DB(AMPUSER/${AMPUSER}/language)})
exten => s,n(report),Noop(TTL: ${TTL} ARG1: ${ARG1})
exten => s,n,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),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,ExecIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]],Authenticate,${ARG3})
exten => s,n,Macro(outbound-callerid,${ARG1})
exten => s,n,Set(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,AGI(fixlocalprefix)
exten => s,n,AGI(enumlookup.agi)
exten => s,n(dialloop),GotoIf($["foo${DIALARR}"="foo"]?end)
exten => s,n,Set(TRYDIAL=${CUT(DIALARR,%,1)})
exten => s,n,Set(DIALARR=${CUT(DIALARR,%,2-)})
exten => s,n,Dial(${TRYDIAL},)
exten => s,n,Noop(Dial exited in macro-enum-dialout with ${DIALSTATUS})
exten => s,n,GotoIf($[ $[ "${DIALSTATUS}" = "CHANUNAVAIL" ] | $[ "${DIALSTATUS}" = "CONGESTION" ] ]?dialloop)
exten => s,n(dialfailed),Goto(s-${DIALSTATUS},1)
exten => s,n(nochans),Noop(max channels used up)
exten => s,n(end),Noop(Exiting macro-dialout-enum)
exten => s-BUSY,1,Noop(Trunk is reporting BUSY)
exten => s-BUSY,n,Busy(20)
exten => _s-.,1,Noop(Dial failed due to ${DIALSTATUS})

; end of [macro-dialout-enum]


[macro-outbound-callerid]
include => macro-outbound-callerid-custom
exten => s,1,GotoIf($["${REALCALLERIDNUM:1:2}" != ""]?start)
exten => s,n,Set(REALCALLERIDNUM=${CALLERID(number)})
exten => s,n(start),Noop(REALCALLERIDNUM is ${REALCALLERIDNUM})
exten => s,n,GotoIf($["${KEEPCID}" != "TRUE"]?normcid)
exten => s,n,GotoIf($["x${OUTKEEPCID_${ARG1}}" = "xon"]?normcid)
exten => s,n,GotoIf($["foo${REALCALLERIDNUM}" = "foo"]?normcid)
exten => s,n,Set(USEROUTCID=${REALCALLERIDNUM})
exten => s,n,GotoIf($["foo${DB(AMPUSER/${REALCALLERIDNUM}/device)}" = "foo"]?bypass:normcid)
exten => s,n(normcid),Set(USEROUTCID=${DB(AMPUSER/${REALCALLERIDNUM}/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}" = ""]?trunkcid)
exten => s,n,GotoIf($["${EMERGENCYCID:1:2}" = ""]?trunkcid)
exten => s,n,Set(CALLERID(all)=${EMERGENCYCID})
exten => s,n,Goto(report)
exten => s,n(trunkcid),GotoIf($["${TRUNKOUTCID:1:2}" = ""]?usercid)
exten => s,n,Set(CALLERID(all)=${TRUNKOUTCID})
exten => s,n(usercid),GotoIf($["${USEROUTCID:1:2}" = ""]?report)
exten => s,n,Set(CALLERID(all)=${USEROUTCID})
exten => s,n,GotoIf($["x${CALLERID(name)}"!="xhidden"]?report:hidecid)
exten => s,n(hidecid),SetCallerPres(prohib_passed_screen)
exten => s,n(report),Noop(CallerID set to ${CALLERID(all)})

; end of [macro-outbound-callerid]


[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-user,,,,)
exten => s,n,GotoIf($["${CALLBACKNUM}" != ""]?a7)
exten => s,n(a5),Set(CALLBACKNUM=${AMPUSER})
exten => s,n,ExecIf($["${CALLBACKNUM}" = ""],Set,CALLBACKNUM=${CALLERID(number)})
exten => s,n,GotoIf($["${CALLBACKNUM}" = ""]?a3)
exten => s,n(a7),GotoIf($["${CALLBACKNUM}" = "${ARG1}"]?invalid)
exten => s,n,ExecIf($["${ARG2}" != ""],Authenticate,${ARG2})
exten => s,n(a9),AddQueueMember(${ARG1},Local/${CALLBACKNUM}@from-internal/n)
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-user,,,,)
exten => s,n,GotoIf($["${CALLBACKNUM}" = ""]?a5:a7)
exten => s,n(a5),Set(CALLBACKNUM=${AMPUSER})
exten => s,n,ExecIf($["${CALLBACKNUM}" = ""],Set,CALLBACKNUM=${CALLERID(number)})
exten => s,n,GotoIf($["${CALLBACKNUM}" = ""]?a3)
exten => s,n(a7),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]


[macro-systemrecording]
include => macro-systemrecording-custom
exten => s,1,Goto(${ARG1},1)
exten => dorecord,1,Record(/tmp/${AMPUSER}-ivrrecording:wav)
exten => dorecord,n,Wait(1)
exten => dorecord,n,Goto(confmenu,1)
exten => docheck,1,Playback(/tmp/${AMPUSER}-ivrrecording)
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,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,1)
exten => confmenu,n,Goto(1)
exten => 1,1,Goto(docheck,1)
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]


[from-internal-additional]
include => from-internal-additional-custom
include => app-recordings
include => app-dialvm
include => app-vmmain
include => app-calltrace
include => app-directory
include => app-echo-test
include => app-speakextennum
include => app-speakingclock
include => app-userlogonoff
include => app-pickup
include => app-zapbarge
include => app-chanspy
include => ext-test
include => ext-local
include => outbound-allroutes
exten => h,1,Hangup

; end of [from-internal-additional]




Go to the

Introduction
to Networking

Online Book

Go to the

PBX in a Flash

Home Page

Go to the

FreePBX

Home Page

Return to the

PBX in a Flash
for Newbies

home page

Copyright April 2008 - Eugene Blanchard