Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
}
connection destroy con_all;
return;
}
Процедура act_LongPound интересна тем, что дает клиенту возможность во время разговора (состояния CALL ACTIVE, CALLLASTACTIVE) прервать звонок и сделать новый, не кладя трубки. За это отвечают следующие FSM-переходы:
set ivr_fsm(CALLACTIVE,ev_digit_end) "act_LongPound CONNDESTROY";
set ivr_fsm(CALLLASTACTIVE,ev_digit_end) "act_LongPound CONNDESTROY";
Если клиент нажмет любую клавишу, скрипт в этих состояниях получит событие ev_digit_end, и будет вызвана процедура act_LongPound, которая проверит клавишу на совпадение с символом «#». В случае соответствия она разрушит канал связи между участниками звонка. При успешном разрушении канала связи скрипт получит событие ev_destroy_done. Поскольку согласно предыдущему FSM-переходу звонок находился в состоянии CONNDESTROY, будет введен в работу FSM-переход:
set ivr_fsm(CONNDESTROY,ev_destroy_done) "act_ConnDestroyed same_state";
который вызовет процедуру act_ConnDestroyed. Последняя окончательно и полностью отключит вызываемую сторону и переведет скрипт в состояние DESTSELECTION, попутно передав управление функции act_GetDestination и не забыв заново проинициализировать глобальные переменные, необходимые для осуществления нового звонка.
proc act_ConnDestroyed { } {
leg disconnect leg_outgoing;
init_perCallVars;
act_GetDestination;
fsm setstate DESTSELECTION;
return;
}
proc act_Cleanup { } {
call close;
}
requiredversion 2.0
init
set ivr_fsm(any_state,ev_disconnected) "act_Cleanup same_state";
set ivr_fsm(CALLCOMES,ev_setup_indication) "act_Setup same_state";
set ivr_fsm(CALLCOMES,ev_collectdigits_done) "CheckLangSelection CHECKLANG";
set ivr_fsm(CHECKLANG,ev_media_done) "SelectLanguageMenu CALLCOMES";
set ivr_fsm(CARDSELECTION,ev_collectdigits_done) "act_GotCardNumber same_state";