Yes I do, each extension has a specific number that is supposed to be assigned to it.
Here is the dial plan…
[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-0002]
include => ext-did-0002-custom
exten => 5555550002,1,Set(__FROM_DID=${EXTEN})
exten => 5555550002,n,ExecIf($[ “${CALLERID(name)}” = “” ] ?Set(CALLERID(name)=${CALLERID(num)}))
exten => 5555550002,n,Set(__CALLINGPRES_SV=${CALLERPRES()})
exten => 5555550002,n,Set(CALLERPRES()=allowed_not_screened)
exten => 5555550002,n(dest-ext),Goto(from-did-direct,1001,1)
; end of [ext-did-0002]
[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 => 1000,1,Macro(exten-vm,novm,1000)
exten => 1000,n,Goto(${IVR_CONTEXT},return,1)
exten => 1000,hint,SIP/1000
exten => 5555550001,1,Goto(from-internal,1000,1)
exten => 1001,1,Macro(exten-vm,novm,1001)
exten => 1001,n,Goto(${IVR_CONTEXT},return,1)
exten => 1001,hint,SIP/1001
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)
; end of [ext-local]
[from-did-direct-ivr]
include => from-did-direct-ivr-custom
exten => 1000,1,ExecIf($["${BLKVM_OVERRIDE}" != “”]?Noop(Deleting: ${BLKVM_OVERRIDE}: ${DB_DELETE(${BLKVM_OVERRIDE})}))
exten => 1000,n,Set(__NODEST=)
exten => 1000,n,Goto(from-did-direct,1000,1)
exten => 1001,1,ExecIf($["${BLKVM_OVERRIDE}" != “”]?Noop(Deleting: ${BLKVM_OVERRIDE}: ${DB_DELETE(${BLKVM_OVERRIDE})}))
exten => 1001,n,Set(__NODEST=)
exten => 1001,n,Goto(from-did-direct,1001,1)
; end of [from-did-direct-ivr]
[from-trunk-sip-gphone]
include => from-trunk-sip-gphone-custom
exten => _.,1,Set(GROUP()=OUT_2)
exten => _.,n,Goto(from-trunk,${EXTEN},1)
; end of [from-trunk-sip-gphone]
[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),Set(RECSET="${DB(AMPUSER/${CUT(ARG1,-,${ITER})}/recording)}")
exten => s,n,GotoIf($["${RECSET}"="" | “${CUT(RECSET,\|,2):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=IN${ARG1}-${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-001-9_outside
include => outrt-002-GPHONE
exten => _!,1,Macro(user-callerid,SKIPTTL,)
; end of [outbound-allroutes]
[outrt-001-9_outside]
include => outrt-001-9_outside-custom
exten => _9.,1,Noop(Macro(user-callerid): executed in outbound-allroutes PRI 1)
exten => _9.,n,Set(_NODEST=)
exten => _9.,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _9.,n,Macro(dialout-trunk,1,${EXTEN:1},)
exten => _9.,n,Macro(outisbusy,)
; end of [outrt-001-9_outside]
[outrt-002-GPHONE]
include => outrt-002-GPHONE-custom
exten => _.,1,Noop(Macro(user-callerid): executed in outbound-allroutes PRI 1)
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-002-GPHONE]