Атестаційні завдання K2 ERP/Облік IP-телефонії
Атестаційне завдання 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-імпорт |
| Що має робити система з номером клієнта? | Нормалізувати номер і знайти клієнта в базі |
| Що важливо для пропущених дзвінків? | Окремий контроль і задача передзвонити |
| Які звіти потрібні? | Дзвінки за період, ефективність співробітників, пропущені дзвінки, дзвінки по клієнтах |
| Що є критичною вимогою? | Кожен дзвінок має бути збережений, знайдений у журналі й доступний для аналізу |