Введение
Ранее мы уже создавали голосовое приложение для автоматического обзвона абонентов в приложении 3CX Call Flow Designer, которое использует компонент Power Dialer. При обычном исходящем обзвоне вызовы абонентам из базы делаются с одинаковой, равной, периодичностью. Однако возможна ситуация, когда некоторые вызовы (разговоры) занимают больше времени, чем запланировано. А мы все равно пытаемся набирать новых абонентов! Другая ситуация — в разные периоды времени (днем и ночью, например) в колл-центре находится разное количество операторов. Согласитесь, было бы неплохо адаптировать частоту обзвона в зависимости от наличия свободных операторов. Для этого отлично подходит новый компонент 3CX CFD, называемый предиктивный дайлер (Predictive Dialer).
В этой статье мы расскажем, как создать предиктивный исходящий обзвон (дайлер) в 3CX. Дайлер будет автоматически делать исходящие вызовы на внешние номера и соединять их внутренний Очередью вызовов. При этом скорость обзвона динамически меняется в зависимости от количества свободных операторов в этой Очереди. Это принципиально уменьшает время простоя оператора, то есть, не остаётся операторов, долгое время не получающих вызовы.
Обратите внимание — среда разработки 3CX CFD поставляется бесплатно. Но голосовые приложения будут выполняться только на 3CX редакции Pro и Enterprise. Скачать CFD можно отсюда.
Демо-проект этого голосового приложения поставляется вместе с дистрибутивом 3CX CFD и находится в папке Documents\3CX Call Flow Designer Demos.
Важно отметить, что по умолчанию диалер начинает работать в момент старта сервиса 3CX Queue Manager Service. Поэтому необходимо задать определенное условие, по которому диалер будет делать вызовы. Для этого в голосовом приложении используется компонент Create a Condition. Например, можно проверять (устанавливать) день и время суток, в которые должен выполняться обзвон. Мы покажем, как ограничить работу дайлера в рабочие дни и на протяжении определенного промежутка в течении дня.
Номера абонентов для обзвона можно брать из разных источников данных, например, из текстового файла, базы данных и т. п. В нашем примере используется база данных.
Создание проекта
Для создания проекта CFD перейдите в File > New > Project, укажите папку размещения проекта и его имя, например, PredictiveDialerDemo.
Новый проект по умолчанию содержит голосовое приложение Main.flow. В данном проекте оно не используется, поэтому удалите его в окне Project Explorer. В этом же окне добавьте новое приложение — кликните правой кнопкой мыши по названию проекта и выберите New Dialer. Назовите его MainDialer. В окне Project Explorer выберите объект MailDialer и установите его свойства в окне Properties Window, как показано ниже.
Новый дайлер теперь может работать в двух режимах:
- Power Dialer — вызовы выполняются с постоянной частотой (мы рассматривали это ранее).
- Predictive Dialer — частота вызовов регулируется автоматически в зависимости от количества свободных операторов в каждый момент времени.
Т.к. мы используем режим Predictive Dialer, рассмотрим два его свойства:
- Optimization — режим выполнения вызовов с оптимизацией для операторов или для абонентов
- Queue — добавочный номер Очереди, операторов которой дайлер будет отслеживать
При запуске дайлер проверяет общее количество операторов в Очереди и количество свободных операторов. Затем он начинает обзвон до предела, установленного для данного режима оптимизации. В зависимости от установленного режима, дайлер будет ускоряться или замедляться. Рассмотрим, как это работает:
- Оптимизация для операторов — в этом режиме дайлер старается максимально нагружать операторов, сокращая время, в течение которого они простаивают (не обрабатывают вызовы). Он будет стараться делать вызовы с такой частотой, чтобы каждый оператор в каждый момент времени работал с каким-либо вызовом. В процессе обзвона возможна ситуация, когда несколько вызовов на короткий период попадут в Очередь, ожидая освобождения оператора. В этот момент дайлер автоматически уменьшит скорость обзвона, чтобы максимально сократить время ожидания абонента в Очереди.
- Оптимизация для абонентов — в этом режиме абонент будет немедленно соединен со свободным оператором и никогда не будет ожидать в Очереди. В этом случае, в отличии от предыдущего, некоторые операторы на короткое время могут оставаться свободными. Но дайлер гарантирует, что каждый набранный абонент будет немедленно обслужен оператором.
Выбор времени начала обзвона
Добавим в приложение компонент Date & Time condition и назовем его checkTimeToCall. Компонент использует только одно ветвление timeToCall, которое будет выполняться при наступлении времени обзвона.
Чтобы настроить ветвление timeToCall на выполнение с понедельника по пятницу с 9:00 до 17:00, установим отбор DID линий AllDIDs и временные интервалы, как показано ниже.
Получение номера из базы и набор абонента
Как было сказано, мы получаем номера абонентов из внешней базы данных. Запрос к базе должен возвращать номер абонента или пустую строку, если абонентов в данный момент больше не осталось. Для этого воспользуемся компонентом Database Access и настроим его для выполнения запроса к базе.
Поскольку запрос возвращает единственное значение (номер абонента), установим тип оператора Scalar. Разумеется, вы должны изменить строку SQL запроса в соответствии со структурой вашей базы данных.
После настройки компонента Database Access проверим, вернул ли он номер абонента. Это необходимо сделать до начала набора номера. Добавим еще один компонент Create a condition и создадим единственное ветвление с условием проверки наличия номера. Логическое выражение проверки номера:
GREAT_THAN(LEN(TRIM(getNextNumber.ScalarResult)),0)
Если условие выполняется, значит у нас есть номер для вызова. И затем выполняем вызов с помощью компонента Make Call, который настраивается следующим образом:
- Make call from (источник вызова) — номер абонента, полученный из базы
- To (получатель вызова) — добавочный номер Очереди, к которой подключены операторы.
Окончательный вид голосового приложения предиктивного обзвона должен иметь примерно такой вид.
Компиляция и установка приложения на сервер 3CX
Голосовое приложение готово! Теперь его следует скомпилировать и загрузить на сервер 3CX. Для этого:
- Перейдите в меню Build > Build All, и CFD создаст файл PredictiveDialerDemo.tcxvoiceapp.
- Перейдите в интерфейс управления 3CX, в раздел Очереди вызовов. Создайте новую Очередь вызовов, укажите название и добавочный номер Очереди, а затем установите опцию Голосовые приложения и загрузите скомпилированный файл.
- Сохраните изменения в очереди.
Обратите внимание — обзвон начнется при запуске / перезапуске сервиса 3CX Queue Manager service.