Колл-центр для исходящего обзвона: создаем предиктивный диалер в 3CX Call Flow Designer

Введение


Ранее мы уже создавали голосовое приложение для автоматического обзвона абонентов в приложении 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. Для этого:

  1. Перейдите в меню Build > Build All, и CFD создаст файл PredictiveDialerDemo.tcxvoiceapp.
  2. Перейдите в интерфейс управления 3CX, в раздел Очереди вызовов. Создайте новую Очередь вызовов, укажите название и добавочный номер Очереди, а затем установите опцию Голосовые приложения и загрузите скомпилированный файл.
  3. Сохраните изменения в очереди.

Обратите внимание — обзвон начнется при запуске / перезапуске сервиса 3CX Queue Manager service.
3CX Ltd. 96,39
Windows VoIP АТС с видеоконференциями Webmeeting
Поделиться публикацией
Комментарии 6
  • 0
    Все это хорошо. На сайте 3СХ была эта статья. Но момент, который меня больше всего смущает. А как работать с индексом? Что будет плюсовать тот же самый индекс, как в прошлых версиях. Ведь при таком раскладе звонок будет идти постоянно на первый номер.
    • 0
      Вы имеете ввиду индекс в базе для последовательной выборки номеров?
      • 0
        Да. Думал над вариантом добавить переменную в CFD. Изначальное значение будет = 1. А в конце делать Increment variable.

        Вы как реализовали у себя?
        • 0
          Тут есть разные варианты, см. www.3cx.com/community/threads/question-regarding-3cx-predictive-dialer.52989
          • 0
            Благодарю.

            Их поддержка, как обычно информативна. Сделали реализацию на уровне базы, но в итоге сталкиваешься с определенными проблемами. Просмотр занятости разных операторов, перезвон в определенное время и.т.д
            • 0
              Лучше всего на англоязычном форуме задать эти вопросы — реально отвечают.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое