Атестаційні завдання K2 ERP/Облік IP-телефонії: відмінності між версіями
R (обговорення | внесок) Первинна публікація |
R (обговорення | внесок) Немає опису редагування |
||
| Рядок 1: | Рядок 1: | ||
{{DISPLAYTITLE:Атестаційні завдання K2 ERP/Облік IP-телефонії}} | |||
= Модуль обліку дзвінків, внутрішніх номерів і аналітики IP-телефонії = | '''Атестаційне завдання K2 ERP — Облік IP-телефонії''' — це практична задача для перевірки навичок розробника або впроваджувача [[K2 ERP]] у створенні модуля обліку дзвінків, внутрішніх номерів, записів розмов, аналітики телефонії та інтеграції з CRM. | ||
Модуль має забезпечувати імпорт або прийом даних із IP-телефонії, збереження журналу дзвінків, автоматичну прив’язку дзвінків до клієнтів, облік внутрішніх номерів співробітників, прослуховування записів, контроль пропущених дзвінків, аналітику по менеджерах і звіти для керівництва. | |||
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;"> | |||
'''Коротко.''' Потрібно реалізувати модуль IP-телефонії: клієнти, співробітники, внутрішні SIP-номери, журнал дзвінків, CDR-імпорт, API або webhook-інтеграція, записи розмов, пропущені дзвінки, прив’язка до CRM, фільтрація, аналітика й звіти. | |||
</div> | |||
__TOC__ | |||
== Назва завдання == | |||
'''Модуль обліку дзвінків, внутрішніх номерів і аналітики IP-телефонії'''. | |||
== Мета завдання == | |||
Мета завдання — створити в K2 ERP модуль для автоматизації обліку телефонних комунікацій компанії. | |||
Система повинна дозволяти: | |||
* вести клієнтів і їхні номери телефонів; | |||
* вести співробітників; | |||
* вести внутрішні SIP-номери; | |||
* вести зовнішні номери компанії; | |||
* імпортувати дзвінки з IP-телефонії; | |||
* приймати дані дзвінків через API або webhook; | |||
* зберігати журнал вхідних, вихідних і внутрішніх дзвінків; | |||
* автоматично визначати клієнта за номером телефону; | |||
* прив’язувати дзвінок до менеджера; | |||
* прив’язувати дзвінок до клієнта, заявки, угоди або тікета; | |||
* зберігати тривалість дзвінка; | |||
* зберігати статус дзвінка; | |||
* зберігати посилання на запис розмови; | |||
* дозволяти прослуховувати записи розмов; | |||
* фіксувати результат дзвінка; | |||
* контролювати пропущені дзвінки; | |||
* створювати нагадування передзвонити; | |||
* формувати аналітику по співробітниках; | |||
* формувати звіти по дзвінках, клієнтах, менеджерах і якості обслуговування. | |||
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;"> | |||
'''Головний принцип.''' Кожен дзвінок має бути зафіксований, пов’язаний із клієнтом або співробітником і доступний для аналізу. Пропущений дзвінок не повинен залишитися без подальшої дії. | |||
</div> | |||
== Реальний бізнес-контекст == | == Реальний бізнес-контекст == | ||
Компанія використовує IP-телефонію для прийому вхідних дзвінків, здійснення вихідних дзвінків, роботи відділу продажу, підтримки клієнтів, кол-центру або сервісної служби. | |||
* | |||
* | IP-телефонія може бути побудована на: | ||
* | |||
** | * SIP; | ||
** за | * Asterisk; | ||
* FreePBX; | |||
* Zadarma; | |||
* Binotel; | |||
* Ringostat; | |||
* 3CX; | |||
* внутрішній корпоративній телефонії; | |||
* іншій VoIP-платформі. | |||
Для бізнесу важливо знати: | |||
* скільки дзвінків приймає компанія; | |||
* які дзвінки були пропущені; | |||
* хто зі співробітників відповідає клієнтам; | |||
* скільки тривають розмови; | |||
* які клієнти часто телефонують; | |||
* чи передзвонили по пропущених дзвінках; | |||
* які менеджери ефективно працюють із клієнтами; | |||
* чи можна прослухати запис розмови для контролю якості. | |||
== Основний бізнес-процес == | |||
Типовий процес роботи модуля IP-телефонії виглядає так: | |||
# клієнт телефонує на номер компанії; | |||
# телефонія приймає дзвінок і передає його на внутрішній номер співробітника; | |||
# система отримує інформацію про дзвінок через API, webhook або CDR-імпорт; | |||
# K2 ERP зберігає дзвінок у журналі; | |||
# система визначає клієнта за номером телефону; | |||
# система визначає співробітника за внутрішнім номером; | |||
# дзвінок прив’язується до клієнта, угоди, заявки або тікета; | |||
# якщо є запис розмови — зберігається посилання на файл; | |||
# менеджер може додати коментар або результат дзвінка; | |||
# пропущений дзвінок потрапляє в список для передзвону; | |||
# керівник переглядає аналітику й звіти. | |||
== Основні об’єкти модуля == | |||
{| class="wikitable" style="width:100%;" | |||
! Об’єкт | |||
! Призначення | |||
|- | |||
| Клієнти | |||
| Контрагенти або фізичні особи, з якими відбуваються дзвінки | |||
|- | |||
| Телефони клієнтів | |||
| Номери, за якими система розпізнає клієнта | |||
|- | |||
| Співробітники | |||
| Менеджери, оператори, спеціалісти підтримки | |||
|- | |||
| Внутрішні номери | |||
| SIP extension співробітників | |||
|- | |||
| Зовнішні номери | |||
| Номери компанії для вхідних і вихідних дзвінків | |||
|- | |||
| Дзвінки | |||
| Основний журнал телефонних подій | |||
|- | |||
| Записи розмов | |||
| Аудіофайли або посилання на записи | |||
|- | |||
| Пропущені дзвінки | |||
| Дзвінки, які потребують подальшої реакції | |||
|- | |||
| Результати дзвінків | |||
| Підсумок розмови: консультація, продаж, передзвонити тощо | |||
|- | |||
| CRM-прив’язки | |||
| Зв’язок дзвінка з клієнтом, угодою, заявкою або тікетом | |||
|- | |||
| Аналітика | |||
| Показники ефективності дзвінків | |||
|- | |||
| Звіти | |||
| Дані для керівника, продажів і підтримки | |||
|} | |||
== Довідник «Клієнти» == | |||
Довідник клієнтів містить компанії або фізичних осіб, з якими ведеться комунікація. | |||
== Поля клієнта == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| Назва компанії або ПІБ | |||
| Ім’я клієнта або назва організації | |||
|- | |||
| Телефон | |||
| Основний телефон клієнта | |||
|- | |||
| Додаткові телефони | |||
| Інші номери для розпізнавання | |||
|- | |||
| Email | |||
| Електронна адреса | |||
|- | |||
| Менеджер | |||
| Відповідальний співробітник | |||
|- | |||
| Статус | |||
| Активний, потенційний, архівний | |||
|- | |||
| Примітки | |||
| Додаткова інформація | |||
|} | |||
== Довідник «Співробітники» == | |||
Довідник співробітників містить працівників, які користуються телефонією. | |||
== Поля співробітника == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| ПІБ | |||
| Повне ім’я співробітника | |||
|- | |||
| Посада | |||
| Менеджер, оператор, техпідтримка, керівник | |||
|- | |||
| Відділ | |||
| Продажі, підтримка, бухгалтерія, сервіс | |||
|- | |||
| Внутрішній номер | |||
| SIP extension | |||
|- | |||
| Телефон | |||
| Особистий або службовий номер | |||
|- | |||
| Email | |||
| Робоча адреса | |||
|- | |||
| Статус | |||
| Активний, заблокований, звільнений | |||
|} | |||
== Довідник «Внутрішні номери» == | |||
Внутрішній номер використовується для зв’язку дзвінка зі співробітником. | |||
== Поля внутрішнього номера == | |||
{| class="wikitable" style="width:100%;" | |||
! Поле | |||
! Опис | |||
|- | |||
| SIP extension | |||
| Наприклад: 101, 102, 205 | |||
|- | |||
| Співробітник | |||
| Кому належить номер | |||
|- | |||
| Відділ | |||
| До якого відділу належить номер | |||
|- | |||
| Статус | |||
| Активний або неактивний | |||
|- | |||
| Коментар | |||
| Службова інформація | |||
|} | |||
== Довідник «Номери телефонів компанії» == | |||
Цей довідник містить зовнішні номери компанії. | |||
== Поля номера == | |||
== | {| class="wikitable" style="width:100%;" | ||
! Поле | |||
! Опис | |||
|- | |||
| Номер телефону | |||
| Зовнішній номер компанії | |||
|- | |||
| Оператор | |||
| SIP-провайдер або мобільний оператор | |||
|- | |||
| Тип номера | |||
| SIP, мобільний, стаціонарний, багатоканальний | |||
|- | |||
| Напрямок | |||
| Продажі, підтримка, бухгалтерія, загальний номер | |||
|- | |||
| Вартість хвилини | |||
| Для розрахунку витрат, опціонально | |||
|- | |||
| Статус | |||
| Активний або неактивний | |||
|} | |||
== | == База «Дзвінки» == | ||
Журнал дзвінків є головним об’єктом модуля. | |||
== Колонки журналу дзвінків == | |||
== | {| class="wikitable" style="width:100%;" | ||
! Колонка | |||
! Опис | |||
|- | |||
| Дата і час | |||
| Коли відбувся дзвінок | |||
|- | |||
| Напрямок | |||
| Вхідний, вихідний, внутрішній | |||
|- | |||
| Номер клієнта | |||
| Зовнішній номер співрозмовника | |||
|- | |||
| Внутрішній номер | |||
| SIP extension співробітника | |||
|- | |||
| Співробітник | |||
| Хто прийняв або здійснив дзвінок | |||
|- | |||
| Клієнт | |||
| Автоматично визначений або вручну прив’язаний клієнт | |||
|- | |||
| Статус | |||
| Відповіли, не відповіли, зайнято, скасовано | |||
|- | |||
| Тривалість | |||
| Тривалість розмови в секундах | |||
|- | |||
| Запис | |||
| Посилання на аудіозапис | |||
|- | |||
| Коментар | |||
| Коментар менеджера | |||
|} | |||
== Поля дзвінка == | |||
==== | {| class="wikitable" style="width:100%;" | ||
! Поле | |||
! Опис | |||
|- | |||
| Унікальний ID дзвінка | |||
| Ідентифікатор із телефонії або внутрішній ID | |||
|- | |||
| Дата початку | |||
| Початок дзвінка | |||
|- | |||
| Дата завершення | |||
| Завершення дзвінка | |||
|- | |||
| Напрямок | |||
| Вхідний, вихідний, внутрішній | |||
|- | |||
| Caller ID | |||
| Номер того, хто телефонує | |||
|- | |||
| Called number | |||
| Номер, на який телефонують | |||
|- | |||
| Внутрішній номер | |||
| SIP extension співробітника | |||
|- | |||
| Співробітник | |||
| Відповідальний користувач системи | |||
|- | |||
| Клієнт | |||
| Розпізнаний або вручну вибраний клієнт | |||
|- | |||
| Статус дзвінка | |||
| Відповіли, не відповіли, зайнято, скасовано | |||
|- | |||
| Тривалість розмови | |||
| Чистий час розмови | |||
|- | |||
| Загальна тривалість | |||
| Час від початку виклику до завершення | |||
|- | |||
| Запис розмови | |||
| Посилання на файл або потокове відтворення | |||
|- | |||
| Результат дзвінка | |||
| Підсумок розмови | |||
|- | |||
| Коментар | |||
| Примітка менеджера | |||
|} | |||
== Напрямки дзвінків == | |||
{| class="wikitable" style="width:100%;" | |||
! Напрямок | |||
! Значення | |||
|- | |||
| Вхідний | |||
| Клієнт телефонує в компанію | |||
|- | |||
| Вихідний | |||
| Співробітник телефонує клієнту | |||
|- | |||
| Внутрішній | |||
| Дзвінок між співробітниками | |||
|- | |||
| Переадресований | |||
| Дзвінок був переведений на інший номер | |||
|} | |||
== Статуси дзвінків == | |||
== | {| class="wikitable" style="width:100%;" | ||
! Статус | |||
! Значення | |||
|- | |||
| Відповіли | |||
| Розмова відбулася | |||
|- | |||
| Не відповіли | |||
| Дзвінок пропущено | |||
|- | |||
| Зайнято | |||
| Лінія була зайнята | |||
|- | |||
| Скасовано | |||
| Дзвінок завершено до відповіді | |||
|- | |||
| Помилка | |||
| Дзвінок не відбувся через технічну причину | |||
|- | |||
| Голосова пошта | |||
| Клієнт залишив повідомлення, якщо підтримується | |||
|} | |||
== | == Імпорт дзвінків == | ||
* дата і час | Модуль має підтримувати отримання дзвінків із телефонної системи. | ||
* | |||
* номер | == Варіанти імпорту == | ||
* напрямок | |||
** | * API телефонії; | ||
** | * webhook; | ||
* | * CDR-файли; | ||
** | * CSV-імпорт; | ||
** | * пряме підключення до бази CDR, якщо дозволено; | ||
** | * ручний імпорт файлу адміністратором. | ||
** | |||
* | == Дані CDR == | ||
* запис | |||
* | CDR — це запис про телефонний дзвінок. | ||
* | |||
== Основні поля CDR == | |||
* дата і час початку; | |||
* номер абонента; | |||
* номер призначення; | |||
* внутрішній номер; | |||
* напрямок; | |||
* статус; | |||
* тривалість; | |||
* унікальний ID дзвінка; | |||
* посилання на запис; | |||
* код завершення дзвінка. | |||
== Автоматичне розпізнавання клієнта == | |||
Система повинна визначати клієнта за номером телефону. | |||
== Логіка розпізнавання == | |||
# система отримує номер із дзвінка; | |||
# очищає номер від пробілів, дужок, дефісів; | |||
# приводить номер до єдиного формату; | |||
# шукає номер у довіднику клієнтів; | |||
# якщо номер знайдено — прив’язує дзвінок до клієнта; | |||
# якщо номер не знайдено — залишає дзвінок як невідомий; | |||
# менеджер може вручну створити клієнта або прив’язати номер до існуючого. | |||
<div style="border:2px solid #f57c00; background:#fff3e0; padding:14px; margin:16px 0;"> | |||
'''Важливо.''' Номери телефонів потрібно нормалізувати. Один і той самий номер може надходити у форматах +380, 380, 0XX або з розділювачами. | |||
</div> | |||
== Пропущені дзвінки == | |||
Пропущений дзвінок потребує окремого контролю. | |||
== Що має робити система == | |||
* визначати пропущені вхідні дзвінки; | |||
* показувати їх у окремому списку; | |||
* визначати клієнта, якщо номер знайдено; | |||
* призначати відповідального менеджера; | |||
* створювати задачу або нагадування передзвонити; | |||
* змінювати статус після передзвону; | |||
* показувати, скільки часу минуло з моменту пропущеного дзвінка. | |||
== Статуси пропущеного дзвінка == | |||
{| class="wikitable" style="width:100%;" | |||
! Статус | |||
! Значення | |||
|- | |||
| Новий | |||
| Дзвінок пропущено, реакції ще не було | |||
|- | |||
| В роботі | |||
| Менеджер узяв дзвінок у роботу | |||
|- | |||
| Передзвонили | |||
| Клієнту передзвонили | |||
|- | |||
| Не дозвонились | |||
| Спроба передзвону була невдалою | |||
|- | |||
| Закрито | |||
| Питання по дзвінку завершено | |||
|} | |||
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;"> | |||
'''Критично.''' Пропущені вхідні дзвінки не повинні губитися. Система має показувати їх окремо і дозволяти контролювати факт передзвону. | |||
</div> | |||
== Записи розмов == | |||
Якщо телефонія надає записи розмов, система повинна зберігати посилання на них. | |||
== Функції роботи із записами == | |||
Система повинна дозволяти: | |||
* бачити, чи є запис у дзвінка; | |||
* прослухати запис через HTML5 audio; | |||
* обмежувати доступ до записів за правами; | |||
* завантажити запис, якщо це дозволено; | |||
* зберігати посилання на файл; | |||
* показувати тривалість запису; | |||
* фіксувати, хто прослуховував запис, опціонально. | |||
== Результат дзвінка == | |||
Менеджер може вказати результат дзвінка. | |||
== Приклади результатів == | |||
* консультація; | |||
* успішний продаж; | |||
* передзвонити пізніше; | |||
* клієнт не зацікавлений; | |||
* створено заявку; | |||
* створено угоду; | |||
* створено тікет підтримки; | |||
* питання вирішено; | |||
* потрібна ескалація. | |||
== | == CRM-прив’язка == | ||
Дзвінок може бути пов’язаний з об’єктами CRM. | |||
=== | == Можливі прив’язки == | ||
* | * клієнт; | ||
* | * контактна особа; | ||
* | * лід; | ||
* | * угода; | ||
* | * замовлення; | ||
* заявка; | |||
* тікет HelpDesk; | |||
* задача; | |||
* рахунок. | |||
== Пошук і фільтрація дзвінків == | |||
Журнал дзвінків повинен мати зручні фільтри. | |||
== Параметри фільтрації == | |||
* дата | * дата або період; | ||
* | * напрямок дзвінка; | ||
* статус дзвінка; | |||
* співробітник; | * співробітник; | ||
* внутрішній номер; | |||
* клієнт; | * клієнт; | ||
* тривалість | * номер телефону; | ||
** | * тривалість від; | ||
** до. | * тривалість до; | ||
* наявність запису; | |||
* результат дзвінка; | |||
* пропущені дзвінки; | |||
* дзвінки без прив’язки до клієнта. | |||
== Аналітика дзвінків == | |||
Аналітика допомагає оцінювати роботу співробітників і якість обслуговування. | |||
* | == Основні показники == | ||
* | |||
* | * кількість вхідних дзвінків; | ||
* | * кількість вихідних дзвінків; | ||
* кількість пропущених дзвінків; | |||
* кількість успішних розмов; | |||
* середня тривалість розмови; | |||
* загальна тривалість дзвінків; | |||
* рівень відповіді; | |||
* кількість дзвінків по співробітниках; | |||
* кількість дзвінків по клієнтах; | |||
* кількість дзвінків без прив’язки до клієнта; | |||
* вартість дзвінків, якщо налаштовані тарифи. | |||
== Формула рівня відповіді == | |||
<pre> | |||
Рівень відповіді = Кількість дзвінків з відповіддю / Загальна кількість вхідних дзвінків × 100% | |||
</pre> | |||
== Формула середньої тривалості == | |||
<pre> | |||
Середня тривалість = Загальна тривалість розмов / Кількість розмов | |||
</pre> | |||
== Вартість дзвінків == | |||
Опціонально можна рахувати витрати на телефонію. | |||
<pre> | |||
Вартість дзвінка = Тривалість у хвилинах × Тариф за хвилину | |||
</pre> | |||
== Звіти == | |||
== Звіт «Дзвінки за період» == | |||
Звіт показує всі дзвінки за вибраний період. | |||
У звіті потрібно відображати: | |||
* дату; | |||
* напрямок; | |||
* клієнта; | |||
* співробітника; | |||
* номер телефону; | |||
* статус; | |||
* тривалість; | |||
* наявність запису. | |||
== Звіт «Ефективність співробітників» == | |||
Звіт показує телефонну активність працівників. | |||
У звіті потрібно відображати: | |||
* співробітника; | |||
* кількість вхідних дзвінків; | |||
* кількість вихідних дзвінків; | |||
* кількість пропущених дзвінків; | |||
* загальну тривалість; | |||
* середню тривалість; | |||
* рівень відповіді. | |||
== Звіт «Пропущені дзвінки» == | |||
Звіт показує всі пропущені дзвінки. | |||
У звіті потрібно відображати: | |||
* дату і час; | |||
* номер клієнта; | |||
* клієнта, якщо визначено; | |||
* відповідального менеджера; | |||
* статус передзвону; | |||
* час реакції; | |||
* результат. | |||
== Звіт «Дзвінки по клієнтах» == | |||
Звіт показує активність комунікацій із клієнтами. | |||
У звіті потрібно відображати: | |||
* клієнта; | |||
* кількість дзвінків; | |||
* останній дзвінок; | |||
* відповідального менеджера; | |||
* загальну тривалість; | |||
* кількість пропущених дзвінків. | |||
== Звіт «Вартість телефонії» == | |||
Якщо налаштовані тарифи, звіт показує витрати. | |||
У звіті потрібно відображати: | |||
* період; | |||
* оператора; | |||
* номер компанії; | |||
* кількість дзвінків; | |||
* загальну тривалість; | |||
* суму витрат. | |||
== AJAX-інтерактив == | |||
Інтерфейс має працювати швидко та зручно для менеджера, керівника і оператора. | |||
Через AJAX мають працювати: | |||
* фільтрація дзвінків; | |||
* пошук номера; | |||
* прив’язка дзвінка до клієнта; | |||
* додавання коментаря; | |||
* зміна результату дзвінка; | |||
* прослуховування запису; | |||
* оновлення статусу пропущеного дзвінка; | |||
* створення задачі передзвонити; | |||
* оновлення аналітики; | |||
* оновлення звітів. | |||
== Логування змін == | |||
Модуль повинен фіксувати важливі дії. | |||
Журнал змін має зберігати: | |||
* хто імпортував дзвінки; | |||
* коли отримано дзвінок через API або webhook; | |||
* хто вручну прив’язав дзвінок до клієнта; | |||
* хто змінив результат дзвінка; | |||
* хто додав коментар; | |||
* хто прослухав запис, якщо це потрібно; | |||
* хто змінив статус пропущеного дзвінка; | |||
* хто створив задачу передзвонити; | |||
* дату й час дії; | |||
* старе та нове значення, якщо це можливо. | |||
== Права доступу == | |||
Модуль має підтримувати розмежування прав. | |||
{| class="wikitable" style="width:100%;" | |||
! Роль | |||
! Можливості | |||
|- | |||
| Менеджер | |||
| Бачить свої дзвінки, додає коментарі, прив’язує клієнтів, обробляє пропущені дзвінки | |||
|- | |||
| Оператор кол-центру | |||
| Працює з журналом дзвінків, результатами дзвінків і передзвонами | |||
|- | |||
| Керівник відділу | |||
| Бачить дзвінки свого відділу, аналітику й звіти | |||
|- | |||
| Керівник компанії | |||
| Бачить загальну статистику, звіти і якість обслуговування | |||
|- | |||
| Адміністратор телефонії | |||
| Налаштовує внутрішні номери, імпорт, API, webhook, записи розмов | |||
|- | |||
| Адміністратор системи | |||
| Налаштовує права доступу, довідники, службові параметри і інтеграції | |||
|} | |||
== Технічні вимоги == | == Технічні вимоги == | ||
{| class="wikitable" | |||
!Параметр | {| class="wikitable" style="width:100%;" | ||
!Опис | ! Параметр | ||
! Опис | |||
|- | |||
| Бекенд | |||
| K2 Cloud ERP на Python або PHP | |||
|- | |- | ||
| | | База даних | ||
| | | PostgreSQL або MySQL | ||
|- | |- | ||
| | | Фронтенд | ||
| | | HTML5, JavaScript | ||
|- | |- | ||
| | | AJAX | ||
| | | Fetch API або Axios | ||
|- | |- | ||
|UI-компоненти | | UI-компоненти | ||
|DataTables для журналу дзвінків, Select2 для фільтрації | | DataTables для журналу дзвінків, Select2 для фільтрації | ||
|- | |- | ||
| | | Телефонія | ||
| | | SIP, Asterisk, FreePBX або інша IP-телефонія | ||
|- | |- | ||
|Друк | | Імпорт | ||
| | | API, webhook, CDR або CSV | ||
|- | |||
| Медіа | |||
| HTML5 audio для прослуховування записів розмов | |||
|- | |||
| Друк / експорт | |||
| PDF або Excel для звітів, опціонально | |||
|} | |} | ||
== Критерії | == Рекомендовані сутності бази даних == | ||
{| class="wikitable" | |||
!Критерій | Для реалізації задачі доцільно передбачити такі сутності: | ||
!Бали | |||
* клієнти; | |||
* телефони клієнтів; | |||
* співробітники; | |||
* внутрішні номери; | |||
* зовнішні номери компанії; | |||
* дзвінки; | |||
* статуси дзвінків; | |||
* напрямки дзвінків; | |||
* записи розмов; | |||
* результати дзвінків; | |||
* пропущені дзвінки; | |||
* задачі передзвону; | |||
* CRM-прив’язки; | |||
* тарифи телефонії; | |||
* імпорт CDR; | |||
* webhook-події; | |||
* аналітика; | |||
* журнал змін; | |||
* звіти; | |||
* права доступу. | |||
== Практичне завдання == | |||
У межах атестації потрібно продемонструвати робочий сценарій. | |||
Мінімальний сценарій: | |||
# створити клієнта з номером телефону; | |||
# створити співробітника; | |||
# створити внутрішній SIP-номер; | |||
# створити зовнішній номер компанії; | |||
# імпортувати кілька дзвінків через CDR або створити тестові записи; | |||
# автоматично розпізнати клієнта за номером; | |||
# прив’язати дзвінок до співробітника; | |||
# додати дзвінок без відомого клієнта; | |||
# вручну прив’язати невідомий дзвінок до клієнта; | |||
# додати посилання на запис розмови; | |||
# прослухати запис через інтерфейс; | |||
# створити пропущений дзвінок; | |||
# створити задачу передзвонити; | |||
# змінити статус пропущеного дзвінка на '''«Передзвонили»'''; | |||
# додати результат дзвінка; | |||
# відфільтрувати дзвінки за періодом; | |||
# відфільтрувати дзвінки по співробітнику; | |||
# сформувати звіт дзвінків за період; | |||
# сформувати звіт ефективності співробітників; | |||
# сформувати звіт пропущених дзвінків; | |||
# сформувати звіт дзвінків по клієнтах; | |||
# перевірити журнал змін. | |||
== Критерії оцінювання == | |||
{| class="wikitable" style="width:100%;" | |||
! Критерій | |||
! Бали | |||
! Що перевіряється | |||
|- | |||
| Реалізація бази клієнтів, співробітників і дзвінків | |||
| 20 | |||
| Клієнти, телефони, співробітники, внутрішні номери, зовнішні номери, журнал дзвінків | |||
|- | |- | ||
| | | Механізм імпорту дзвінків і прив’язки до клієнтів | ||
|20 | | 20 | ||
| CDR/API/webhook, нормалізація номерів, автоматичне розпізнавання клієнта, ручна прив’язка | |||
|- | |- | ||
| | | Фільтрація і пошук дзвінків | ||
|20 | | 20 | ||
| Пошук за номером, клієнтом, співробітником, періодом, статусом, напрямком і тривалістю | |||
|- | |- | ||
| | | Прослуховування записів розмов | ||
|20 | | 20 | ||
| Зберігання посилань, HTML5 audio, права доступу до записів, наявність запису в журналі | |||
|- | |- | ||
| | | Інтерактивність через AJAX і аналітика дзвінків | ||
|20 | | 20 | ||
| AJAX-фільтри, коментарі, результати дзвінків, пропущені дзвінки, аналітика й звіти | |||
|- | |- | ||
! Разом | |||
! 100 | |||
! Максимальна оцінка | |||
|} | |} | ||
== Шкала оцінювання == | |||
{| class="wikitable" style="width:100%;" | |||
! Бали | |||
! Рівень | |||
! Опис | |||
|- | |||
| 90–100 | |||
| Відмінно | |||
| Модуль повністю працює: клієнти, співробітники, SIP-номери, імпорт дзвінків, прив’язка до клієнтів, записи, пропущені дзвінки, аналітика й звіти реалізовані коректно | |||
|- | |||
| 75–89 | |||
| Добре | |||
| Основна логіка працює, є незначні недоліки, які не руйнують процес обліку дзвінків | |||
|- | |||
| 60–74 | |||
| Зараховано | |||
| Базовий сценарій працює, але частина функцій реалізована неповно або потребує доопрацювання | |||
|- | |||
| 0–59 | |||
| Не зараховано | |||
| Відсутня критична логіка: журнал дзвінків, клієнти, співробітники, імпорт, прив’язка або аналітика | |||
|} | |||
== Критичні помилки == | |||
Критичними помилками вважаються ситуації, коли: | |||
* неможливо створити клієнта; | |||
* неможливо створити співробітника; | |||
* неможливо створити внутрішній номер; | |||
* неможливо зберегти дзвінок; | |||
* імпорт CDR не створює записи дзвінків; | |||
* дзвінки не мають дати й часу; | |||
* дзвінки не мають напрямку; | |||
* номер клієнта не нормалізується; | |||
* клієнт не розпізнається за наявним номером; | |||
* дзвінок не прив’язується до співробітника; | |||
* пропущені дзвінки не відображаються окремо; | |||
* статус пропущеного дзвінка не змінюється; | |||
* записи розмов не відкриваються, якщо функція заявлена; | |||
* користувач без прав може прослухати чужі записи; | |||
* фільтри по дзвінках працюють неправильно; | |||
* звіти не відповідають фактичним дзвінкам; | |||
* зміни прив’язки, коментарів або статусів не логуються. | |||
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;"> | |||
'''Умова складання.''' Завдання не може бути зараховане, якщо система не дозволяє пройти базовий цикл IP-телефонії: дзвінок → імпорт → розпізнавання клієнта → прив’язка до співробітника → запис у журналі → аналітика → звіт. | |||
</div> | |||
== Очікуваний результат == | |||
У результаті виконання атестаційного завдання має бути створений модуль обліку IP-телефонії в K2 ERP. | |||
Модуль має підтримувати клієнтів, телефони клієнтів, співробітників, внутрішні SIP-номери, зовнішні номери компанії, журнал дзвінків, CDR/API/webhook-імпорт, автоматичне розпізнавання клієнтів, ручну прив’язку, записи розмов, пропущені дзвінки, задачі передзвону, CRM-прив’язки, аналітику, звіти, AJAX-інтерактив і логування змін. | |||
== Примітка == | == Примітка == | ||
Облік IP-телефонії потрібен CRM-системам, кол-центрам, відділам продажу, сервісним службам і технічній підтримці. | |||
Такий модуль дозволяє контролювати якість комунікації з клієнтами, оцінювати ефективність менеджерів, швидко реагувати на пропущені дзвінки та зберігати повну історію телефонних контактів. | |||
== Коротко == | |||
{| class="wikitable" style="width:100%;" | |||
! Питання | |||
! Відповідь | |||
|- | |||
| Що потрібно створити? | |||
| Модуль обліку дзвінків IP-телефонії | |||
|- | |||
| Які довідники потрібні? | |||
| Клієнти, телефони, співробітники, внутрішні номери, зовнішні номери | |||
|- | |||
| Який головний об’єкт? | |||
| Дзвінок у журналі телефонії | |||
|- | |||
| Як дзвінки потрапляють у систему? | |||
| Через API, webhook, CDR або CSV-імпорт | |||
|- | |||
| Що має робити система з номером клієнта? | |||
| Нормалізувати номер і знайти клієнта в базі | |||
|- | |||
| Що важливо для пропущених дзвінків? | |||
| Окремий контроль і задача передзвонити | |||
|- | |||
| Які звіти потрібні? | |||
| Дзвінки за період, ефективність співробітників, пропущені дзвінки, дзвінки по клієнтах | |||
|- | |||
| Що є критичною вимогою? | |||
| Кожен дзвінок має бути збережений, знайдений у журналі й доступний для аналізу | |||
|} | |||
== Див. також == | |||
* [[K2 Cloud ERP|K2 ERP]] | |||
* [[K2 ERP]] | |||
* [[Атестаційні завдання K2 ERP]] | |||
* [[CRM]] | |||
* [[HelpDesk]] | |||
* [[IP-телефонія]] | |||
* [[SIP]] | |||
* [[Asterisk]] | |||
* [[FreePBX]] | |||
* [[Кол-центр]] | |||
* [[Дзвінок]] | |||
* [[Пропущений дзвінок]] | |||
* [[Запис розмови]] | |||
* [[AJAX]] | |||
[[Категорія:K2 ERP]] | |||
[[Категорія:Атестаційні завдання K2]] | |||
[[Категорія:IP-телефонія]] | |||
[[Категорія:CRM]] | |||
[[Категорія:Кол-центр]] | |||
[[Категорія:HelpDesk]] | |||
[[Категорія:Корпоративна Wiki]] | |||
Поточна версія на 20:08, 1 травня 2026
Атестаційне завдання K2 ERP — Облік IP-телефонії — це практична задача для перевірки навичок розробника або впроваджувача K2 ERP у створенні модуля обліку дзвінків, внутрішніх номерів, записів розмов, аналітики телефонії та інтеграції з CRM.
Модуль має забезпечувати імпорт або прийом даних із IP-телефонії, збереження журналу дзвінків, автоматичну прив’язку дзвінків до клієнтів, облік внутрішніх номерів співробітників, прослуховування записів, контроль пропущених дзвінків, аналітику по менеджерах і звіти для керівництва.
Коротко. Потрібно реалізувати модуль IP-телефонії: клієнти, співробітники, внутрішні SIP-номери, журнал дзвінків, CDR-імпорт, API або webhook-інтеграція, записи розмов, пропущені дзвінки, прив’язка до CRM, фільтрація, аналітика й звіти.
Назва завдання
Модуль обліку дзвінків, внутрішніх номерів і аналітики IP-телефонії.
Мета завдання
Мета завдання — створити в K2 ERP модуль для автоматизації обліку телефонних комунікацій компанії.
Система повинна дозволяти:
- вести клієнтів і їхні номери телефонів;
- вести співробітників;
- вести внутрішні SIP-номери;
- вести зовнішні номери компанії;
- імпортувати дзвінки з IP-телефонії;
- приймати дані дзвінків через API або webhook;
- зберігати журнал вхідних, вихідних і внутрішніх дзвінків;
- автоматично визначати клієнта за номером телефону;
- прив’язувати дзвінок до менеджера;
- прив’язувати дзвінок до клієнта, заявки, угоди або тікета;
- зберігати тривалість дзвінка;
- зберігати статус дзвінка;
- зберігати посилання на запис розмови;
- дозволяти прослуховувати записи розмов;
- фіксувати результат дзвінка;
- контролювати пропущені дзвінки;
- створювати нагадування передзвонити;
- формувати аналітику по співробітниках;
- формувати звіти по дзвінках, клієнтах, менеджерах і якості обслуговування.
Головний принцип. Кожен дзвінок має бути зафіксований, пов’язаний із клієнтом або співробітником і доступний для аналізу. Пропущений дзвінок не повинен залишитися без подальшої дії.
Реальний бізнес-контекст
Компанія використовує IP-телефонію для прийому вхідних дзвінків, здійснення вихідних дзвінків, роботи відділу продажу, підтримки клієнтів, кол-центру або сервісної служби.
IP-телефонія може бути побудована на:
- SIP;
- Asterisk;
- FreePBX;
- Zadarma;
- Binotel;
- Ringostat;
- 3CX;
- внутрішній корпоративній телефонії;
- іншій VoIP-платформі.
Для бізнесу важливо знати:
- скільки дзвінків приймає компанія;
- які дзвінки були пропущені;
- хто зі співробітників відповідає клієнтам;
- скільки тривають розмови;
- які клієнти часто телефонують;
- чи передзвонили по пропущених дзвінках;
- які менеджери ефективно працюють із клієнтами;
- чи можна прослухати запис розмови для контролю якості.
Основний бізнес-процес
Типовий процес роботи модуля IP-телефонії виглядає так:
- клієнт телефонує на номер компанії;
- телефонія приймає дзвінок і передає його на внутрішній номер співробітника;
- система отримує інформацію про дзвінок через API, webhook або CDR-імпорт;
- K2 ERP зберігає дзвінок у журналі;
- система визначає клієнта за номером телефону;
- система визначає співробітника за внутрішнім номером;
- дзвінок прив’язується до клієнта, угоди, заявки або тікета;
- якщо є запис розмови — зберігається посилання на файл;
- менеджер може додати коментар або результат дзвінка;
- пропущений дзвінок потрапляє в список для передзвону;
- керівник переглядає аналітику й звіти.
Основні об’єкти модуля
| Об’єкт | Призначення |
|---|---|
| Клієнти | Контрагенти або фізичні особи, з якими відбуваються дзвінки |
| Телефони клієнтів | Номери, за якими система розпізнає клієнта |
| Співробітники | Менеджери, оператори, спеціалісти підтримки |
| Внутрішні номери | SIP extension співробітників |
| Зовнішні номери | Номери компанії для вхідних і вихідних дзвінків |
| Дзвінки | Основний журнал телефонних подій |
| Записи розмов | Аудіофайли або посилання на записи |
| Пропущені дзвінки | Дзвінки, які потребують подальшої реакції |
| Результати дзвінків | Підсумок розмови: консультація, продаж, передзвонити тощо |
| CRM-прив’язки | Зв’язок дзвінка з клієнтом, угодою, заявкою або тікетом |
| Аналітика | Показники ефективності дзвінків |
| Звіти | Дані для керівника, продажів і підтримки |
Довідник «Клієнти»
Довідник клієнтів містить компанії або фізичних осіб, з якими ведеться комунікація.
Поля клієнта
| Поле | Опис |
|---|---|
| Назва компанії або ПІБ | Ім’я клієнта або назва організації |
| Телефон | Основний телефон клієнта |
| Додаткові телефони | Інші номери для розпізнавання |
| Електронна адреса | |
| Менеджер | Відповідальний співробітник |
| Статус | Активний, потенційний, архівний |
| Примітки | Додаткова інформація |
Довідник «Співробітники»
Довідник співробітників містить працівників, які користуються телефонією.
Поля співробітника
| Поле | Опис |
|---|---|
| ПІБ | Повне ім’я співробітника |
| Посада | Менеджер, оператор, техпідтримка, керівник |
| Відділ | Продажі, підтримка, бухгалтерія, сервіс |
| Внутрішній номер | SIP extension |
| Телефон | Особистий або службовий номер |
| Робоча адреса | |
| Статус | Активний, заблокований, звільнений |
Довідник «Внутрішні номери»
Внутрішній номер використовується для зв’язку дзвінка зі співробітником.
Поля внутрішнього номера
| Поле | Опис |
|---|---|
| SIP extension | Наприклад: 101, 102, 205 |
| Співробітник | Кому належить номер |
| Відділ | До якого відділу належить номер |
| Статус | Активний або неактивний |
| Коментар | Службова інформація |
Довідник «Номери телефонів компанії»
Цей довідник містить зовнішні номери компанії.
Поля номера
| Поле | Опис |
|---|---|
| Номер телефону | Зовнішній номер компанії |
| Оператор | SIP-провайдер або мобільний оператор |
| Тип номера | SIP, мобільний, стаціонарний, багатоканальний |
| Напрямок | Продажі, підтримка, бухгалтерія, загальний номер |
| Вартість хвилини | Для розрахунку витрат, опціонально |
| Статус | Активний або неактивний |
База «Дзвінки»
Журнал дзвінків є головним об’єктом модуля.
Колонки журналу дзвінків
| Колонка | Опис |
|---|---|
| Дата і час | Коли відбувся дзвінок |
| Напрямок | Вхідний, вихідний, внутрішній |
| Номер клієнта | Зовнішній номер співрозмовника |
| Внутрішній номер | SIP extension співробітника |
| Співробітник | Хто прийняв або здійснив дзвінок |
| Клієнт | Автоматично визначений або вручну прив’язаний клієнт |
| Статус | Відповіли, не відповіли, зайнято, скасовано |
| Тривалість | Тривалість розмови в секундах |
| Запис | Посилання на аудіозапис |
| Коментар | Коментар менеджера |
Поля дзвінка
| Поле | Опис |
|---|---|
| Унікальний ID дзвінка | Ідентифікатор із телефонії або внутрішній ID |
| Дата початку | Початок дзвінка |
| Дата завершення | Завершення дзвінка |
| Напрямок | Вхідний, вихідний, внутрішній |
| Caller ID | Номер того, хто телефонує |
| Called number | Номер, на який телефонують |
| Внутрішній номер | SIP extension співробітника |
| Співробітник | Відповідальний користувач системи |
| Клієнт | Розпізнаний або вручну вибраний клієнт |
| Статус дзвінка | Відповіли, не відповіли, зайнято, скасовано |
| Тривалість розмови | Чистий час розмови |
| Загальна тривалість | Час від початку виклику до завершення |
| Запис розмови | Посилання на файл або потокове відтворення |
| Результат дзвінка | Підсумок розмови |
| Коментар | Примітка менеджера |
Напрямки дзвінків
| Напрямок | Значення |
|---|---|
| Вхідний | Клієнт телефонує в компанію |
| Вихідний | Співробітник телефонує клієнту |
| Внутрішній | Дзвінок між співробітниками |
| Переадресований | Дзвінок був переведений на інший номер |
Статуси дзвінків
| Статус | Значення |
|---|---|
| Відповіли | Розмова відбулася |
| Не відповіли | Дзвінок пропущено |
| Зайнято | Лінія була зайнята |
| Скасовано | Дзвінок завершено до відповіді |
| Помилка | Дзвінок не відбувся через технічну причину |
| Голосова пошта | Клієнт залишив повідомлення, якщо підтримується |
Імпорт дзвінків
Модуль має підтримувати отримання дзвінків із телефонної системи.
Варіанти імпорту
- API телефонії;
- webhook;
- CDR-файли;
- CSV-імпорт;
- пряме підключення до бази CDR, якщо дозволено;
- ручний імпорт файлу адміністратором.
Дані CDR
CDR — це запис про телефонний дзвінок.
Основні поля CDR
- дата і час початку;
- номер абонента;
- номер призначення;
- внутрішній номер;
- напрямок;
- статус;
- тривалість;
- унікальний ID дзвінка;
- посилання на запис;
- код завершення дзвінка.
Автоматичне розпізнавання клієнта
Система повинна визначати клієнта за номером телефону.
Логіка розпізнавання
- система отримує номер із дзвінка;
- очищає номер від пробілів, дужок, дефісів;
- приводить номер до єдиного формату;
- шукає номер у довіднику клієнтів;
- якщо номер знайдено — прив’язує дзвінок до клієнта;
- якщо номер не знайдено — залишає дзвінок як невідомий;
- менеджер може вручну створити клієнта або прив’язати номер до існуючого.
Важливо. Номери телефонів потрібно нормалізувати. Один і той самий номер може надходити у форматах +380, 380, 0XX або з розділювачами.
Пропущені дзвінки
Пропущений дзвінок потребує окремого контролю.
Що має робити система
- визначати пропущені вхідні дзвінки;
- показувати їх у окремому списку;
- визначати клієнта, якщо номер знайдено;
- призначати відповідального менеджера;
- створювати задачу або нагадування передзвонити;
- змінювати статус після передзвону;
- показувати, скільки часу минуло з моменту пропущеного дзвінка.
Статуси пропущеного дзвінка
| Статус | Значення |
|---|---|
| Новий | Дзвінок пропущено, реакції ще не було |
| В роботі | Менеджер узяв дзвінок у роботу |
| Передзвонили | Клієнту передзвонили |
| Не дозвонились | Спроба передзвону була невдалою |
| Закрито | Питання по дзвінку завершено |
Критично. Пропущені вхідні дзвінки не повинні губитися. Система має показувати їх окремо і дозволяти контролювати факт передзвону.
Записи розмов
Якщо телефонія надає записи розмов, система повинна зберігати посилання на них.
Функції роботи із записами
Система повинна дозволяти:
- бачити, чи є запис у дзвінка;
- прослухати запис через HTML5 audio;
- обмежувати доступ до записів за правами;
- завантажити запис, якщо це дозволено;
- зберігати посилання на файл;
- показувати тривалість запису;
- фіксувати, хто прослуховував запис, опціонально.
Результат дзвінка
Менеджер може вказати результат дзвінка.
Приклади результатів
- консультація;
- успішний продаж;
- передзвонити пізніше;
- клієнт не зацікавлений;
- створено заявку;
- створено угоду;
- створено тікет підтримки;
- питання вирішено;
- потрібна ескалація.
CRM-прив’язка
Дзвінок може бути пов’язаний з об’єктами CRM.
Можливі прив’язки
- клієнт;
- контактна особа;
- лід;
- угода;
- замовлення;
- заявка;
- тікет HelpDesk;
- задача;
- рахунок.
Пошук і фільтрація дзвінків
Журнал дзвінків повинен мати зручні фільтри.
Параметри фільтрації
- дата або період;
- напрямок дзвінка;
- статус дзвінка;
- співробітник;
- внутрішній номер;
- клієнт;
- номер телефону;
- тривалість від;
- тривалість до;
- наявність запису;
- результат дзвінка;
- пропущені дзвінки;
- дзвінки без прив’язки до клієнта.
Аналітика дзвінків
Аналітика допомагає оцінювати роботу співробітників і якість обслуговування.
Основні показники
- кількість вхідних дзвінків;
- кількість вихідних дзвінків;
- кількість пропущених дзвінків;
- кількість успішних розмов;
- середня тривалість розмови;
- загальна тривалість дзвінків;
- рівень відповіді;
- кількість дзвінків по співробітниках;
- кількість дзвінків по клієнтах;
- кількість дзвінків без прив’язки до клієнта;
- вартість дзвінків, якщо налаштовані тарифи.
Формула рівня відповіді
Рівень відповіді = Кількість дзвінків з відповіддю / Загальна кількість вхідних дзвінків × 100%
Формула середньої тривалості
Середня тривалість = Загальна тривалість розмов / Кількість розмов
Вартість дзвінків
Опціонально можна рахувати витрати на телефонію.
Вартість дзвінка = Тривалість у хвилинах × Тариф за хвилину
Звіти
Звіт «Дзвінки за період»
Звіт показує всі дзвінки за вибраний період.
У звіті потрібно відображати:
- дату;
- напрямок;
- клієнта;
- співробітника;
- номер телефону;
- статус;
- тривалість;
- наявність запису.
Звіт «Ефективність співробітників»
Звіт показує телефонну активність працівників.
У звіті потрібно відображати:
- співробітника;
- кількість вхідних дзвінків;
- кількість вихідних дзвінків;
- кількість пропущених дзвінків;
- загальну тривалість;
- середню тривалість;
- рівень відповіді.
Звіт «Пропущені дзвінки»
Звіт показує всі пропущені дзвінки.
У звіті потрібно відображати:
- дату і час;
- номер клієнта;
- клієнта, якщо визначено;
- відповідального менеджера;
- статус передзвону;
- час реакції;
- результат.
Звіт «Дзвінки по клієнтах»
Звіт показує активність комунікацій із клієнтами.
У звіті потрібно відображати:
- клієнта;
- кількість дзвінків;
- останній дзвінок;
- відповідального менеджера;
- загальну тривалість;
- кількість пропущених дзвінків.
Звіт «Вартість телефонії»
Якщо налаштовані тарифи, звіт показує витрати.
У звіті потрібно відображати:
- період;
- оператора;
- номер компанії;
- кількість дзвінків;
- загальну тривалість;
- суму витрат.
AJAX-інтерактив
Інтерфейс має працювати швидко та зручно для менеджера, керівника і оператора.
Через AJAX мають працювати:
- фільтрація дзвінків;
- пошук номера;
- прив’язка дзвінка до клієнта;
- додавання коментаря;
- зміна результату дзвінка;
- прослуховування запису;
- оновлення статусу пропущеного дзвінка;
- створення задачі передзвонити;
- оновлення аналітики;
- оновлення звітів.
Логування змін
Модуль повинен фіксувати важливі дії.
Журнал змін має зберігати:
- хто імпортував дзвінки;
- коли отримано дзвінок через API або webhook;
- хто вручну прив’язав дзвінок до клієнта;
- хто змінив результат дзвінка;
- хто додав коментар;
- хто прослухав запис, якщо це потрібно;
- хто змінив статус пропущеного дзвінка;
- хто створив задачу передзвонити;
- дату й час дії;
- старе та нове значення, якщо це можливо.
Права доступу
Модуль має підтримувати розмежування прав.
| Роль | Можливості |
|---|---|
| Менеджер | Бачить свої дзвінки, додає коментарі, прив’язує клієнтів, обробляє пропущені дзвінки |
| Оператор кол-центру | Працює з журналом дзвінків, результатами дзвінків і передзвонами |
| Керівник відділу | Бачить дзвінки свого відділу, аналітику й звіти |
| Керівник компанії | Бачить загальну статистику, звіти і якість обслуговування |
| Адміністратор телефонії | Налаштовує внутрішні номери, імпорт, API, webhook, записи розмов |
| Адміністратор системи | Налаштовує права доступу, довідники, службові параметри і інтеграції |
Технічні вимоги
| Параметр | Опис |
|---|---|
| Бекенд | K2 Cloud ERP на Python або PHP |
| База даних | PostgreSQL або MySQL |
| Фронтенд | HTML5, JavaScript |
| AJAX | Fetch API або Axios |
| UI-компоненти | DataTables для журналу дзвінків, Select2 для фільтрації |
| Телефонія | SIP, Asterisk, FreePBX або інша IP-телефонія |
| Імпорт | API, webhook, CDR або CSV |
| Медіа | HTML5 audio для прослуховування записів розмов |
| Друк / експорт | PDF або Excel для звітів, опціонально |
Рекомендовані сутності бази даних
Для реалізації задачі доцільно передбачити такі сутності:
- клієнти;
- телефони клієнтів;
- співробітники;
- внутрішні номери;
- зовнішні номери компанії;
- дзвінки;
- статуси дзвінків;
- напрямки дзвінків;
- записи розмов;
- результати дзвінків;
- пропущені дзвінки;
- задачі передзвону;
- CRM-прив’язки;
- тарифи телефонії;
- імпорт CDR;
- webhook-події;
- аналітика;
- журнал змін;
- звіти;
- права доступу.
Практичне завдання
У межах атестації потрібно продемонструвати робочий сценарій.
Мінімальний сценарій:
- створити клієнта з номером телефону;
- створити співробітника;
- створити внутрішній SIP-номер;
- створити зовнішній номер компанії;
- імпортувати кілька дзвінків через CDR або створити тестові записи;
- автоматично розпізнати клієнта за номером;
- прив’язати дзвінок до співробітника;
- додати дзвінок без відомого клієнта;
- вручну прив’язати невідомий дзвінок до клієнта;
- додати посилання на запис розмови;
- прослухати запис через інтерфейс;
- створити пропущений дзвінок;
- створити задачу передзвонити;
- змінити статус пропущеного дзвінка на «Передзвонили»;
- додати результат дзвінка;
- відфільтрувати дзвінки за періодом;
- відфільтрувати дзвінки по співробітнику;
- сформувати звіт дзвінків за період;
- сформувати звіт ефективності співробітників;
- сформувати звіт пропущених дзвінків;
- сформувати звіт дзвінків по клієнтах;
- перевірити журнал змін.
Критерії оцінювання
| Критерій | Бали | Що перевіряється |
|---|---|---|
| Реалізація бази клієнтів, співробітників і дзвінків | 20 | Клієнти, телефони, співробітники, внутрішні номери, зовнішні номери, журнал дзвінків |
| Механізм імпорту дзвінків і прив’язки до клієнтів | 20 | CDR/API/webhook, нормалізація номерів, автоматичне розпізнавання клієнта, ручна прив’язка |
| Фільтрація і пошук дзвінків | 20 | Пошук за номером, клієнтом, співробітником, періодом, статусом, напрямком і тривалістю |
| Прослуховування записів розмов | 20 | Зберігання посилань, HTML5 audio, права доступу до записів, наявність запису в журналі |
| Інтерактивність через AJAX і аналітика дзвінків | 20 | AJAX-фільтри, коментарі, результати дзвінків, пропущені дзвінки, аналітика й звіти |
| Разом | 100 | Максимальна оцінка |
Шкала оцінювання
| Бали | Рівень | Опис |
|---|---|---|
| 90–100 | Відмінно | Модуль повністю працює: клієнти, співробітники, SIP-номери, імпорт дзвінків, прив’язка до клієнтів, записи, пропущені дзвінки, аналітика й звіти реалізовані коректно |
| 75–89 | Добре | Основна логіка працює, є незначні недоліки, які не руйнують процес обліку дзвінків |
| 60–74 | Зараховано | Базовий сценарій працює, але частина функцій реалізована неповно або потребує доопрацювання |
| 0–59 | Не зараховано | Відсутня критична логіка: журнал дзвінків, клієнти, співробітники, імпорт, прив’язка або аналітика |
Критичні помилки
Критичними помилками вважаються ситуації, коли:
- неможливо створити клієнта;
- неможливо створити співробітника;
- неможливо створити внутрішній номер;
- неможливо зберегти дзвінок;
- імпорт CDR не створює записи дзвінків;
- дзвінки не мають дати й часу;
- дзвінки не мають напрямку;
- номер клієнта не нормалізується;
- клієнт не розпізнається за наявним номером;
- дзвінок не прив’язується до співробітника;
- пропущені дзвінки не відображаються окремо;
- статус пропущеного дзвінка не змінюється;
- записи розмов не відкриваються, якщо функція заявлена;
- користувач без прав може прослухати чужі записи;
- фільтри по дзвінках працюють неправильно;
- звіти не відповідають фактичним дзвінкам;
- зміни прив’язки, коментарів або статусів не логуються.
Умова складання. Завдання не може бути зараховане, якщо система не дозволяє пройти базовий цикл IP-телефонії: дзвінок → імпорт → розпізнавання клієнта → прив’язка до співробітника → запис у журналі → аналітика → звіт.
Очікуваний результат
У результаті виконання атестаційного завдання має бути створений модуль обліку IP-телефонії в K2 ERP.
Модуль має підтримувати клієнтів, телефони клієнтів, співробітників, внутрішні SIP-номери, зовнішні номери компанії, журнал дзвінків, CDR/API/webhook-імпорт, автоматичне розпізнавання клієнтів, ручну прив’язку, записи розмов, пропущені дзвінки, задачі передзвону, CRM-прив’язки, аналітику, звіти, AJAX-інтерактив і логування змін.
Примітка
Облік IP-телефонії потрібен CRM-системам, кол-центрам, відділам продажу, сервісним службам і технічній підтримці.
Такий модуль дозволяє контролювати якість комунікації з клієнтами, оцінювати ефективність менеджерів, швидко реагувати на пропущені дзвінки та зберігати повну історію телефонних контактів.
Коротко
| Питання | Відповідь |
|---|---|
| Що потрібно створити? | Модуль обліку дзвінків IP-телефонії |
| Які довідники потрібні? | Клієнти, телефони, співробітники, внутрішні номери, зовнішні номери |
| Який головний об’єкт? | Дзвінок у журналі телефонії |
| Як дзвінки потрапляють у систему? | Через API, webhook, CDR або CSV-імпорт |
| Що має робити система з номером клієнта? | Нормалізувати номер і знайти клієнта в базі |
| Що важливо для пропущених дзвінків? | Окремий контроль і задача передзвонити |
| Які звіти потрібні? | Дзвінки за період, ефективність співробітників, пропущені дзвінки, дзвінки по клієнтах |
| Що є критичною вимогою? | Кожен дзвінок має бути збережений, знайдений у журналі й доступний для аналізу |