Сегодня речь о голосовом меню (
IVR) для маршрутизаторов Cisco, которое мы будем писать на языке TCL, и подключать на Cisco 3845.
Итак, для начала давайте разберемся в азах
Cisco начиная с версии
IOS 12 поддерживает как
VXML так и
TCL скрипты для работы с голосовым меню. Однако, в отличии от
VXML, скрипты на
TCL имеют гораздо больше возможностей взаимодействия с
Cisco IVR API. Так же существует возможность подключать гибридные
IVR скрипты, со встроенными кусками
VXML кода внутри
TCL скрипта.
Все документы, связанные с IVR от Cisco, которые мне довелось получить можно скачать
здесь.
FSM
Первое это
FSM переходы.
Finite-State Machines — абстрактный автомат, число возможных внутренних состояний которого конечно.
Выглядит это примерно так:
set ivr_fsm(CALLCOMES,ev_setup_indication) "act_Setup same_state"
Переходов таких может быть сколько угодно, и расположены они в конце
TCL скрипта.
Давайте разберемся, что это вообще такое.
Общий синтаксис этой команды таков:
set array(CURRSTATE, curr_event) “act_proc NEXTSTATE”
где:
array – это имя
FSM массива.
CURRSTATE – имя текущего состояния, при котором получено событие
curr_event.
act_proc – имя функции, которую необходимо выполнить при поступлении события
curr_event.
NEXTSTATE – имя состояния, которое установится после выполнения
act_proc.
Другими словами,
FSM это маркер, по которому Cisco сравнивает полученное от API событие с
curr_event и текущий статус с
CURRSTATE, если в каком либо FSM переходе они описаны, вызывается процедура
act_proc и состояние изменяется на
NEXTSTATE.
Самое главное в этом — это то, что текущее событие и состояние сравниваются со всеми описанными
FSM переходами
одновременно. Т.е. для Cisco не имеет значения порядок, в котором расположены FSM переходы, все они обрабатываются асинхронно.