;------------------------------------------------------------------- ;Start Autoattend Menu ;------------------------------------------------------------------- ; [autoattend] ; exten => s,1,GotoIfTime(*|*|1|jan?holiday,s,1) exten => s,n,GotoIfTime(*|*|4|jul?holiday,s,1) exten => s,n,GotoIfTime(*|*|11|nov?holiday,s,1) exten => s,n,GotoIfTime(*|*|24|nov?holiday,s,1) exten => s,n,GotoIfTime(*|*|25|dec?holiday,s,1) exten => s,n,GotoIfTime(08:00-17:00on-fri|*|*?day,s,1) exten => s,n,GotoIfTime(17:01-07:99|mon-fri|*|*?night,s,1) exten => s,n,GotoIfTime(09:00-16:00|sat|*|*?day,s,1) exten => s,n,Goto(night,s,1); ; ;------------------------------------------------------------------- ; Start - IVR Menu ;------------------------------------------------------------------- [selection] ; exten => i,1,Background(pbx-invalid) ; "That's not valid, try again" exten => i,2,Wait(1) exten => i,3,Goto(s,9) ; exten => t,1,Playback(pls-wait-connect-call) exten => t,n,Goto(operator-queue,s,1) ; ; * - directory ; not setup yet exten => *,1,Directory,default exten => *,2,Goto,s|1 ; ;DIR-CONTEXT set in Digital Receptionist ;exten => *,1,Wait(1) ;exten => *,2,AGI(directory,${DIR-CONTEXT},ext-local,${DIRECTORY:0:1}${DIRECTORY_OPTS}o) ;exten => *,3,Playback(vm-goodbye) ;exten => *,4,Hangup ; *411 will access the entire directory (not just a single context) ;exten => *411,1,Answer ;exten => *411,2,Wait(1) ;exten => *411,3,AGI(directory,general,ext-local,${DIRECTORY:0:1}${DIRECTORY_OPTS}) ;exten => *411,4,Playback(vm-goodbye) ;exten => *411,5,Hangup ;exten => h,1,Hangup ;exten => o,1,GotoIf($["foo${FROM_DID}" => "foo"]?from-pstn,s,1:from-pstn,${FROM_DID},1) ; ; # - disconnect exten => #,1,Playback,(vm-goodbye) exten => #,2,Hangup ; ; 0 Operator exten => 0,1,Macro(stdexten,0,SIP/0) ; ;1 Sales Dept exten => 1,1,GotoIfTime(08:00-16:59|mon-fri|*|*?selection,3,6) exten => 1,2,GotoIf(Time(17:00-07:29|mon-fri|*|*?selection,3,3) exten => 1,3,Playback(sales-closed) exten => 1,4,Playback(vm-goodbye) exten => 1,5,Hangup exten => 1,6,BackGround(for-quality-purposes) exten => 1,7,Playback(this-call-may-be) exten => 1,8,Playback(recorded) exten => 1,9,Playback(pls-wait-connect-call) exten => 1,10,SetMusicOnHold,default exten => 1,11,SetCallerID,1 exten => 1,12,SetCallerIDName,Sales exten => 1,13,Goto,queues|200|1 ; ;2 Billing Dept exten => 2,1,GotoIfTime(08:00-16:59|mon-fri|*|*?selection,4,6) exten => 2,2,GotoIfTime(17:00-07:29|mon-fri|*|*?selection,4,3) exten => 2,3,Playback(billing-closed) exten => 2,4,Playback(vm-goodbye) exten => 2,5,Hangup exten => 2,6,Playback(for-quality-purposes) exten => 2,7,Playback(this-call-may-be) exten => 2,8,Playback(recorded) exten => 2,9,Playback(pls-wait-connect-call) exten => 2,10,SetMusicOnHold,default exten => 2,11,SetCallerID,2 exten => 2,12,SetCallerIDName,Sales exten => 2,13,Goto,queues|201|1 ; ;3 Technical Support Dept exten => 3,1,GotoIfTime(08:30-17:29|mon-fri|*|*?selection,5,6) exten => 3,2,GotoIfTime(17:30-08:29|mon-fri|*|*?selection,5,3) exten => 3,3,Playback(tech-closed) exten => 3,4,Playback(vm-goodbye) exten => 3,5,Hangup exten => 3,6,Playback(for-quality-purposes) exten => 3,7,Playback(this-call-may-be) exten => 3,8,Playback(recorded) exten => 3,9,Playback,(pls-wait-connect-call) exten => 3,10,SetMusicOnHold,default exten => 3,11,SetCallerID,3 exten => 3,12,SetCallerIDName,TechSupport exten => 3,13,Goto,queues|202|1 ; ;4 exten => 4,1,Playback,(systemstat) exten => 4,n,Hangup ; exten => 5,1,Background(staff-listing) exten => 5,n,Hangup ; ;5 exten => 6,1,Playback(vm-goodbye) exten => 6,n,Hangup ; ;7 exten => 7,1,Playback(vm-goodbye) exten => 7,n,Hangup ; ;8 exten => 8,1,Playback(vm-goodbye) exten => 8,n,Hangup ; ;9 Fax Extension exten => 9,1,Set(CALLEDFAX=>${EXTEN}) exten => 9,2,Answer exten => 9,3,Goto(fax,${EXTEN},1) ; ;exten => fax,1,Goto(ext-fax,in_fax,1) ; [prompts]; IVR ;----------------------------------------------------- ;988 - Prompt management used for IVR prompt recording. ;----------------------------------------------------- exten => 988,1,Goto(prompt-management,s,1) ; [prompt-management] ; Flexible prompt recording exten => s,1,Answer exten => s,n,Wait(1) exten => s,n,DigitTimeout(5) exten => s,n,Read(PROMPT_NUMBER|enter-prompt-number|3) exten => s,n,SayDigits(${PROMPT_NUMBER}) exten => s,n,BackGround(T-to-hear-cur-ancmnt) exten => s,n,BackGround(press-1) exten => s,n,BackGround(T-to-rec-ancmnt) exten => s,n,BackGround(press-2) ; exten => t,1,Playback(goodbye) exten => t,n,Hangup ; exten => i,1,Playback(pbx-invalid) exten => i,n,Goto(s,5) ; exten => 1,1,Playback(beep) exten => 1,n,Playback(bsky-prompt-${PROMPT_NUMBER}) exten => 1,n,Playback(beep) exten => 1,n,Goto(s,6) ; exten => 2,1,Goto(prompt-management-record,s,1) exten => *,1,Playback(goodbye) exten => *,n,Hangup ; [prompt-management-record] ; New prompt recording exten => s,1,Playback(vm-intro) exten => s,n,Record(tmp-newprompt:wav) exten => s,n,Playback(beep) exten => s,n,BackGround(tmp-newprompt) exten => s,n,BackGround(save-announce-press) exten => s,n,BackGround(digits/1) exten => s,n,BackGround(to-rerecord-announce) exten => s,n,BackGround(digits/2) ; exten => i,1,Playback(invalid) exten => i,n,Goto(s,3) ; exten => t,1,Goto(s,3) ; exten => 1,1,System(cp -f /var/lib/asterisk/sounds/tmp-newprompt.wav /var/lib/asterisk/sounds/prompt-${PROMPT_NUMBER}.wav) exten => 1,n,Playback(your-msg-has-been-saved) exten => 1,n,Goto(app-prompt-management,s,4) ; exten => 2,1,Goto(s,1) ; exten => *,1,Goto(app-prompt-management,s,4) ;------------------------------------------------------- ; 989 - Special announcement admin (Easy IVR) ;------------------------------------------------------- exten => 989,1,Goto(special-message,s,1) ; [special-message] ; Record/replay/turn on/off the special message played before ACD queue calls exten => s,1,Answer exten => s,n,Wait(1) exten => s,n,DigitTimeout(5) exten => s,n,BackGround(T-to-hear-cur-ancmnt) exten => s,n,BackGround(press-1) exten => s,n,BackGround(T-to-rec-ancmnt) exten => s,n,BackGround(press-2) exten => s,n,BackGround(T-to-enable-ancmnt) exten => s,n,BackGround(press-3) exten => s,n,BackGround(T-to-disable-ancmnt) exten => s,n,BackGround(press-4) ; exten => t,1,Playback(goodbye) exten => t,2,Hangup ; exten => i,1,Playback(pbx-invalid) exten => i,2,Goto(s,4) ; exten => 1,1,Playback(special-message) exten => 1,2,Goto(s,4) ; exten => 2,1,Goto(special-message-record,s,1) ; exten => 3,1,Set($DB(SpecialMessage/1=>1)}) exten => 3,n,Playback(enabled) exten => 3,n,Goto(s,4) ; exten => 4,1,DBdel(SpecialMessage/1) exten => 4,n,Playback(disabled) exten => 4,n,Goto(s,4) ; exten => *,1,Playback(goodbye) exten => *,2,Hangup ; [special-message-record] ; Record the new special message exten => s,1,Playback(vm-intro) exten => s,n,Record(new-special-message:wav) exten => s,n,Playback(beep) exten => s,n,BackGround(new-special-message) exten => s,n,BackGround(save-announce-press) exten => s,n,BackGround(digits/1) exten => s,n,BackGround(to-rerecord-announce) exten => s,n,BackGround(digits/2) exten => i,1,Playback(invalid) exten => i,n,Goto(s,3) ; exten => t,1,Goto(s,3) ; exten => 1,1,System(cp -f /var/lib/asterisk/sounds/new-special-message.wav /var/lib/asterisk/sounds/special-message.wav) exten => 1,n,Playback(your-msg-has-been-saved) exten => 1,n,Goto(app-special-message,s,1) ; exten => 2,1,Goto(s,1) ; exten => *,1,Goto(special-message,s,1) ; [macro-check-special-message] ; If the flag is set, play the special message, otherwise continue exten => s,1,Set(${DB(SpecialMessage=>SpecialMessage/1)}) exten => s,2,Playback(system-status-msg) exten => s,3,Playback(special-message) exten => s,4,Ringing exten => s,5,Wait(4) exten => s,102,Noop ; ;------------------------------------------------------------------- ; END - IVR Menu ;-------------------------------------------------------------------