asterisk configs

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...