Кошик
33 відгуків
Бесплатная АТС для бизнеса от 3CX и Google, 50 пользователейСкачать
+380679586868
+380443928676
УкраинаДніпропетровська областьДніпроул. Вернадского 24 / 4
Залишити відгукНаявність документів
Знак Наявність документів означає, що компанія завантажила свідоцтво про державну реєстрацію для підтвердження свого юридичного статусу компанії або фізичної особи-підприємця.

Створення програми для вихідного обдзвону в 3CX CFD

Створення програми для вихідного обдзвону в 3CX CFD

Ми розповімо, як створити додаток для автоматичного вихідного викликів абонентів (Dialer) в 3CX CFD, використовуючи компонент MakeCall. Діалер автоматично додзвонюється до абонентів зі списку і з'єднує виклик за номером або Чергою викликів 3CX.

Введення

Додаток - діалер дозволяє проводити ефективні, автоматизовані кампанії вихідного обдзвону. Оператори колл-центру економлять сили і час, просто приймаючи скомутовані виклики - не потрібно шукати і набирати потрібний номер!

Зверніть увагу - середовище розробки 3CX CFD поставляється безкоштовно. Але голосові програми будуть виконуватися тільки на 3CX редакції Pro і Enterprise. Скачати CFD можна звідси. Демо-проект цього голосового додатки поставляється разом з дистрибутивом 3CX CFD і знаходиться в папці Documents\3CX Call Flow Designer Demos.

Важливо відзначити, що за замовчуванням діалер починає працювати в момент старту сервісу 3CX Queue Manager Service. Тому необхідно задати певну умову, за яким діалер буде робити дзвінки. Для цього в голосовому додатку використовується компонент(и) Create a Condition. Наприклад, можна перевіряти (встановлювати) час доби, в який повинен виконуватися обзвон.

Без визначення умов, обзвон починається в момент старту сервісу і триває до тих пір, поки не буде зупинений сервіс 3CX Queue Manager Service, або не буде видалена Чергу з цим голосовим додатком, або голосове додаток не буде видалено з Черги дзвінків. Погодьтеся, це незручно.

Номери для викликів можуть надходити з будь-якого джерела - текстового файлу, бази даних і т. п. В нашому прикладі номери беруться з текстового файлу. В голосовому додатку також перевіряється поточні дата і час (дзвінки виконується тільки в робочі дні і в робочий час), і статус операторів для розподілу дзвінка (якщо вільних операторів немає, обзвон призупиняється).

Створення проекту

Для створення проекту CFD перейдіть в File → New → Project, вкажіть папку розміщення проекту і його ім'я, наприклад, OutboundDialerDemo. Новий проект за замовчуванням містить голосове додаток Main.flow. В даному проекті воно не використовується, тому видалите його у вікні Project Explorer. В цьому ж вікні додайте новий додаток - клікніть правою кнопкою миші по назві проекту і виберіть New Dialer. Назвіть його MainDialer. У вікні Project Explorer виберіть об'єкт MailDialer і встановіть його властивості у вікні Properties Window, як показано нижче.

Діалер має два параметри, що визначають його поведінку:

  • ParallelDialers - кількість одночасно завантажуваних сутностей діалера;
  • PauseBetweenDialerExecution - час, що кожна сутність очікує, перед виконанням виклику (строго кажучи, перед початком процедури перевірки умов для виконання виклику).
Пояснимо це на прикладі. Припустимо, ми встановили ParallelDialers в 5, а PauseBetweenDialerExecution у 30 сек. Додаток буде працювати наступним чином:
  1. Створюється перший діалер (сутність), отримує номер для виклику, дзвонить і починає чекати 30 сек.
  2. Через 6 сек. створюється другий діалер, отримує номер, дзвонить і починає чекати 30 сек.
  3. Через 6 сек. створюється третій діалер, отримує номер, дзвонить і починає чекати 30 сек.
  4. Через 6 сек. створюється четвертий діалер, отримує номер, дзвонить і починає чекати 30 сек.
  5. Через 6 сек. створюється п'ятий діалер, отримує номер, дзвонить і починає чекати 30 сек.
  6. Через 6 с. "прокидається" перший діалер, отримує номер для виклику, дзвонить і починає чекати 30 сек.
  7. Через 6 с. "прокидається" другий діалер, отримує номер для виклику, дзвонить і починає чекати 30 сек.і т. д.
Як бачите, ці два параметри визначають частоту викликів. При установці ParallelDialers в 5 і PauseBetweenDialerExecution у 30 сек., буде відбуватися 10 дзвінків в хвилину. Змінюючи параметри, ми визначаємо бажану частоту дзвінків.

Визначення підходящого часу викликів

У нашому прикладі обдзвін буде виконуватися тільки з понеділка по п'ятницю з 9 до 17. Для виконання цієї умови, перетягніть компонент Create a condition бічній панелі компонентів в основне вікно середовища розробки і назвіть його checkTimeToCall. Компонент буде мати два розгалуження: timeToCall - виконується при відповідності умов (часу) викликів і nothingToDo - виконується при невідповідності умовам.

Створимо умова виконання розгалуження timeToCall (параметр Condition). У CFD для цього використовується вираз C#, повертає True при попаданні в часові рамки:

((int)DateTime.Now.DayOfWeek) > 0 && ((int)DateTime.Now.DayOfWeek) < 6 && DateTime.Now.Hour >= 9 && DateTime.Now.Hour < 17

