📄 debitcard-multi-lang-cisco.1.1.0.2.tcl
字号:
switch -regexp [lindex $newlist 1] { {00} { } {[0|2-9][1]} {lappend prompt "[set prefix]_minute.au"} {[0|2-9][2-4]} {lappend prompt "[set prefix]_2-4_minutes.au"} default {lappend prompt "[set prefix]_5-20_minutes.au"} } } puts "\t\t*** playPrompt param2 info [set prefix]_you_have.au $prompt" set ev [eval [list playPrompt param2 info [set prefix]_you_have.au] $prompt] } default {do_decimal_part if {[lindex $newlist 1] == 1 } { lappend prompt "[set prefix]_minute.au" } elseif {[lindex $newlist 1] > 1 } { lappend prompt "[set prefix]_minutes.au" } puts "\t\t*** playPrompt param2 info [set prefix]_you_have.au $prompt" set ev [eval [list playPrompt param2 info [set prefix]_you_have.au] $prompt] } }}proc do_second_authorize {} { global state global destination global account global pin global creditTime global warnTime global promptFlag2 global fcnt global retryCnt global prefix global noPlay global param2 global noTimeLimit global len global prompt global newlist global redirectnum global operatorNum global returncode set ev [authorize $account $pin $destination [ani] info] set returncode [getVariable radius returnCode] set creditTime [getVariable radius creditTime] set redirectnum [getVariable radius redirectNumber] switch -regexp $returncode { {13} - {51} - {52} {set noTimeLimit 1 set state do_place_call return 0 } } switch -regexp $ev { {authorized} {if {[string compare $creditTime uninitialized] == 0} { set ev [ playPrompt param2 info [set prefix]_no_aaa.au] set state end } elseif {$creditTime == "umlimited"} { set noTimeLimit 1 # play mesg only if time left is 20 secs > warntime } elseif {[expr $creditTime - $warnTime] < 20} { set noPlay 1 switch -regexp $prefix { {th} - {ca} - {ru} - {ja} { # Convert creditTime to hours and minutes # Build prompt and play creditTime do_creditTime_prompt } default {set ev [playPrompt param2 info [set prefix]_you_have.au %t$creditTime ]} } } else { switch -regexp $prefix { {th} - {ca} - {ru} - {ja} { # Convert creditTime to hours and minutes # Build prompt and play creditTime do_creditTime_prompt } default {set ev [playPrompt param2 info [set prefix]_you_have.au %t$creditTime ]} } } set state do_place_call return 0 } {authorization failed} { incr fcnt set promptFlag2 2 #play prompt base on return code switch -regexp $returncode { {3} {set ev [playPrompt param2 info [set prefix]_account_blocked.au] set state end } {4} {set ev [playPrompt param2 info [set prefix]_zero_bal.au] set state end return 0 } {5} {set ev [playPrompt param2 info [set prefix]_card_expired.au] set state end } {9} {set ev [playPrompt param2 info [set prefix]_dest_blocked.au] set state end } {7} {set ev [playPrompt param2 info [set prefix]_dest_blocked.au] set state end } {12} {set ev [playPrompt param2 info [set prefix]_not_enuf.au] set state end } {Uknown variable name} {set ev [playPrompt param2 info [set prefix]_no_aaa.au] set state end } } if { $fcnt < $retryCnt } { set state do_get_dest } else { set state do_second_authorize_fail } return 0 } } set state end return 0}proc do_place_call {} { global state global destination global account global redirectnum global operatorNum global returncode set callInfo(accountNum) $account if { $returncode == 52 } { if { $redirectnum >= 0 } { set callInfo(redirectNum) $redirectnum } elseif { $operatorNum >= 0 } { set callInfo(redirectNum) $operatorNum } else { set state end return 0 } } set ev [placeCall $destination callInfo info] switch -regexp $ev { {active} {set state do_active} {call fail} {set state do_place_fail} default {set state end} } return 0}proc do_active_notimer {} { global state set ev [waitEvent] while { [string compare $ev "digit"] == 0 } { set ev [waitEvent] } set state end return 0}proc do_active_last_timer {} { global state global warnTime global creditTime global fcnt global noPlay global prefix global pound if { $noPlay == 1} { set ev [startTimer [expr {$creditTime - 1}] info] } else { set ev [startTimer [expr {$warnTime - 4}] info] } while {[string compare $ev digit] == 0} { set ev [startTimer $info(timeLeft) info] } switch -regexp $ev { {longpound} {do_longpound return 0 } {timeout} {clearOutgoingLeg info set state do_out_of_time } default {set state end } } return 0}proc do_longpound {} { global state global fcnt global noPlay global pound set fcnt 0 set noPlay 0 set pound 1 clearOutgoingLeg info #set state first_authorize set state do_get_dest return 0}proc do_active_timer {} { global state global warnTime global creditTime global prefix global fcnt global noPlay global pound global param4 set delay [expr {$creditTime - $warnTime}] set ev [startTimer $delay info] while {[string compare $ev digit] == 0} { set ev [startTimer $info(timeLeft) info] } switch -regexp $ev { {longpound} {do_longpound return 0 } {outgoing disconnected} {set fcnt 0 set pound 1 #set state first_authorize set state do_get_dest } {timeout} {if {$noPlay == 1} { do_active_last_timer } else { set warnTime [string trimleft $warnTime] switch -regexp $prefix { {ca} - {th} - {ru} - {ja} {set ev [playPrompt param4 info [set prefix]_you_have.au [set prefix]_$warnTime.au [set prefix]_seconds.au]} default {set ev [playPrompt param4 info [set prefix]_you_have.au %t$warnTime]} } do_active_last_timer } } default {set state end } } return 0}proc do_active {} { global state global creditTime global warnTime global noTimeLimit if { ($noTimeLimit == 1) || ( [string compare $creditTime "unlimited"] == 0) || ( [string compare $creditTime "uninitialized"] == 0 ) } { do_active_notimer } else { if {$creditTime < $warnTime} { do_active_last_timer } else { do_active_timer } } return 0}proc do_out_of_time {} { global state global prefix global param2 set ev [playPrompt param2 info [set prefix]_disconnect.au] set state end return 0}proc do_first_authorize_fail {} { global state global prefix global param2 set returncode [getVariable radius returnCode] set ev [playPrompt param2 info [set prefix]_final.au] set state end return 0}proc do_second_authorize_fail {} { global state global prefix global param2 set returncode [getVariable radius returnCode] set ev [playPrompt param2 info [set prefix]_final.au] set state end return 0}proc do_collect_fail {} { global state global prefix global param2 set ev [playPrompt param info [set prefix]_dest_collect_fail.au] set state end return 0}proc do_place_fail {} { global state global prefix global destBusy global param2 set destBusy 1 set state do_get_dest return 0}#-------------------------------------------------------# main#acceptCallset fcnt 0set selectCnt 0set lang 0set count 0set counter 0set promptFlag 0set promptFlag2 0set wrongLanguage 0set noPlay 0set pound 0set destBusy 0set noTimeLimit 0set param1(interrupt) trueset param1(abortKey) *set param1(terminationKey) #set param2(interrupt) trueset param2(abortKey) *set param2(terminationKey) #set param2(playComplete) trueset param3(interrupt) trueset param3(abortKey) *set param3(terminationKey) #set param3(dialPlanTerm) trueset param4(interrupt) trueset param4(abortKey) *set param4(terminationKey) #set param4(playComplete) trueset param4(insertMessage) trueset param5(interrupt) true#install paramsset accountLen [getVariable config uidLen]set pinLen [getVariable config pinLen]set retryCnt [getVariable config retryCount]set operatorNum [getVariable config redirectNumber]set warnTime [getVariable config warningTime]setVariable longPound trueset totalLang [getVariable local totalLanguages]# set primary languagesetVariable language 1set prefix1 [getVariable local language]set prefix [getVariable local language]if {$totalLang == 0} { set state end return 0} else { set state do_select_language} while { $state != "end" } { puts "************ cid([callID]) app running state $state" $state}# Script Approval Signature: C/df6f
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -