rendered paste body[user_services]
; any services accesible by users will go here (voicemail, meetme, etc)
;handle external polycom dnd redirects
exten => _voicemail.,1,Wait(1)
exten => _voicemail.,n,VoiceMail(u${EXTEN:9}@default)
exten => _voicemail.,n,Hangup()
;handle voicemail retrieval from Polycom sets
exten => _getmail.,1,Answer()
exten => _getmail.,n,Wait(1)
exten => _getmail.,n,VoiceMailMain(${EXTEN:7}@default)
exten => _getmail.,n,Hangup()
exten => _getmailrem.,1,noop(--==[ enter reference vmb for ${EXTEN:10} ]==--)
exten => _getmailrem.,n,VoiceMail(${EXTEN:10}@default)
exten => _getmailrem.,n,Hangup()
; voicemail transfer
exten => _5[45]00,1,Answer()
exten => _5[45]00,n,Wait(1)
exten => _5[45]00,n,VoiceMailMain(${EXTEN:1}@default)
exten => _5[45]00,n,Hangup()
exten => _52XX,1,Answer()
exten => _52XX,n,Wait(1)
exten => _52XX,n,VoiceMailMain(${EXTEN:1}@default)
exten => _52XX,n,Hangup()
exten => _530[01],1,Answer()
exten => _530[01],n,Wait(1)
exten => _530[01],n,VoiceMailMain(${EXTEN:1}@default)
exten => _530[01],n,Hangup()
;handle remote notification
exten => _vmremote.,1,Wait(9)
exten => _vmremote.,n,Set(acknowleged=0) ; initialize the variable
exten => _vmremote.,n,Read(acknowleged,${varCustom_Prompts_Dir}vmremote,1,option,5,5)
exten => _vmremote.,n,Verbose(2,acknowleged=${acknowleged})
exten => _vmremote.,n,Gotoif($[foo${acknowleged} = foo]?hangup:acknowleged)
exten => _vmremote.,n(acknowleged),VoicemailMain(${EXTEN:8}@default,g(5))
exten => _vmremote.,n(hangup),Hangup()
; Voicemail retrieval (from perhaps external)
exten => 6000,1,Wait(1)
exten => 6000,n,VoiceMailMain(,g(15))
exten => 6000,n,Hangup()
exten => 555,1,goto(6000,1)
; Conference rooms
; (PIN matches number - change in /etc/asterisk/meetme.conf) ; Personal Meetme Rooms
; exten => 6210,1,MeetMe(6610|MpIx)
; exten => 6210,n,Hangup()
; exten => 6211,1,MeetMe(6611|MpIx)
; exten => 6211,n,Hangup()
exten => 333,1,MeetMe(|MIxp)
exten => 333,n,Hangup()
exten => _66XX.,1,noop(--==[ lines testing ]==--)
exten => _66XX.,n,dial(zap/${EXTEN:2:2}/${EXTEN:4})
exten => _66XX.,n,Hangup()
; Play music on hold
exten => 6012,1,Answer()
exten => 6012,n,Musiconhold(test)
exten => 6012,n,Hangup()
exten => 6013,1,Answer()
exten => 6013,n,Musiconhold(default)
exten => 6013,n,Hangup()
; Echo test
exten => 6014,1,Answer()
exten => 6014,n,Echo()
exten => 6014,n,Hangup()
; Internal ANIC
exten => 6015,1,Answer()
exten => 6015,n,Wait(1)
exten => 6015,n,SayDigits(${CALLERID(num)})
exten => 6015,n,Hangup()
; test zap
exten => 6016,1,Answer()
exten => 6016,n,Wait(1)
exten => 6016,n,Read(zap_test,enter-phone-number10,10,,,4)
exten => 6016,n,GotoIf($[ ${ISNULL(${zap_test})} = 1 ]?6016,1)
exten => 6016,n,Playback(the-num-i-have-is)
exten => 6016,n,SayDigits(${zap_test})
exten => 6016,n(zapchn),Read(zap_num,conf-getchannel,2,,,4)
exten => 6016,n,GotoIf($[ ${ISNULL(${zap_num})} = 1 ]?zapchn)
exten => 6016,n,GotoIf($[${zap_num}<1]?zapchn)
exten => 6016,n,GotoIf($[${zap_num}>20]?zapchn)
exten => 6016,n,Set(CALLERID(name)=${MAIN_CALLER_NM})
exten => 6016,n,Set(CALLERID(num)=${MAIN_CALLER_ID})
exten => 6016,n,Noop(-----> ${CALLERID(name)} [${CALLERID(num)}] <-----)
exten => 6016,n,Dial(ZAP/${zap_num}/1${zap_test},,ftT)
exten => 6016,n,Hangup()
; exten => 6018,1,Answer()
; exten => 6018,n,macro(alt_number_add,412) ;${number})
; exten => 6018,n,Hangup()
; exten => 6222,1,Noop(--== [test ] ==--)
; exten => 6222,n,Set(CALLERID(name)=Agility Recovery)
; exten => 6222,n,Set(CALLERID(num)=${MAIN_CALLER_ID})
; exten => 6222,n,Dial(${POTS}/<type here a number>&Local/6018,20,r)
; exten => 6222,n,Hangup()
exten => 6018,1,Noop(-----> AAT service calls)
exten => 6018,n,Wait(1)
exten => 6018,n,Set(DAY_NOW=$[${STRFTIME(||%H%M)}])
exten => 6018,n,noop(---> ${DAY_NOW} <---)
exten => 6018,n,Hangup()
exten => 6020,1,goto(main_menu,s,1)
exten => 6020,n,Hangup()
exten => 6021,1,goto(after_hours,s,1)
exten => 6021,n,Hangup()
;Page phones
exten => 6724,1,Verbose(2,${_ALERT_INFO})
exten => 6724,n,Set(_ALERT_INFO="Auto Answer")
exten => 6724,n,Verbose(2,${_ALERT_INFO})
exten => 6724,n,Gotoif($[${EXISTS({PAGEROOM})}=0]?end)
exten => 6724,n,Page(${PAGEROOM}|q)
exten => 6724,n(end),Hangup()
; locate-me
; exten => 6777,1,Noop(-----> locate-me (${number})<------)
; exten => 6777,n,Answer()
; exten => 6777,n,Goto(loacte_me_setup,loc_me_${number},1)
; exten => 6777,n,Hangup()
; Paging port
; exten => 6017,1,Dial(ZAP/32)
; exten => 6017,n,Hangup()
; Paging all zones
; exten => 6018,1,Dial(ZAP/32,,D(ww00))
; exten => 6018,n,Hangup()
; Reception ringer
; exten => 6054,1,Dial(SIP/554)
; exten => 6054,n,Verbose(3,row 348: ${CHANNEL} :: ${EXTEN}) ; exten => 6054,n,Voicemail(u${receptionDN}) ; exten => 6054,n,Hangup() ; ; Pickup reception ringer
; exten => 6055,1,Pickup(554)
; Speed Dial
exten => _6[01]XX,1,Verbose(3,"System Speed Dial")
exten => _6[01]XX,n,GoToIf($[${REGEX("60..",${EXTEN})} = 1 ]?systemspeeddial:personalspeeddial)
exten => _6[01]XX,n(personalspeeddial),Set(Chan=${CUT(CHANNEL,-,1)})
exten => _6[01]XX,n,Set(ChanType=${CUT(Chan,/,1)})
exten => _6[01]XX,n,Set(ChanName=${CUT(Chan,/,2)})
exten => _6[01]XX,n,Noop(-----> ${chanvar${ChanType}${ChanName}})
exten => _6[01]XX,n,GotoIf($[ ${EXISTS(${chanvar${ChanType}${ChanName}})} = 1]?:invalid)
exten => _6[01]XX,n,Set(userDN=${CUT(chanvar${ChanType}${ChanName},:,1)})
exten => _6[01]XX,n,Goto(speeddial)
exten => _6[01]XX,n(systemspeeddial),Set(userDN=systemspeeddial)
exten => _6[01]XX,n,Goto(speeddial)
exten => _6[01]XX,n(speeddial),Noop(-----> userDN is ${userDN})
exten => _6[01]XX,n,Gotoif($["${EXTEN}"="6000"]?speeddialentry,s,1:)
exten => _6[01]XX,n,Gotoif($["${EXTEN}"="6100"]?speeddialentry,s,1:)
exten => _6[01]XX,n,Set(vartmpSD=${DB(SpeedDial/${userDN}/${EXTEN})})
exten => _6[01]XX,n,Gotoif($[${ISNULL(${vartmpSD})}=1]?invalidsd:${vartmpSD},1)
exten => _6[01]XX,n,Hangup()
exten => _6[01]XX,n(invalidsd),Noop(-----> ${BLINDTRANSFER})
exten => _6[01]XX,n,GotoIf($[${ISNULL(${BLINDTRANSFER})}=1]?invalidannounce:invalidbt)
exten => _6[01]XX,n,Hangup()
exten => _6[01]XX,n(invalidannounce),Answer()
exten => _6[01]XX,n,Wait(1)
exten => _6[01]XX,n,Playback(invalid)
exten => _6[01]XX,n,Hangup()
exten => _6[01]XX,n(invalidbt),Noop(-----> Send back to person who transfered)
exten => _6[01]XX,n,Wait(3)
exten => _6[01]XX,n,Goto(${CUT(CUT(BLINDTRANSFER,,1),/,2)},1)
exten => _6[01]XX,n,Hangup()
exten => _6[01]XX,n(invalid),Noop(-----> no valid chanVAR)
exten => _6[01]XX,n,Hangup()
; Transfer directly to voicemail
exten => _64XX,1,Answer()
exten => _64XX,n,Noop(---> ${EXTEN:2} <---)
exten => _64XX,n,Set(Voicemailbox=${IF($[${ISNULL(${RefVM${EXTEN:1}})}=1]?2${EXTEN:2}:${RefVM${EXTEN:2}})})
exten => _64XX,n,Gotoif($[${ISNULL(${RefIAXVM${EXTEN:1}})}=1]?:getmailrem${RefIAXVM${EXTEN:1}},1)
exten => _64XX,n,VoiceMail(${Voicemailbox},u)
exten => _64XX,n,Hangup()
; Remote forwarding "393" spells FWD on the dialpad
exten => _63XX,1,Answer()
exten => _63XX,n,Authenticate(4${EXTEN:2})
exten => _63XX,n,Set(ExtFwd=4${EXTEN:2})
exten => _63XX,n,Goto(remote_forwarding,s,1)
exten => _63XX,n,Hangup()
; Personal Meetme Rooms
; #include /etc/asterisk/extensions_meetme.conf
; Holiday prompt recording (6HOL)
exten => 6765,1,Answer()
exten => 6765,n(newprompt),Record(${varCustom_Prompts_Dir}holiday.wav)
exten => 6765,n,Wait(1)
exten => 6765,n(promptexists),Playback(${varCustom_Prompts_Dir}holiday)
exten => 6765,n,Hangup()
; Prompt recording (these prompts are placed in the /tmp folder, from which ; they can be copied to wherever they are needed
exten => _65XX,1,Wait(1)
exten => _65XX,n,Record(/tmp/${EXTEN}.wav)
exten => _65XX,n,Wait(2)
exten => _65XX,n,Playback(/tmp/${EXTEN})
exten => _65XX,n,Hangup()
;#extension preceeded by 4 announces transferred call
exten=>_42XX,1,Answer()
exten=>_42XX,n,Dial(Sip/${EXTEN:1},40,M(trx-announce));
exten=>_42XX,n,Hangup()
; Dial ZERO for Operator
;exten => 0,1,Noop()
;exten => 0,n,Verbose(2,${EVAL(${${RECEPTION}})})
;exten => 0,n,Verbose(2,${CUT(${${RECEPTION}},/,1)})
;exten => 0,n,Verbose(2,${${RECEPTION}}) ;exten => 0,n,Macro(reception,${CUT(RECEPTION,N,2)},${${RECEPTION}})
include => parkedcalls