Пин-коды разной длины

Технические вопросы по UTM 5.0
Ответить
Дмитрий Березовский
Сообщения: 16
Зарегистрирован: Пн дек 12, 2005 22:29

Пин-коды разной длины

Сообщение Дмитрий Березовский »

Подскажите, кто может.... как заставить Cisco+UTM5 обрабатывать пинкоды предоплаченных VoIP карт разной длины, например 12 и 13 знаков??? А то проблема возникла серьезная...

Дмитрий Березовский
Сообщения: 16
Зарегистрирован: Пн дек 12, 2005 22:29

Сообщение Дмитрий Березовский »

В принципе все оказалось банально просто... Сейчас работают и 12 и 13 знаков. Если кому надо, обращайтесь...

aospan
NetUP Team
Сообщения: 1639
Зарегистрирован: Чт янв 13, 2005 20:30

Сообщение aospan »

Дмитрий Березовский писал(а):В принципе все оказалось банально просто... Сейчас работают и 12 и 13 знаков. Если кому надо, обращайтесь...
Опишите пожалуйста, как сделали ?

Дмитрий Березовский
Сообщения: 16
Зарегистрирован: Пн дек 12, 2005 22:29

Сообщение Дмитрий Березовский »

Вот исправленный фрагмент скрипта TCL:
proc act_GotCardNumber { } {
puts "--== NetUP IVR ==-- ::invoke act_GotCardNumber::";
global count
global retryCnt
global promptFlag
global account
global pin
global accountLen
global cardLen
global ani

set status [infotag get evt_status];

puts "--== NetUP IVR ==-- ::invoke act_GotCardNumber::status ${status}";

# Do we need to calculate len ???
if {$status == "cd_005"} {
set number [infotag get evt_dcdigits];
puts "NUMBER=$number";
set numberLen [ string length $number ]
if { $numberLen <= $cardLen } {
set account [ string range $number 0 [expr $numberLen -1]]
set pin [ string range $number $numberLen [expr $numberLen -1]]

#Do authorize
aaa authorize $account $pin $ani "" leg_incoming
} else {
incr count
set promptFlag 1
if {$count < $retryCnt} {
act_GetCard
fsm setstate same_state
} else {
media play leg_incoming _bye.au
fsm setstate CALLDISCONNECT
}
}
return
}

#timeout
if {$status == "cd_001"} {
set number [infotag get evt_dcdigits]
puts "NUMBER=$number";
set numberLen [ string length $number ]
if { $numberLen == 0 } {
incr count
set promptFlag 3
if {$count < $retryCnt} {
act_GetCard
fsm setstate same_state
} else {
media play leg_incoming _bye.au
fsm setstate CALLDISCONNECT

}
return
}
if { $numberLen <= $cardLen } {
set account [ string range $number 0 [expr $numberLen -1]]
set pin [ string range $number $numberLen [expr $numberLen -1]]

#Do authorize
aaa authorize $account $pin $ani "" leg_incoming
} else {
incr count
set promptFlag 1
if {$count < $retryCnt} {
act_GetCard
fsm setstate same_state
} else {
media play leg_incoming _bye.au
fsm setstate CALLDISCONNECT
}
}
return
}
Изменения в программе выделены красным. Все просто. В моем случае этого оказалось достаточо.

Ответить