freeswitchforum.com
https://freeswitchforum.com/

mod_callcenter оповещение о позиции в очереди
https://freeswitchforum.com/viewtopic.php?f=6&t=98
Страница 1 из 1

Автор:  joohny [ 30 авг 2012 10:57 ]
Заголовок сообщения:  mod_callcenter оповещение о позиции в очереди

Хочу поделиться скриптом, который начал делать для оповещения(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 можно использовать в синтезе фразы для оповещения.

Страница 1 из 1 Часовой пояс: UTC + 4 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/