Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
9 {media play leg_icoming _dest_blocked.au %s500 _enter_dest.au;}
12 {media play leg_incoming _not_enuf.au %s500 _enter_dest.au;}
default {
media play leg_incoming _no_aaa.au;
fsm setstate CALLDISCONNECT;
return;
}
}
return;
}
proc act_ActiveTimer { } {
global WarnTime;
global incoming;
global outgoing;
set incoming [infotag get leg_incoming];
set outgoing [infotag get leg_outgoing];
connection destroy con_all;
timer start leg_timer [expr $WarnTime - 1] leg_incoming;
return;
}
Процедура act_ActiveTimer выполнится в момент получения скриптом события ev_leg_timer.
В ее задачи входит временно отсоединить вызывающую и вызываемую стороны звонка (это необходимо, чтобы клиент мог получить информацию о том, что время его звонка заканчивается), т.к. нельзя проигрывать звуковые файлы при установленном звуковом канале между двумя сторонами разговора, и установить новый таймер на оставшиеся у клиента $WarnTime секунд. После разрыва соединения скрипт получит событие ev_destroy_done, обрабатываемое FSM-переходом:
set ivr_fsm(CALLWARN,ev_destroy_done) "act_CallWarnDestroy same_state";
proc act_LastActiveTimer { } {
connection destroy con_all;
return;
}
Процедура act_LastActiveTimer, так же как и act_Active Timer, разрывает голосовой канал между двумя сторонами звонка согласно FSM-переходу:
set ivr_fsm(CALLLASTACTIVE,ev_leg_timer) "act_LastActiveTimer same_state";
После этого скрипт будет ожидать получения события ev_destroy_done, которое обработается FSM-переходом:
set ivr_fsm(CALLLASTACTIVE,ev_destroy_done) "act_PlayDisconnect CALLDISCONNECT";