Визначення вільних операторів

Нагадаю, що наш діалер "бере" номер з текстового файлу і комутує його з номером Черги дзвінків 3CX, до якої, зрозуміло, повинні бути підключені оператори. Припустимо, що номер Черги - 800, а номери операторів 201, 202 і 203. Слід перевірити, чи готовий хтось із цих операторів прийняти виклик. Для цього виконаємо скрипт 3CX Call Control API з компонента Launch External Script. Цей скрипт також пишеться на C#. Він перевіряє DN об'єкти кожного додаткового номеру на наявність атрибута ActiveConnection:

 

using System; using TCX.Configuration; namespace OutboundDialerDemo { public class ExtensionStateHelper { public bool IsThereAnyFreeExtension() { return PhoneSystem.Root.GetDNByNumber("201").GetActiveConnections().Length == 0 || PhoneSystem.Root.GetDNByNumber("202").GetActiveConnections().Length == 0 || PhoneSystem.Root.GetDNByNumber("203").GetActiveConnections().Length == 0; } } }
 

Збережіть скрипт у файлі з іменем CheckExtensionsState.cs в папці Libraries проекту. Потім перетягніть компонент Launch External Script в розгалуження timeToCall, назвіть його checkFreeExtensions і настройте, як показано нижче.

Тепер слід перевірити результат роботи скрипта. Відразу під компонентом Launch External Script додамо компонент Create a condition component і назвемо його isThereAnyFreeExtension. У компонента будуть два розгалуження: yesMakeCall і noFreeExtensions, як показано нижче.

Створимо умова виконання розгалуження yesMakeCall, яке виконується, якщо попередній скрипт повернула True. Вираз має вигляд:

checkFreeExtensions.ReturnValue

При виконанні умови, розгалуження yesMakeCall виконується, адже виконані всі необхідні умови: відповідний час і як мінімум один вільний оператор. Можна дзвонити абоненту!

Отримання і комутація номера абонента

Нагадаю, що в нашому прикладі номери беруться з файлу. Назвемо файл NumbersToCall.txt - у кожному рядку файлу міститься по одному номеру. Для успішної роботи з файлом, необхідно створити індексний змінну номера рядка, яка буде спільною для всіх сутностей діалерів. Вибираючи номер, ми збільшуємо індекс, і наступний діалер "бере" номер з наступного рядка, і так далі, по черзі. Створимо ще один C# скрипт CallIndexHolder.cs, в якому визначимо статичну змінну (скрипт також повинен бути збережений у папці Libraries.

using System; namespace TCX { public class CallIndexHolder { private static int callIndex = 0; public int GetCallIndex() { return callIndex; } public void SetCallIndex(int index) { callIndex = index; } } }

Оскільки змінна callIndex оголошена як статична, в процесі 3CX Queue Manager service присутня тільки одна її сутність, яка розділяється між диалерами. Отже, нам знадобиться ще один компонент Launch External Script (назвемо його getCallIndex), який помістимо під розгалуження yesMakeCall і налаштуємо, як показано нижче:

Тепер перейдемо, власне, до читання номери з текстового файлу. Відразу після компонента getCallIndex додамо компонент Read / Write to File, назвемо його readNumberToCall і налаштуємо, як показано нижче:

Зверніть увагу на формат вказівки шляху до файлу з номерами і вкажіть шлях на вашому сервері 3CX. Коли всі рядки у файлі будуть прочитані, компонент readNumberToCall вважає порожній рядок. В цей момент виконання викликів має бути призупинено. Для цього додамо ще один компонент Create a condition, який буде перевіряти - лічений номер з файлу чи ні. Він має одне розгалуження з такою умовою:

GREAT_THAN(LEN(readNumberToCall.Result),0)

Якщо умова виконана, виконується скрипт CallIndexHolder.cs, збільшуючи змінну callindex, і компонент Make Call робить виклик. Компонент Make Call настроюється, як показано нижче:

Він робить виклик з додаткового номера Черги 800 (до якої підключені оператори 201, 202 і 203) на номер, зчитаний з текстового файлу. Зверніть увагу на загальний вигляд розгалуження yesMakeCall після додавання усіх необхідних компонентів.

Компіляція та встановлення програми на сервер 3CX

Голосове додаток готове! Тепер його слід скомпілювати і завантажити на сервер 3CX. Для цього:
  • Перейдіть в меню Build > Build All, і CFD створить файл OutboundDialerDemo.tcxvoiceapp.
  • Перейдіть в інтерфейс управління 3CX, в розділ Черги дзвінків. Створіть нову Чергу викликів, вкажіть назву і додатковий номер Черги, а потім встановіть опцію Голосові програми і завантажте скомпільований файл.
  • Збережіть зміни в Черзі викликів. Голосове додаток готове до використання.
Інші статті
  • Веб-камери для конференцій (Zoom, Skype та інші)
    У статті розглянуто фіксовані веб-камери для відеоконференцій через комп'ютер. На відміну від звичайної веб-камери, це рішення професійного рівня з якісним ширококутним об'єктивом і відео роздільною здатністю 4K або Full HD.
  • USB PTZ камери для відеоконференцій
    У статті розглянуті популярні моделі USB PTZ камер, які представлені на нашому сайті та регулярно поставляються в Україну. Всі моделі - це поворотні камери з оптичним зумом. Основна схема використання - відеоконференції, вебінари, трансляції