odin-god
18.11.2009, 17:51
Добрый день, есть проблема Cisco 3825 не закрывает звонок на Dial-peer.
Ниже претставлены настройки:
application
service voice_woman flash:voice_woman.tcl
dial-peer voice 1506 pots
service voice_woman
incoming called-number 1506
port 0/0/0:15
!
dial-peer voice 1507 pots
service voice_woman
incoming called-number 1507
port 0/0/0:15
!
dial-peer voice 1508 pots
service voice_woman
incoming called-number 1508
port 0/0/0:15
TCL script
proc init { } {
# Инициализация глобальных статических переменных
puts "\n proc Init start"
global param
set param(interruptPrompt) true
set param(maxDigits) 4
set param(initialDigitTimeout) 10
}
proc act_Setup {} {
global param
global enter
set param(interruptPrompt) true
if { [info exists enter] } { unset enter }
leg setupack leg_incoming
leg proceeding leg_incoming
leg connect leg_incoming
media play leg_incoming flash:voice_woman_1.au
leg collectdigits leg_incoming param
}
proc CheckEnteredDigit { } {
puts "\n proc CheckEnteredDigit start"
global Status
global PressedKey
set Status [infotag get evt_status]
set PressedKey [infotag get evt_dcdigits]
switch $Status {
"cd_001" {
# НИчего не введено - сработал таймаут
fsm setstate CALLDISCONNECT
act_CallDefault
}
#"cd_002" {
#SelectMenu
#fsm setstate CALLCOMES
#}
"cd_005" {
# Сделан корректный выбор - соединяем с требуемым отделом
fsm setstate CALLDISCONNECT
act_call
}
#"cd_006" {
#media play leg_incoming _wrongMenuPoint.au
# Выбран несуществующий пункт меню
#fsm setstate CALLNOTHING
#}
"cd_007" {
# Сбор цифры был прерван - пользователь повесил трубку
fsm setstate CALLDISCONNECT
}
}
puts "\n proc CheckEnteredDigit finish"
}
proc act_close {} {
call close
}
proc act_call {} {
global param
global enter
set enter [infotag get evt_dcdigits]
leg setup $enter callinfo leg_incoming
}
proc act_CallDefault {} {
puts "\n proc act_CallDefault"
global callDefNumber
set callDefNumber "2299"
# Назначил значение переменной1
leg setup $callDefNumber callinfo leg_incoming
# Обращение к значению переменной callDefNumber
puts "\n proc act_CallSupport finish"
}
requiredversion 2.0
init
# FSM
set ivr_fsm(CALLCOMES,ev_setup_indication) "act_Setup CHECKENTERED"
set ivr_fsm(CHECKENTERED,ev_collectdigits_done) "CheckEnteredDigit same_state"
set ivr_fsm(CALLDISCONNECT,ev_disconnected) "act_close same_state"
fsm define ivr_fsm CALLCOMES
Желтым выделен TCL скрипт, может кто-нибудь подсказать???
Ниже претставлены настройки:
application
service voice_woman flash:voice_woman.tcl
dial-peer voice 1506 pots
service voice_woman
incoming called-number 1506
port 0/0/0:15
!
dial-peer voice 1507 pots
service voice_woman
incoming called-number 1507
port 0/0/0:15
!
dial-peer voice 1508 pots
service voice_woman
incoming called-number 1508
port 0/0/0:15
TCL script
proc init { } {
# Инициализация глобальных статических переменных
puts "\n proc Init start"
global param
set param(interruptPrompt) true
set param(maxDigits) 4
set param(initialDigitTimeout) 10
}
proc act_Setup {} {
global param
global enter
set param(interruptPrompt) true
if { [info exists enter] } { unset enter }
leg setupack leg_incoming
leg proceeding leg_incoming
leg connect leg_incoming
media play leg_incoming flash:voice_woman_1.au
leg collectdigits leg_incoming param
}
proc CheckEnteredDigit { } {
puts "\n proc CheckEnteredDigit start"
global Status
global PressedKey
set Status [infotag get evt_status]
set PressedKey [infotag get evt_dcdigits]
switch $Status {
"cd_001" {
# НИчего не введено - сработал таймаут
fsm setstate CALLDISCONNECT
act_CallDefault
}
#"cd_002" {
#SelectMenu
#fsm setstate CALLCOMES
#}
"cd_005" {
# Сделан корректный выбор - соединяем с требуемым отделом
fsm setstate CALLDISCONNECT
act_call
}
#"cd_006" {
#media play leg_incoming _wrongMenuPoint.au
# Выбран несуществующий пункт меню
#fsm setstate CALLNOTHING
#}
"cd_007" {
# Сбор цифры был прерван - пользователь повесил трубку
fsm setstate CALLDISCONNECT
}
}
puts "\n proc CheckEnteredDigit finish"
}
proc act_close {} {
call close
}
proc act_call {} {
global param
global enter
set enter [infotag get evt_dcdigits]
leg setup $enter callinfo leg_incoming
}
proc act_CallDefault {} {
puts "\n proc act_CallDefault"
global callDefNumber
set callDefNumber "2299"
# Назначил значение переменной1
leg setup $callDefNumber callinfo leg_incoming
# Обращение к значению переменной callDefNumber
puts "\n proc act_CallSupport finish"
}
requiredversion 2.0
init
# FSM
set ivr_fsm(CALLCOMES,ev_setup_indication) "act_Setup CHECKENTERED"
set ivr_fsm(CHECKENTERED,ev_collectdigits_done) "CheckEnteredDigit same_state"
set ivr_fsm(CALLDISCONNECT,ev_disconnected) "act_close same_state"
fsm define ivr_fsm CALLCOMES
Желтым выделен TCL скрипт, может кто-нибудь подсказать???