Створення програми для вихідного обдзвону в 3CX CFD
Введення
Додаток - діалер дозволяє проводити ефективні, автоматизовані кампанії вихідного обдзвону. Оператори колл-центру економлять сили і час, просто приймаючи скомутовані виклики - не потрібно шукати і набирати потрібний номер!
Зверніть увагу - середовище розробки 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 - час, що кожна сутність очікує, перед виконанням виклику (строго кажучи, перед початком процедури перевірки умов для виконання виклику).
- Створюється перший діалер (сутність), отримує номер для виклику, дзвонить і починає чекати 30 сек.
- Через 6 сек. створюється другий діалер, отримує номер, дзвонить і починає чекати 30 сек.
- Через 6 сек. створюється третій діалер, отримує номер, дзвонить і починає чекати 30 сек.
- Через 6 сек. створюється четвертий діалер, отримує номер, дзвонить і починає чекати 30 сек.
- Через 6 сек. створюється п'ятий діалер, отримує номер, дзвонить і починає чекати 30 сек.
- Через 6 с. "прокидається" перший діалер, отримує номер для виклику, дзвонить і починає чекати 30 сек.
- Через 6 с. "прокидається" другий діалер, отримує номер для виклику, дзвонить і починає чекати 30 сек.і т. д.
Визначення підходящого часу викликів
У нашому прикладі обдзвін буде виконуватися тільки з понеділка по п'ятницю з 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, в розділ Черги дзвінків. Створіть нову Чергу викликів, вкажіть назву і додатковий номер Черги, а потім встановіть опцію Голосові програми і завантажте скомпільований файл.
- Збережіть зміни в Черзі викликів. Голосове додаток готове до використання.
- Комплекти обладнання Poly Studio Room Kits є готовими рішеннями для підготовки вашого конференц-залу до відеоконференцій у системі Microsoft Teams Rooms. Poly пропонує рішення для кімнат переговорів та конференц-залів різного розміру. Ви зможете підібрати потрібне рішення в залежності від розміру конференц-залу. При цьому у всього обладнання буде однаковий інтерфейс управління та найголовніше - висока якість відео та звуку та фірмові технології Poly.
- В огляді порівнюються 4 моделі камер компанії Kandao. Всі вони забезпечують круговий огляд 360 градусів, мають вбудовані динаміки та мікрофони, але відрізняються додатковими можливостями та відповідно ціною. Розглянуті такі моделі – Kandao Meeting 360, Kandao Meeting Pro, Kandao Meeting Ultra Standart та Kandao Meeting Ultra.