Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
return;
}
Процедура act_CallAuthorize анализирует статус события ev_authorize_done. При успешной авторизации клиенту проговаривается, сколько времени у него на балансе и возвращенное скрипту RADIUS-сервером в переменной h323-credit-time, далее скрипт запускает команду leg collectdigits leg_incoming param и командой fsm setstate PLACECALL переходит в новое состояние: PLACECAL, в котором по завершении проигрывания звуковых файлов обработает событие ev_media_done и через FSM-переход:
set ivr_fsm(PLACECALL,ev_media_done) "act_CallSetup same_state;
будет выполнена функция act_CallSetup, которая наконец-то соединит нашего клиента с требуемым номером.
При ошибке в авторизации функция получит код ошибки из переменной h323-return-code и будет вызвана процедура act_PlayDestReturnCode, которая озвучит соответствующее сообщение об ошибке.
Если счетчик попыток ввести номер не превышен, скрипт будет ожидать от клиента повторного ввода номера, по завершении которого с помощью того же FSM-перехода:
set ivr_fsm(DESTSELECTION,ev_collectdigits_done) "act_GotDestination same_state";
управление будет передано функции act_GotDestination.
Теперь объясним, зачем мы используем команду leg collectdigits при успешной авторизации, ведь казалось бы больше ждать ввода от клиента не стоит.
Это позволит клиенту прервать сообщение о доступном времени звонка и перейти непосредственно к соединению. Данная возможность будет реализована с помощью команд:
set param(enableReporting) true
и
set param(interruptPrompt) false;
и FSM-перехода:
set ivr_fsm(PLACECALL,ev_digit_end) "act_FastSetup same_state";
Если клиент в момент прослушивания информации об оставшемся времени звонка нажмет клавишу «#», скрипт получит событие ev_digit_end, сигнализирующее о том, что была нажата некая клавиша, и будет вызвана функция act_FastSetup, которая проверит эту клавишу на соответствие с символом «#». В случае совпадения прервет проигрывание звуковых файлов командой media stop и вызовет процедуру act_CallSetup. Переменная SetupDone будет установлена в 1, чтобы избежать повторного вызова функции act_CallSetup.
proc act_FastSetup { } {
global SetupDone;
if {[infotag get evt_digit] != "#" || $SetupDone} {
return;
}
media stop leg_incoming;
act_CallSetup;
set SetupDone 1;
return;
}
proc act_CallSetup { } {
global destination;
global account;
global SetupDone;