Перехват звонков из очереди

Материал из Oktell
Перейти к: навигация, поиск

Наверх

Цель: Настроить внешний модуль с возможностью перехвата любого звонка, находящегося в очереди ожидания в системе Oktell.

Задача актуальна в целях разгрузки очереди. Известно, что в часы наибольшей нагрузки в систему поступает большое количество звонков и часто доступные операторы не способны справиться с поступающим потоком абонентов. В эти моменты, супервизору может быть удобен мониторинг текущих очередей в системе и возможность перехватить абонента, который находится в очереди дольше всех.

Функционал реализовывается во внешнем модуле с частотой обновления раз в 2 секунды. При создании сценариев было обращено особое внимание на минимальное количество обращений в базу данных с целью снижения нагрузки на сервер баз данных.

Рассмотрим детальнее процесс реализации данной задачи.


Сценарий получения списка внешних линий

Сценарий предназначен для записи в глобальную переменную xml-структуры со списком всех внешних линий. Это нужно для того, чтобы не нагружать сервер БД при мониторинге, запрашивая их список. Глобальная переменная доступна во всех запускаемых сценариях.

Сценарий рекомендуется один раз в день, например, при запуске системы (при условии, что список внешних линий не меняется в течении дня).

Вид сценария представлен на рисунке:


Перехват звонков 001.png


  • Компонент "Получение списка линий" - делает запрос в БД Oktell на получение списка внешних линий в XML-формате. Используется следующий SQL-запрос:
declare @lines xml
set @lines = ( select SystemNumStr  from A_ServerExtLines for XML path ())
select @lines as "lines_queus"

В параметрах SQL-запроса переменные не указываются. Запрос возвращает результат в столбце lines_queus, поэтому для передачи значения в сценарии создается глобальная переменная lines_queus. Результат SQL-запроса lines_queus будет автоматически присвоен переменной сценария lines_queus.

ВНИМАНИЕ: Если имя переменной сценария не будет совпадать с именем возвращаемого столбца в SQL-запросе, то значение не будет передано.


  • Компонент "Ув1" - отладочное уведомление для вывода на экран значения в переменной lines_queus.


Модификация главного сценария

Модификация сценария заключается в добавлении в контент линии информации о переключении. Эта информация позволяет разделять абонентов в списке, видеть на какую группу операторов звонит тот или иной абонент.

Рассмотрим упрощенный вид главного сценария. В примере перед переключением на номер отдела менеджеров (105), в контент линии абонента заносится строка "Менеджеры".


Перехват звонков 002.png


  • Компонент "Контент линии" - добавляет информацию в контент линии. Установлены следующие настройки:
    • Действие - Установить
    • Тип объекта - Линия
    • Ключ линии - Функция "Номер линии"
    • Свойство/действие - Поле контента линии
    • Значение - строка, например, "Менеджеры".


  • Компонент "Переключение" - переключает абонента на пользователя или группу пользователей. Из основных настроек:
    • Назначение - Внутрь
    • Номер - например, 105
    • Очередь ожидания - Да


ВНИМАНИЕ: Добавляйте или изменяйте информацию в контенте линии перед каждым переключением в вашей системе. Данная модификация также в некоторых случаях может применяться к сценарию переключения.


Сценарий мониторинга для внешнего модуля

Сценарий опрашивает каждую внешнюю линию из списка в глобальной переменной lines_queus и определяет находится ли линия в очереди. Если линия находится в очереди, то с помощью контента линии определяются все характеристики абонента (номер телефона, время в очереди, информации о переключении). Полученная информация в виде html-страницы выводится на экран в настроенном внешнем модуле.

Вид сценария представлен на рисунке:


Перехват звонков 003.png


  • Компонент "Старт 1" - в качестве параметра запуска используется переменная user (строковая). В этой переменной будет храниться ID пользователя, от имени которого запущен данный сценарий.
  • Компонент "URL" - присвоение переменной URL (строковая) строки с подключением к вашему Web-серверу. Строка должна содержать
    • базовую авторизацию (для версий Oktell старше 2.9).
    • IP-адрес сервера Oktell
    • Порт для подключений к Web-серверу Oktell

Подробнее о настройке можно прочитать в статье: Настройка Web-сервера Oktell. В примере, http://user1:1@192.168.0.82:4055.


  • Компонент "Ув1" - отладочное уведомление с выводом значения глобальной переменной lines_queus и переменной user


  • Компонент "Id=1" - присваивает переменной id (число) значение 1. Переменная id будет счетчиком в цикле.


  • Компонент "HTML-1" - присваивает переменной html (строковая) выражение:
'<html>
<head>
<meta charset="utf-8">
<title>Очереди</title>

<script type="text/javascript">
function locs()
{
   document.location.href="";
}
setTimeout("locs()", 2000);
</script>

</head>
<body >

<iframe name="invisible" style="display:none"></iframe>

<table border="1" align="center" style="font: 20px arial;">
<tr>
<td>Абонент</td>
<td>Набранный номер</td>
<td>Описание</td>
<td>Время в ожидании</td>
<td>Порядок в очереди</td>
<td>Перехватить</td>
</tr>'

В переменной html будет содержаться html-страница, которая будет показываться во внешнем модуле. Некоторые особенности:

  • в строке setTimeout("locs()", 2000); вы можете поменять период автообновления страницы. Для этого замените число 2000 на время в миллисекундах.
  • в строке <table border="1" align="center" style="font: 20px arial;"> вы можете поменять размер шрифта. Для этого измените выражение 20px.
  • с помощью тега <td> вы сможете добавить или удалить столбцы в показываемой форме
  • Компонент "Rowcount"
  • Компонент "Id>Rowcount"
  • Компонент "Line"
  • Компонент "Позиция в очереди"
  • Компонент "Позиция >=0"
  • Компонент "Ув2"
  • Компонент "Description"
  • Компонент "Timestart"
  • Компонент "CallerID"
  • Компонент "CalledID"
  • Компонент "TimeInQueu"
  • Компонент "Ув3"
  • Компонент "HTML-2"
  • Компонент "Id++"
  • Компонент "HTML-3"
  • Компонент "Ув4"
  • Компонент "Возвращаемое значение"




Сценарий перехвата

=== Сценарий вместо отбоя внешней линии ===