Hi All
The following is my script for IVR. However, when User press "0" to operator, the system must wait for 7-10 seconds to forward "0" digit to CallManager.
How can I make Script forward immediately "0" digit to CallManager ?
==============================================================
proc act_Setup { } {
global flag
global param
set param(interruptPrompt) true
set param(enableReporting) true
set param(terminationKey) #
set param(interDigitTimeout) 1
set flag 1
leg proceeding leg_incoming
set dest [infotag get leg_dnis]
leg connect leg_incoming
set pattern(account) .+
leg collectdigits leg_incoming param pattern
media play leg_incoming flash:IVR.au
}
proc act_process_dtmf { } {
global flag
global param
set dtmf_pressed [infotag get evt_digit]
puts "Processing DTMF: $dtmf_pressed"
if {$flag == "0"} { return }
if { $dtmf_pressed == "0" } {
set flag 0
set dest "2000"
fsm setstate PLACECALL
puts "dest = $dest"
leg setup $dest callInfo leg_incoming
}
}
proc act_PromptCollect_acct1 { } {
global param
set status [infotag get evt_status]
puts "act_PromptCollect_acct1, status=$status"
if {$dest == "0"} {set dest "2000"}
puts "make call ... to Operator = $dest"
leg setup $dest callInfo leg_incoming
call close
}
proc act_CallSetupDone { } {
set status [infotag get evt_status]
puts "act_CallSetupDone, status=$status"
if { $status == "ls_000" } {
puts "Setup successful, start timer..."
} else {
puts "Setup unsuccessful"
call close
}
}
proc act_Cleanup { } {
puts "call close"
call close
}
set fsm(CALL_INIT,ev_setup_indication) "act_Setup GETDEST"
set fsm(GETDEST,ev_digit_end) "act_process_dtmf same_state"
set fsm(GETDEST,ev_collectdigits_done) "act_PromptCollect_acct1 PLACECALL"
set fsm(PLACECALL,ev_setup_done) "act_CallSetupDone CALLACTIVE"
set fsm(CALLACTIVE,ev_disconnected) "act_Cleanup CALLDISCONNECT"
set fsm(CALLDISCONNECT,ev_any_event) "act_Cleanup same_state"
fsm define fsm CALL_INIT
=================================================