Jean Lofrano | #Params # # web-server # IP Address or DNS Name of webserver # welcome-prompt # path+filename of welcome message # attemps # number of times to repeat the imput
# web returns # return: 1 = valid # 0 = invalid/wrong # CALL_CENTER = Special account # x >=2
# initialize the parameters that configured from IOS CLI proc InitializeConfiguration { } { puts "IT7: initializing Homologação" global WebServer global WelcomePrompt global Attemps global CallerID global NovaSenha global WebReturn1 global count global count1 global counter
#other variables global Response1 global Response2 global Response3
#webserver if [infotag get cfg_avpair_exists web-server] { set WebServer [string trim [infotag get cfg_avpair web-server]] } else { set WebServer "10.80.3.91:7778" }
#welcome message if [infotag get cfg_avpair_exists welcome-prompt] { set WelcomePrompt [string trim [infotag get cfg_avpair welwome-prompt]] } else { set WelcomePrompt "flash:/Fem/ola2.wav"
}
#attemps if [infotag get cfg_avpair_exists attemps] { set Attemps [string trim [infotag get cfg_avpair attemps]] } else { set Attemps 3 }
puts "IT7: initialized" }
proc ActionCallPrepare { } {
puts "AGUARDANDO INICIO" timer start call_timer0 2 }
#-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- #--------------------------------------------------------------------------------
proc CallHelpDesk { } { global CallerID
puts "Fowarding to Help Desk"
set callinfo(originationNum) $CallerID set callinfo(alertTime) 10 set destination 79889
puts "FAZENDO CHAMADA" leg setup $destination callinfo leg_outgoing
#fsm setstate CALLEDHELPDESK }
proc CheckCallSetup { } {
puts "IT7 ------------ chamada realizada"
set statuscall [infotag get evt_status] switch $statuscall {
"ls_000" {
puts "CHAMADA ATIVA"
set incoming [infotag get leg_incoming] puts "Parte 2" set outgoing [infotag get leg_outgoing]
connection create $incoming $outgoing
}
defaul { puts "CHAMADA FALHOU" } }
puts "CHECK CALL SETUP ACABOU"
}
#-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- #--------------------------------------------------------------------------------
#procedure to play audio file on incoming dial peer proc ActionPlayWelcome { } { puts "IT7: playing audio Welcome"
global WelcomePrompt global CallerID leg setupack leg_incoming leg proceeding leg_incoming leg connect leg_incoming
set CallerID [infotag get leg_ani]
puts "IT7: Caller ID $CallerID"
media play leg_incoming $WelcomePrompt
puts "IT7: Audio played Welcome" }
#-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- #--------------------------------------------------------------------------------
#procedure to play Question 1 proc ActionPlayQuestion1 { } { global counter
set counter 0
set Question1Param(interruptPrompt) true set Question1Param(terminationKey) # set Question1Param(enableReporting) true set Question1Param(maxDigits) 1 set Question1Param(dialPlan) true set Question1Pattern(1) "1" set Question1Pattern(2) "2" set Question1Pattern(3) "3" puts "IT7: playing question 1"
media play leg_incoming "flash:/Fem/opcoes.wav"
puts "IT7: played question 1"
leg collectdigits leg_incoming Question1Param Question1Pattern
fsm setstate COLLECTEDQUESTION1
}
proc ActionPlayQuestion1Again { } { global counter
if { $counter < "2"} {
incr counter
puts "$counter"
puts "IT7: playing question 1 again"
media play leg_incoming "flash:/Fem/opcoes.wav"
puts "IT7: played question 1 again" } else {
puts "IT7 --------------------------> ERRO" media play leg_incoming "flash:/Fem/aguarde.wav"
puts "Por favor aguarde enqto sua ligacao e transf para help" fsm setstate HELPDESK
}
}
#coleta os digitos da questao 01 proc ActionCollectQuestion1 { } { puts "IT7: collecting question 1"
set Question1Param(interruptPrompt) true set Question1Param(terminationKey) # set Question1Param(enableReporting) true set Question1Param(maxDigits) 1 set Question1Param(dialPlan) true set Question1Pattern(1) "1" set Question1Pattern(2) "2" set Question1Pattern(3) "3"
leg collectdigits leg_incoming Question1Param
puts "IT7: collected question 1" }
#send collected digits through web proc Action1 { } { puts "IT7: try to send web" global WebServer global Response1 global CallerID global count global count1
set StatusCollectDigits [infotag get evt_status]
puts "IT7: cpf $StatusCollectDigits"
#matched pattern if {$StatusCollectDigits == "cd_005"} {
puts "IT7: starting web"
set Response1 [infotag get evt_dcdigits]
puts "Choose: $Response1"
if { $Response1 == "3"} {
puts "aguarde, transferindo para o help-desk"
media play leg_incoming "flash:/Fem/aguarde.wav"
fsm setstate HELPDESK } if { $Response1 == "2"} {
puts "password change" set count 0
set count1 0 media play leg_incoming "flash:/Fem/alteracao-cpf.wav"
fsm setstate PLAYEDQUESTION2
}
if { $Response1 == "1"} {
puts "user unlock" set count 0
set count1 0 media play leg_incoming "flash:/Fem/desbloqueio-cpf.wav"
fsm setstate PLAYEDQUESTION2
}
if { $Response1 > "3"} {
puts "Invalid option"
media play leg_incoming "flash:/Fem/opcao-invalida.wav" fsm setstate PLAYEDWRONG1
}
} else {
puts "IT7: error - playing error audio"
media play leg_incoming "flash:/Fem/opcao-invalida.wav" fsm setstate PLAYEDWRONG1
puts "IT7: error - played error audio"
} puts "IT7: end try to send web" }
#-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- #--------------------------------------------------------------------------------
#play question 2, second time proc ActionPlayQuestion2Again { } { global count global Response1 if { $count < "2"} {
incr count
puts "$count"
puts "IT7: playing question 2 again"
media play leg_incoming "flash:/Fem/solicita-cpf.wav"
puts "IT7: played question 2 again"
} else {
puts "IT7 --------------------------> ERRO" if { $Response1 == "1"} {
puts "IT7 --------------------------> ERRO 1"
media play leg_incoming "flash:/Fem/desbloqueio-erro.wav"
fsm setstate HELPDESK
puts "Por favor aguarde enqto sua ligacao e transf para help"
}
if { $Response1 == "2"} {
puts "IT7 --------------------------> ERRO 2"
media play leg_incoming "flash:/Fem/alteracao-erro.wav"
fsm setstat HELPDESK
puts "Por favor aguarde enqto sua ligacao e transf para help"
}
}
}
#coleta os digitos da questao 02 proc ActionCollectQuestion2 { } { puts "IT7: collect question 2"
set Question2Param(interruptPrompt) true set Question2Param(terminationKey) # set Question2Param(maxDigits) 11 set Question2Param(dialPlan) true set Question2Pattern(1) "..........."
leg collectdigits leg_incoming Question2Param
puts "IT7: collected question 2" }
proc Action2 { } { global WebServer global Response2 global CallerID global count
set StatusCollectDigits [infotag get evt_status]
#matched pattern if {$StatusCollectDigits == "cd_005"} {
set Response2 [infotag get evt_dcdigits] set URL http://$WebServer/URA/ValidarCPF?telefoneorigem=$CallerID&cpf=$Response2
puts "IT7: URL Validacao #2 $URL"
::httpios::geturl $URL -command httpCallback2
} else {
media play leg_incoming "flash:/Fem/cpf-invalido.wav" fsm setstate PLAYEDWRONG2 } }
proc httpCallback2 { token } {
global WebServer global Response1 global WebReturn1 global CallerID
if {[::httpios::status $token] == "ok"} { set WebReturn1 [string trim [::httpios::data $token]] }
if { $WebReturn1 >= "2" } {
puts "Abril validating the UserKey $WebReturn1"
if { $Response1 == "1"} {
set URL http://$WebServer/URA/DesbloquearConta?telefoneorigem=$CallerID&user_key=$WebReturn1 ::httpios::geturl $URL -command httpCallbackSMS
}
if { $Response1 == "2"} { media play leg_incoming "flash:/Fem/solicita-telefone.wav" fsm setstate PLAYEDQUESTION3
}
}
if { $WebReturn1 == "CALL_CENTER" } {
puts "aguarde, transferindo para o help-desk"
media play leg_incoming "flash:/Fem/aguarde.wav"
fsm setstate HELPDESK } if { $WebReturn1 == "0" } {
media play leg_incoming "flash:/Fem/cpf-invalido.wav" fsm setstate PLAYEDWRONG2
} }
#-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- #--------------------------------------------------------------------------------
#diz a questao 3 denovo proc ActionPlayQuestion3Again { } {
global count1 global Response1
if { $count1 < "2"} {
incr count1
puts "$count1"
puts "IT7: playing question 3 again"
media play leg_incoming "flash:/Fem/solicita-telefone.wav"
puts "IT7: played question 3 again" } else {
puts "IT7 --------------------------> ERRO" if { $Response1 == "1"} {
puts "IT7 --------------------------> ERRO 1"
media play leg_incoming "flash:/Fem/desbloqueio-erro.wav"
puts "Por favor aguarde enqto sua ligacao e transf para help"
fsm setstate HELPDESK
}
if { $Response1 == "2"} {
puts "IT7 --------------------------> ERRO 2"
media play leg_incoming "flash:/Fem/alteracao-erro.wav"
puts "Por favor aguarde enqto sua ligacao e transf para help"
fsm setstate HELPDESK
}
}
}
#coleta os digitos da questao 03 proc ActionCollectQuestion3 { } {
set Question2Param(interruptPrompt) true set Question2Param(terminationKey) # set Question2Param(maxDigits) 10 set Question2Param(dialPlan) true set Question2Pattern(1) ".........."
leg collectdigits leg_incoming Question2Param }
#Action 03 of second Question proc Action3 { } { global WebServer global Response1 global Response2 global Response3 global WebReturn1 global CallerID
set StatusCollectDigits [infotag get evt_status]
#matched pattern if {$StatusCollectDigits == "cd_005"} {
set Response3 [infotag get evt_dcdigits]
set URL http://$WebServer/URA/ValidarTelefone?telefoneorigem=$CallerID&user_key=$WebReturn1&telefone=$Response3
puts "IT7: URL Validacao #3 $URL"
::httpios::geturl $URL -command httpCallback3
} else {
media play leg_incoming "flash:/Fem/telefone-invalido.wav" fsm setstate PLAYEDWRONG3
}
}
proc httpCallback3 { token } { global WebServer global Response1 global Response2 global Response3 global WebReturn1 global CallerID global Choose
if {[::httpios::status $token] == "ok"} { set WebReturn [string trim [::httpios::data $token]] } else { set WebReturn 0 }
if { $WebReturn != "0" } {
puts "IT7--------------------------------> OK FINAL !"
if { $Response1 == "1"} {
puts "password unlocking"
set URL http://$WebServer/URA/DesbloquearConta?telefoneorigem=$CallerID&user_key=$WebReturn1
puts "IT7: URL Unlock $URL"
::httpios::geturl $URL -command httpCallbackSMS }
if { $Response1 == "2"} {
puts "password changing" set URL http://$WebServer/URA/AlterarSenha?telefoneorigem=$CallerID&user_key=$WebReturn1
puts "IT7: URL Reset $URL"
::httpios::geturl $URL -command httpCallbackSMS
}
} else { if { $Response1 == "1"} {
media play leg_incoming "flash:/Fem/telefone-invalido.wav" fsm setstate PLAYEDWRONG3 } else {
media play leg_incoming "flash:/Fem/telefone-invalido.wav" fsm setstate PLAYEDWRONG3 }
} }
#------------------------------------------------------------------------------ #proc httpCallbackReset { token } { # global WebServer # global CallerID # global Response1
# if {[::httpios::status $token] == "ok"} { # set Password [string trim [::httpios::data $token]] # } else { # set Password 0 # }
# if { $Password == "1" } { # puts "IT7 ---> SENHA GERADA: $Password" # set URL http://$WebServer/URA/MandarSMS?telefoneorigem=$CallerID&cpf=$Response1&password=$WebReturn # puts "IT7: URL Enviar SMS $URL" # ::httpios::geturl $URL -command httpCallbackSMS # } else { # puts "IT7 -------------------------> SENHA NAO FOI GERADA !" # media play leg_incoming "flash:/informacaoincorreta.wav" # fsm setstat CALLDISCONNECT # } #}
proc httpCallbackSMS { token } {
global Response1
if {[::httpios::status $token] == "ok"} { set feedback [string trim [::httpios::data $token]] } else { set feedback 0 }
puts "IT7 ---> Retorno final: $feedback"
if { $feedback == "1"} { puts "THE END"
if { $Response1 == "1"} { media play leg_incoming "flash:/Fem/desbloqueio-ok.wav" fsm setstate CALLDISCONNECT
} else {
media play leg_incoming "flash:/Fem/alteracao-ok-2.wav" fsm setstate CALLDISCONNECT
}
} else { if { $Response1 == "1"} {
puts "IT7 --------------------------> ERRO ENVIANDO MENSAGEM" media play leg_incoming "flash:/Fem/desbloqueio-erro.wav"
} else {
puts "IT7 --------------------------> ERRO ENVIANDO MENSAGEM" media play leg_incoming "flash:/Fem/alteracao-erro.wav" }
} } #------------------------------------------------------------------------------
# disconnect the call proc ActionDisconnect { } { puts "IT7: Call Disconnected" call close }
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------ #------------------------------------------------------------------------------
InitializeConfiguration
set ScriptFSM(any_state,ev_disconnected) "ActionDisconnect same_state"
set ScriptFSM(CALL_INIT,ev_setup_indication) "ActionCallPrepare PREPARED" set ScriptFSM(PREPARED,ev_call_timer0) "ActionPlayWelcome PLAYEDWELCOME"
set ScriptFSM(PLAYEDWELCOME,ev_media_done) "ActionPlayQuestion1 PLAYEDQUESTION1" set ScriptFSM(PLAYEDWRONG1,ev_media_done) "ActionPlayQuestion1Again PLAYEDQUESTION1"
set ScriptFSM(COLLECTEDQUESTION1,ev_collectdigits_done) "Action1 CALLDISCONNECT"
set ScriptFSM(HELPDESK,ev_media_done) "CallHelpDesk CALLEDHELPDESK" set ScriptFSM(CALLEDHELPDESK,ev_setup_done) "CheckCallSetup ESTABLISHEDCALL"
set ScriptFSM(PLAYEDWRONG2,ev_media_done) "ActionPlayQuestion2Again PLAYEDQUESTION2" set ScriptFSM(PLAYEDQUESTION2,ev_media_done) "ActionCollectQuestion2 COLLECTEDQUESTION2" set ScriptFSM(COLLECTEDQUESTION2,ev_collectdigits_done) "Action2 CALLDISCONNECT"
set ScriptFSM(PLAYEDWRONG3,ev_media_done) "ActionPlayQuestion3Again PLAYEDQUESTION3" set ScriptFSM(PLAYEDQUESTION3,ev_media_done) "ActionCollectQuestion3 COLLECTEDQUESTION3" set ScriptFSM(COLLECTEDQUESTION3,ev_collectdigits_done) "Action3 CALLDISCONNECT"
set ScriptFSM(CALLDISCONNECT,ev_disconnected) "ActionDisconnect same_state" set ScriptFSM(CALLDISCONNECT,ev_media_done) "ActionDisconnect same_state" set ScriptFSM(CALLDISCONNECT,ev_disconnect_done) "ActionDisconnect same_state"
fsm define ScriptFSM CALL_INIT |
| Please sign in to flag this as inappropriate. |