This is not a full files - only config that was modified/added by me
asterisk.conf[compat] pbx_realtime=1.4 res_agi=1.4 app_set=1.4
extconfig.conf
agents.conf => mysql,voiceone,ast_config extensions.conf => mysql,voiceone,ast_config features.conf => mysql,voiceone,ast_config iax.conf => mysql,voiceone,ast_config meetme.conf => mysql,voiceone,ast_config misdn.conf => mysql,voiceone,ast_config musiconhold.conf => mysql,voiceone,ast_config queues.conf => mysql,voiceone,ast_config sip.conf => mysql,voiceone,ast_config zapata.conf => mysql,voiceone,ast_config iaxusers => mysql,voiceone,iax_buddies iaxpeers => mysql,voiceone,iax_buddies sipusers => mysql,voiceone,sip_buddies sippeers => mysql,voiceone,sip_buddies voicemail => mysql,voiceone,voicemail_users extensions => mysql,voiceone,extensions_table
manager.conf (for voiceone)[admin] secret=XXX deny=0.0.0.0/0.0.0.0 permit=127.0.0.1/255.255.255.0 permit=XXX read=system,call,log,verbose,command,agent,user,config,dtmf,reporting,cdr,dialplan write=system,call,log,verbose,command,agent,user,config,originate
Dialplan (aka extensions.conf, I will remove some information coz it's private)
[general]
static = yes
writeprotect = no
autofallthrough = yes
clearglobalvars = no
priorityjumping = no
[globals]
TRUNKOPTIONS =
EMERGENCY = 0
EMERGENCY_TRUNK =
TRANSFERS_CTX = DefaultOutgoingRule
CALLBACK_CTX = DefaultOutgoingRule
DISA_CTX = DefaultOutgoingRule
DISA_PASSWD = 1111
DYNAMIC_FEATURES = automon
TRUNK = XXX
OUTGOING_PREFIX =
[from-sip]
include = sip-direct
exten = t,1,Hangup
exten = i,1,Congestion
exten = _X.,1,Goto(restricted,${EXTEN},1)
exten = s,1,Congestion
exten = h,1,Hangup
[sip-direct]
exten = XXX,1,Goto(_all_,XXX,1)
exten = XXX,1,Goto(_all_,XXX,1)
[_all_]
include = _all-extensions_
include = _all-resources_
include = _all-applications_
include = _catch-all_
[_all-extensions_]
;All Extensions
XXX
[_all-resources_]
;All Resources
XXX
[_all-applications_]
;All Applications
XXX
[_catch-all_]
;Catch All
exten = _X.,1,AGI(dial.php,entity=&group=5&extension=${EXTEN})
exten = _X,1,AGI(dial.php,entity=&group=5&extension=${EXTEN})
[default]
exten = _[a-zA-Z0-9].,1,Hangup
exten = _[a-gj-ru-zA-Z0-9],1,Hangup
exten = s,1,Hangup
exten = t,1,Hangup
exten = i,1,Hangup
[app-XXX]
[macro-XXX]
XXX; some standart voiceone macroses; now my own
[macro-dialoutwithfollowme]
exten = s,1,Set(TOUCH_MONITOR=${TIMESTAMP}_${CALLERID(num)}-${ARG1})
exten = s,n,NoOp(CID_NAME : ${CID_NAME})
exten = s,n,NoOp(CID_NUMBER: ${CID_NUMBER})
exten = s,n,NoOp(CID_CLIR : ${CID_CLIR})
exten = s,n,NoOp(TRUNK : ${TRUNK})
exten = s,n,Set(CALLERID(name)=${CID_NAME})
exten = s,n,Set(CALLERID(num)=${CID_NUMBER})
exten = s,n,Set(PRESENTATION=${IF($["${CID_CLIR}"="1"]?prohib_not_screened:allowed_not_screened)})
exten = s,n,SetCallerPres(${PRESENTATION})
exten = s,n,SipAddHeader(P-Asserted-Identity: <sip:${CALLERID(num)}@${SIPDOMAIN}>)
exten = s,n,Set(PRIVACY=${IF($["${CID_CLIR}"="1"]?id:none)})
exten = s,n,SIPAddHeader(Privacy: ${PRIVACY})
exten = s,n,GotoIf(${ISNULL(${TRUNK})}?s-CONGESTION,1)
exten = s,n,Dial(${TRUNK}/${ARG1}${TRUNKOPTIONS},,igTW) ;Ring the interface
exten = s,n,FollowMe(${ARG2})
exten = s,n,NoOp(DIALSTATUS = ${DIALSTATUS})
exten = s,n,Goto(s-${DIALSTATUS},1) ;Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
exten = s-BUSY,1,Playtones(busy)
exten = s-CONGESTION,1,Answer
exten = s-CONGESTION,n,Wait(1)
exten = s-CONGESTION,n,Playtones(congestion)
exten = _s-.,1,Goto(s-CONGESTION,1) ;Treat anything else as no answer
[macro-Directory]
exten = s,1,Directory(default,DefaultOutgoingRule,${ARG2})
[macro-ReceiveFax]
exten = s,1,Answer()
exten = s,n,Wait(3)
exten = s,n,Set(FAXFILE=/var/spool/asterisk/fax${CALLEDFAX}/${UNIQUEID})
;exten => s,n,DBGet(EXTEMAIL=${MACRO_EXTEN}/xEmail)
;exten => s,n,NoOP()
;exten => s,n,DBGet(EXTNAME=${MACRO_EXTEN}/xName)
;exten => s,n,NoOP()
;exten => s,n,DBGet(EXTCOMPANY=${MACRO_EXTEN}/xCompany)
exten = s,n,Set(EXTEMAIL=sergey.goncharenko@quickoffice.com)
exten = s,n,Set(EXTNAME=Sergey Goncharenko)
exten = s,n,Set(EXTCOMPANY=Quickoffice)
exten = s,n,ReceiveFAX(${FAXFILE}.tiff)
exten = s,n,System(/var/lib/asterisk/scripts/mailfax "${CALLERIDNUM}" "${CALLEDFAX}" "${EXTNAME}" "${EXTEMAIL}" "${FAXFILE}" "${EXTCOMPANY}")
[app-CalltoSharedLine_120]
exten = _99XXXXXXXX,1,AGI(dial.php,entity=120&group=6&extension=${EXTEN})
[macro-Screen]
exten = s,1,Wait(0.2)
exten = s,n,Set(MACRO_RESULT=GOTO:${ARG3}^s-NOANSWER^1)
exten = s,n,Playback(followme/call-from)
exten = s,n,SayDigits(${CALLERID(num)})
exten = s,n,Wait(0.5)
exten = s,n,Playback(vm-for)
exten = s,n,Playback(vm-extension)
exten = s,n,SayDigits(${ARG2})
exten = s,n,Wait(1)
exten = s,n,Playback(connecting)
exten = s,n,Wait(1)
exten = s,n,Playback(beep)
exten = s,n,Set(MACRO_RESULT=)
; I modified agi scripts a little bit for this macro[macro-DID2]
;exten = s,1,Set(DESTINATION=${IF(${ISNULL(${ARG1})}?${MACRO_EXTEN}:${MACRO_EXTEN:${ARG1}})})
;exten = s,n,Set(ALERT_EXTERNAL=TRUE)
exten = s,1,Goto(${ARG1},${ARG2},1)
[macro-FollowMe]
exten = s,1,Set(TOUCH_MONITOR=${TIMESTAMP}_${CALLERID(num)}-${ARG1})
exten = s,n,NoOp(CID_NAME : ${CID_NAME})
exten = s,n,NoOp(CID_NUMBER: ${CID_NUMBER})
exten = s,n,NoOp(CID_CLIR : ${CID_CLIR})
exten = s,n,NoOp(TRUNK : ${TRUNK})
exten = s,n,Set(CALLERID(name)=${CID_NAME})
exten = s,n,Set(CALLERID(num)=${CID_NUMBER})
exten = s,n,Set(PRESENTATION=${IF($["${CID_CLIR}"="1"]?prohib_not_screened:allowed_not_screened)})
exten = s,n,SetCallerPres(${PRESENTATION})
exten = s,n,SipAddHeader(P-Asserted-Identity: <sip:${CALLERID(num)}@${SIPDOMAIN}>)
exten = s,n,Set(PRIVACY=${IF($["${CID_CLIR}"="1"]?id:none)})
exten = s,n,SIPAddHeader(Privacy: ${PRIVACY})
exten = s,n,GotoIf(${ISNULL(${TRUNK})}?s-CONGESTION,1)
exten = s,n,FollowMe(${ARG1})
exten = s,n,NoOp(DIALSTATUS = ${DIALSTATUS})
exten = s,n,GotoIf(${EXISTS(${DB(VM/${EXTENSION})})}?skip-vm)
exten = s,n,GotoIf($["${VMBOXEXISTSSTATUS}"="FAILED"]?skip-vm)
exten = s,n,GotoIf(${ISNULL(${ALERT_EXTERNAL})}?vm)
exten = s,n,Answer
exten = s,n,Wait(1)
exten = s,n(vm),Voicemail(${ARG2},u) ;If unavailable, send to voicemail w/ unavail announce
exten = s,n,Goto(end)
exten = s,n(skip-vm),Answer
exten = s,n,Wait(1)
exten = s,n,Playback(unavailable)
exten = s,n(end),Hangup
exten = s,n,Playtones(congestion)
[macro-CallToExchange]
exten = s,1,Set(TOUCH_MONITOR=${TIMESTAMP}_${CALLERID(num)}-6777)
exten = s,n,NoOp(CID_NAME : ${CALLERID(name)})
exten = s,n,NoOp(CID_NUMBER: ${CALLERID(name)})
exten = s,n,NoOp(CID_CLIR : ${CID_CLIR})
exten = s,n,NoOp(TRUNK : ${TRUNK})
exten = s,n,Set(CALLERID(name)=${CALLERID(name)})
exten = s,n,Set(CALLERID(num)=${CALLERID(num)})
exten = s,n,Set(PRESENTATION=${IF($["${CID_CLIR}"="1"]?prohib_not_screened:allowed_not_screened)})
exten = s,n,SetCallerPres(${PRESENTATION})
;exten = s,n,SipAddHeader(P-Asserted-Identity: <sip:${CALLERID(num)}@${SIPDOMAIN}>)
;exten = s,n,SipAddHeader(Diversion:<tel:6622>\;reason=no-answer\;screen=no\;privacy=off)
exten = s,n,Set(PRIVACY=${IF($["${CID_CLIR}"="1"]?id:none)})
exten = s,n,SIPAddHeader(Privacy: ${PRIVACY})
exten = s,n,GotoIf(${ISNULL(${TRUNK})}?s-CONGESTION,1)
exten = s,n,Dial(SIP/UMServer/${ARG1},,gTW) ;Ring the interface
exten = s,n,NoOp(DIALSTATUS = ${DIALSTATUS})
exten = s,n,Goto(s-${DIALSTATUS},1) ;Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
exten = s-BUSY,1,Playtones(busy)
exten = s-CONGESTION,1,Answer
exten = s-CONGESTION,n,Wait(1)
exten = s-CONGESTION,n,Playtones(congestion)
exten = _s-.,1,Goto(s-CONGESTION,1) ;Treat anything else as no answer
; modified voiceone macro with voicemail forward to exchange
[macro-voicemailbox]
exten = s,1,NoOp(Answering machine mode: Answer Only or Answer and Record?)
exten = s,n,GotoIf(${ISNULL(${ARG1})}?answeronly)
exten = s,n,NoOp(Mode: Answer and Record)
exten = s,n,NoOp(Checking for Voice Mailbox: ${ARG1})
exten = s,n,MailboxExists(${ARG1})
exten = s,n,NoOp(MailboxExists(${ARG1}): ${VMBOXEXISTSSTATUS})
exten = s,n,GotoIf($["${VMBOXEXISTSSTATUS}"="SUCCESS"]?:end)
exten = s,n,Answer
exten = s,n,Wait(1)
exten = s,n,GotoIf(${ISNULL(${ARG2})}?defaultmessage)
exten = s,n,Playback(${ARG2})
;exten = s,n,Voicemail(${ARG1},s)
exten = s,n,SipAddHeader(Diversion:<tel:${ARG1}>\;reason=no-answer\;screen=no\;privacy=off)
exten = s,n,Dial(SIP/UMServer/${6002},,gTW)
exten = s,n,Goto(end)
;exten = s,n(defaultmessage),Voicemail(${ARG1})
exten = s,n(defaultmessage),SipAddHeader(Diversion:<tel:${ARG1}>\;reason=no-answer\;screen=no\;privacy=off)
exten = s,n,Dial(SIP/UMServer/${6002},,gTW)
exten = s,n,Goto(end)
exten = s,n(answeronly),NoOp(Mode: Answer Only)
exten = s,n,GotoIf(${ISNULL(${ARG2})}?end)
exten = s,n,Answer
exten = s,n,Wait(1)
exten = s,n,Playback(${ARG2})
exten = s,n(end),NoOp(end)
;macro for forwarding voicemails[macro-ExchangeVM]
exten = s,1,SipAddHeader(Diversion:<tel:${ARG1}>\;reason=no-answer\;screen=no\;privacy=off)
exten = s,n,Dial(SIP/UMServer/6002,,gTW)
; apps for connecting to exchange subscriber's access and autoattendant, they use CallToExchange macro
[app-ExchangeSA_285]
exten = 6600,1,AGI(dial.php,entity=285&group=6&extension=${EXTEN})
[app-ExchangeAA_278]
exten = 6666,1,AGI(dial.php,entity=278&group=6&extension=${EXTEN})
[app-ExchangeAAforDallas_286]
exten = 666,1,AGI(dial.php,entity=286&group=6&extension=${EXTEN})
; macro for shared extension - when two people sharing single extension - you should create extensions for each of them; and set forwarding to a special phone number that will extract information about calling party and shared extension
[macro-sharedexten]
;CFB Call Forwarding Busy
;CFNR Call Forwarding No Reply
;CFU Call Forwarding Unconditional
;Set variables to use if extension is dialed by a queue
exten = s,1,Set(QUEUE_TIMEOUT=15)
;Check for Local channel and set timeout
exten = s,n,Set(ISLOCAL=${IF($["${CUT(CHANNEL,/,1)}"="Local"]?TRUE:FALSE)})
exten = s,n,Set(TIMEOUT=${IF($["${ISLOCAL}"="TRUE"]?${QUEUE_TIMEOUT})})
;Check for CFU & DND. Set Timeout and Alert Tone (Snom devices only) based on where the call comes from
exten = s,n,Set(EXTENSION=${ARG1:2:4})
exten = s,n,Set(EXTENSION2=${ARG1:-4})
exten = s,n,GotoIf(${EXISTS(${DB(CFU/${EXTENSION})})}?${MACRO_CONTEXT},${DB(CFU/${EXTENSION})},1) ;Get CFU key
exten = s,n,MailboxExists(${EXTENSION2}) ;Check for mailbox and set timeout for Dial() based on where the call comes from -- It MUST be before jump if DND is set
exten = s,n,NoOp(MailboxExists(${EXTENSION2}): ${VMBOXEXISTSSTATUS})
exten = s,n,GotoIf(${EXISTS(${DB(DND/${EXTENSION})})}?s-BUSY,1) ;Get DND key
exten = s,n,GotoIf($["${ISLOCAL}"="TRUE"]?dial)
exten = s,n,GotoIf($["${ALERT_EXTERNAL}"="TRUE"]?external)
exten = s,n,SIPAddHeader("Alert-Info:<http://www.notused.com>\;info=alert-internal\;x-line-id=0") ;Do not add the SIP header for Alert Internal if coming from outside
exten = s,n,Set(TIMEOUT=${IF($["${ISLOCAL}"="FALSE"]?${IF($["${VMBOXEXISTSSTATUS}"="SUCCESS"]?20:60)})}) ;Answer after 20 secs. if mailbox is available, else ring for 60 secs.
exten = s,n,Goto(dial)
exten = s,n(external),Set(TIMEOUT=${IF($["${ISLOCAL}"="FALSE"]?${IF($["${VMBOXEXISTSSTATUS}"="SUCCESS"]?20)})})
;Dial
;exten = s,n(dial),Dial(${CUT(CHANNEL,/,1)}/${EXTENSION},${TIMEOUT},${MOHCLASS}gtoTwWM(Screen^${CALLERID(num)}^${EXTENSION2}^${CONTEXT})) ;Ring the interface
exten = s,n(dial),Dial(${CUT(CHANNEL,/,1)}/${EXTENSION},${TIMEOUT},${MOHCLASS}gtoTwW) ;Ring the interface
exten = s,n,Goto(s-${DIALSTATUS},1)
exten = s-ANSWER,1,Hangup
exten = s-CHANUNAVAIL,1,GotoIf($["${ISLOCAL}"="FALSE"]?nolocal) ;Log off the Agent if is unreacheable
exten = s-CHANUNAVAIL,n,Set(CURRENT_EXT=${CUT(ARG1,/,2)})
exten = s-CHANUNAVAIL,n,System(asterisk -rx "agent logoff Agent/${CURRENT_EXT}")
exten = s-CHANUNAVAIL,n(nolocal),Goto(s-NOANSWER,1)
exten = exit,1,Hangup
;If extension is dialled by queue
exten = s-NOANSWER,1,GotoIf($["${ISLOCAL}"="FALSE"]?nolocal)
exten = s-NOANSWER,n,Goto(exit,1)
;else
exten = s-NOANSWER,n(nolocal),GotoIf(${EXISTS(${DB(CFNR/${EXTENSION})})}?${MACRO_CONTEXT},${DB(CFNR/${EXTENSION})},1) ;Get CFNR key
exten = s-NOANSWER,n,GotoIf(${EXISTS(${DB(VM/${EXTENSION2})})}?skip-vm)
exten = s-NOANSWER,n,GotoIf($["${VMBOXEXISTSSTATUS}"="FAILED"]?skip-vm)
exten = s-NOANSWER,n,GotoIf(${ISNULL(${ALERT_EXTERNAL})}?vm)
exten = s-NOANSWER,n,Answer
exten = s-NOANSWER,n,Wait(1)
;exten = s-NOANSWER,n(vm),Voicemail(${EXTENSION2},u) ;If unavailable, send to voicemail w/ unavail announce
exten = s-NOANSWER,n(vm),Macro(ExchangeVM,${EXTENSION2})
exten = s-NOANSWER,n,Goto(end)
exten = s-NOANSWER,n(skip-vm),Answer
exten = s-NOANSWER,n,Wait(1)
exten = s-NOANSWER,n,Playback(unavailable)
exten = s-NOANSWER,n(end),Hangup
;If extension is dialled by queue
exten = s-BUSY,1,GotoIf($["${ISLOCAL}"="FALSE"]?nolocal)
exten = s-BUSY,n,Goto(exit,1)
;else
exten = s-BUSY,n(nolocal),GotoIf(${EXISTS(${DB(CFB/${EXTENSION})})}?${MACRO_CONTEXT},${DB(CFB/${EXTENSION})},1) ;Get CFB key
exten = s-BUSY,n,GotoIf(${EXISTS(${DB(VM/${EXTENSION2})})}?skip-vm)
exten = s-BUSY,n,GotoIf($["${VMBOXEXISTSSTATUS}"="FAILED"]?skip-vm)
exten = s-BUSY,n,GotoIf(${ISNULL(${ALERT_EXTERNAL})}?vm)
exten = s-BUSY,n,Answer
exten = s-BUSY,n,Wait(1)
;exten = s-BUSY,n(vm),Voicemail(${EXTENSION2},b) ;If busy, send to voicemail w/ busy announce
exten = s-BUSY,n(vm),Macro(exchangevm,${EXTENSION2})
exten = s-BUSY,n,Hangup
exten = s-BUSY,n,MacroExit
exten = s-BUSY,n(skip-vm),Busy(10) ;If voicemail doesn't exist, play busy
exten = _s-.,1,Goto(s-NOANSWER,1) ;Treat anything else as no answer
exten = a,1,VoicemailMain(${EXTENSION2}) ;If they press *, send the user into VoicemailMain
Will be continued...
|