Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

    infotag set med_language prefix "ru";

    SelectLanguageMenu;

    return;

    }

Процедура act_Setup вызывается IVR-скриптом при поступлении нового звонка. Именно с нее, по сути, начинается обработка звонка клиента. Почему именно с нее? Имя этой функции определено как обработчик события ev_setup_indication, которое генерируется при каждом новом звонке. За это отвечает строчка:

set ivr_fsm(CALLCOMES,ev_setup_indication) "act_Setup same_state";

в конце нашего скрипта.

Тут следует ненадолго перейти к теме FSM. Перед выполнением IVR-скрипта требуется определить имя массива, который будет содержать в себе все состояния звонка, функции-обработчики событий, которые могут возникнуть при этом состоянии, и имя следующего состояния, в которое перейдет звонок при выполнении этой функции, а также стартовое состояние звонка. Заметьте: не после выполнения функции, а непосредственно сразу (одновременно). Учтите также, что все вызовы функции и команд в TCL IVR API «не блокирующие», и для выполнения последующей команды скрипт не будет дожидаться завершения предыдущей. Это может смутить программистов, работавших ранее с такими языками, как Си, но к этому необходимо привыкнуть. Например, если в процедуре написаны следующие команды:

leg collectdigits 1 callInfo

leg collectdigits 2 callInfo

leg setup 295786 setupInfo $callID5

puts " This will be executed immediately i.e. before the collect digits or call setup is actually complete"

то все они будут выполнены одна за другой, не дожидаясь завершения предыдущей. В данном случае начнется процесс сбора цифр на виртуальных составляющих звонка leg 1 и leg 2, процесс установки соединения на $callID5 и выдано отладочное сообщение командой puts. Далее IVR-приложение начнет ожидать получения событий от этих процессов и вызвать соответствующие функции-обработчики.

Командой fsm define (в конце нашего скрипта) определяется имя массива, описанного выше ivr_fsm, и первоначальное состояние звонка CALLCOMES. Командой set ivr_fsm мы будем добавлять к этому массиву новые элементы, создавая так называемые «FSM-переходы». Общий синтаксис этой команды таков:

set array(curr_state,curr_event) “act_proc NEXTSTATE”

где:

n  array – это имя определенного командой fsm define массива.

n  curr_state – имя текущего состояния скрипта, при котором получено событие curr_event.

n  act_proc – имя функции-обработчика события, которую необходимо выполнить при поступлении события curr_event в состоянии curr_state.

n  NEXTSTATE – имя состояния, в которое должен перейти звонок.

 

При определении FSM можно использовать следующие мета-определения:

n  any_state – определяет любое состояние звонка, для которого не установлен иной обработчик в другом FSM-переходе; может быть использовано в левой части (индексе массива) FSM-перехода.

n  same_state – трактуется как «то же состояние»; может быть использовано в правой части (значении элемента массива) определения FSM-перехода.

n  ev_any_event – определяет любое событие, которое может получить скрипт.

Теперь, глядя на строчку:

set ivr_fsm(CALLCOMES,ev_setup_indication) "act_Setup same_state";

мы легко можем понять, что при получении события ev_setup_indication в состоянии CALLCOMES будет выполнена функция act_Setup и звонок останется в прежнем состоянии (same_state).

Возвращаясь к нашей функции act_Setup, мы видим, что в ней вызывается процедура init_perCallVars для объявления и инициализации глобальных переменных, которым необходимо иметь возможность менять свое значение при каждом отдельно взятом звонке. Командой leg setupack посылается сообщение setup acknowledgement, чтобы перевести наш звонок в состояние, при котором возможно получение клиентом голосовых сообщений.

Команда infotag set med_language prefix «ru» устанавливает текущий язык голосового интерфейса и фактически указывает скрипту, где ему следует искать звуковые файлы для этого языка. Помните строчку в глобальной конфигурации шлюза:


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2016 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100