Хочу поделиться скриптом, который начал делать для оповещения(announcement, prompt) о позиции в очереди для модуля
mod_callcenter. Я его доделал, он даже работал, пока я не заметил, что от FreeSWITCH толком не получить информации - о том, чей звонок будет отвечен следующим. Я основывался на выводе команды
Код:
callcenter_config queue list members queue_name
и далее прям поочередно смотрел кто как идет в списке и выводил оповещение, однако при нагрузочном тестировании, когда в секунду в очередь добавляется человек по 10, позиции в списке отличаются от реальной очередности ответов
Скрипт выкладываю, вдруг кому-то придет идея как его можно улучшить
Код:
//script by Evgeniy Buchnev from http://freeswitchforum.com, mails to joohny on mail.ru
//mod_callcenter queue position prompting(announcement)
var queue_position = apiExecute("callcenter_config", "queue list members 3001");
var tmp_uuid =session.getVariable("uuid");
var tmp_caller_id_number =session.getVariable("caller_id_number");
var tmp_arr = queue_position.split("\n")
tmp_arr.length = tmp_arr.length - 2;
//Deleting abandoned users
for (var i = 1; i <= tmp_arr.length - 1; i++)
{
if ((tmp_arr[i].indexOf("|Abandoned") + 1)) {tmp_arr.splice(i,1)};
};
for (var i = 1; i <= tmp_arr.length - 1; i++)
{
if ((tmp_arr[i].indexOf(tmp_uuid) + 1) )
{
session.execute("log","INFO =======Position("+tmp_caller_id_number+"): "+i+" > ");//Queue member position
session.execute("log","INFO =======All Members("+tmp_caller_id_number+"): "+(tmp_arr.length-1)+" > ");//Queue members count
session.setVariable("fscc_memb_count",(tmp_arr.length-1));//Queue members count
session.setVariable("fscc_memb_position",(i));//Queue member position
}
};
exit();
Далее значения переменных
fscc_memb_count и
fscc_memb_position можно использовать в синтезе фразы для оповещения.