INITASK Для ІТ-служби АТ «Черкасиобленерго»

Голосовий помічник кол-центру: вимоги до ІТ-інфраструктури

Документ для технічної оцінки здійсненності. Розрахунки зроблені під ваші цифри з анкети: пік до 4 000 дзвінків на добу, телефонія FreePBX (Asterisk + MariaDB), обслуговування українською, ціль розвантаження операторів у пік 50 відсотків. Комерційна частина в окремому КП, тут тільки техніка.

версія 1.0підготовлено Initaskформат: вимоги + чек-лист для ІТ
1Головне на одну сторінку 2Вхідні дані і як їх звірити 3Скільки одночасних ліній 4Три варіанти розгортання 5Специфікація серверів 6Підключення до FreePBX 7Мережа, кодеки, затримка 8Записи і сховище 9Інтеграції 10Безпека і персональні дані 11Відмовостійкість 12Чесні обмеження 13Чек-лист для ІТ 14Етапи і хто що робить

1Головне на одну сторінку

30
одночасних голосових сесій, проєктна місткість під ваш пік
2 сервери
один з GPU для розпізнавання і синтезу, один звичайний для логіки
до 1 ТБ/рік
записи розмов і транскрипти при поточних обсягах

Коротка відповідь на питання «чи реально це в нас розгорнути»

Так. Ваша телефонія FreePBX на Asterisk підключається до голосового агента штатними засобами, без заміни АТС і без зміни номерів. Критичних вимог дві: обчислювальний вузол з GPU, якщо розпізнавання і синтез мають лишатися у вашому контурі, і мережева затримка в межах одного дата-центру, бо бюджет відповіді у нас одна секунда.

Якщо GPU в компанії немає і купувати його зараз не плануєте, робочий варіант це гібрид: медіа і бізнес-логіка у вас, розпізнавання і синтез через зовнішній сервіс. Тоді залізо не потрібно взагалі, але зʼявляється щомісячна плата за хвилини і питання передавання голосу назовні, яке треба погодити з безпекою.

Що саме потрібноМінімумРекомендовано
Сервер застосунку8 vCPU, 16 ГБ RAM, 200 ГБ SSD8 vCPU, 32 ГБ RAM, 500 ГБ SSD, два інстанси
Сервер GPU (варіант у контурі)1 × GPU 24 ГБ, 16 vCPU, 64 ГБ RAM2 × GPU 24 ГБ (L4 або A10), 32 vCPU, 128 ГБ RAM, 1 ТБ NVMe
Місце під записи250 ГБ на рік (стиснуто)1 ТБ на рік плюс резервне копіювання
Мережа до Asteriskта сама локальна мережа або L2/L3 з затримкою до 5 мсодин дата-центр, VLAN для голосу, QoS для RTP
ДоступиSIP-акаунт у FreePBX, читання білінгуплюс запис показів у білінг і створення звернення в CRM

2Вхідні дані і як їх звірити

Розрахунки нижче побудовані на цифрах, які ви дали в анкеті. Перед фінальним проєктуванням їх варто підтвердити вивантаженням з вашої ж системи, це робиться одним запитом до бази CDR.

ПараметрЗначення з анкетиЯк впливає на інфраструктуру
Дзвінків на добупік до 4 000, середнє близько 1 400, спокійні дні 300 до 500визначає кількість одночасних сесій і потужність GPU
Структура зверненьпокази 80%, інші питання 16%, немає електроенергії 3%, напруга 1%визначає, яку частку бере бот і скільки триває типовий діалог
ТелефоніяFreePBX (Asterisk + MariaDB), IVR з чергами за пріоритетом, запис розмовспосіб підключення бота і місце запису
Оператори SIPУкртелеком 0800, Київстар, Lifecell, Vodafoneкодеки і кількість каналів на транках
Мова і якістьукраїнська, розпізнавання з помилкою до 5%, відповідь до 1 секунди, природність синтезу від 4.5визначає клас моделей і потребу в GPU
Суміжні системибілінг (SQL або Access), CRM кол-центру на Oracleінтеграції і права доступу
Контурдані не залишають периметр компаніїключовий вибір між варіантами А і Б

Запит, який дасть точну пікову одночасність

Виконати на базі CDR вашого FreePBX за останні три місяці. Результат це максимальна кількість одночасних розмов у розрізі годин, саме її ми беремо за основу замість оцінки.

-- MariaDB, база asteriskcdrdb, таблиця cdr
SELECT DATE(calldate) AS d, HOUR(calldate) AS h,
       COUNT(*) AS calls,
       ROUND(SUM(billsec)/3600, 2) AS erlangs,
       ROUND(AVG(billsec)) AS avg_sec
FROM cdr
WHERE calldate >= DATE_SUB(NOW(), INTERVAL 90 DAY)
  AND disposition = 'ANSWERED'
GROUP BY d, h
ORDER BY erlangs DESC
LIMIT 20;

Стовпець erlangs це і є середнє навантаження в годину. Пікове значення підставляється у розрахунок нижче.

3Скільки одночасних ліній потрібно боту

Кількість серверів залежить не від кількості дзвінків на добу, а від того, скільки розмов ідуть одночасно у пікову годину. Рахуємо за класичною формулою Erlang B, як для черг у кол-центрі.

КрокРозрахунокРезультат
Пікова годинаприблизно 20% добового обсягу піку: 4 000 × 0,2800 дзвінків за годину
Тривалість діалогу з ботомпокази 60 до 90 секунд, довідка 45 до 60 секунд, беремо середнє75 секунд
Навантаження, якщо бот приймає всі дзвінки першої лінії800 × 75 / 3 60016,7 Ерланга
Потрібно каналів при втратах 1%Erlang B для 16,7 Ерланга25 одночасних сесій
Проєктна місткість із запасом 20%25 × 1,230 одночасних сесій
Якщо бот бере тільки половину трафіку400 × 75 / 3 600 = 8,3 Ерланга16 сесій, тобто один вузол з запасом

Що це означає практично

  • Проєктуємо систему на 30 одночасних голосових сесій. Це покриває ваш пік навіть у сценарії, коли бот першим приймає всі вхідні.
  • Масштабування лінійне: кожні додаткові 15 сесій це ще один GPU 24 ГБ або одна додаткова нода застосунку.
  • У спокійні дні (300 до 500 дзвінків) система працює на 5 до 10 відсотках потужності, тобто запас великий.

4Три варіанти розгортання

Вибір між ними це передусім рішення про те, де обробляється голос абонента, і про структуру витрат: разова закупівля заліза проти щомісячної плати за хвилини.

КритерійА. Повністю у вашому контуріБ. ГібридВ. Повністю у хмарі
Де обробляється голосусе у вас, назовні нічого не йдемедіа і логіка у вас, розпізнавання і синтез назовніусе у постачальника хмари
Потрібен GPUтак, 1 до 2 карт по 24 ГБніні
Разові витрати на залізоорієнтовно 8 до 12 тис. доларів за сервер з GPUнемаєнемає
Щомісячна плата за хвилининемаєорієнтовно 600 до 1 800 доларів на місяць при ваших обсягахвища за гібрид, плюс плата за телефонію
Затримка відповідінайкраща, вкладаємось у 1 секундуплюс 60 до 150 мс на зовнішні викликизалежить від каналу до хмари
Персональні даніне залишають периметрпотрібна згода і договір з постачальником, бажано маскуванняповністю поза периметром
Термін запускудовший, треба закупити і встановити сервернайшвидшийнайшвидший
Наша рекомендаціяцільовий станстарт пілоталише як тимчасове

Рекомендований шлях

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

Точка беззбитковості: сервер з двома картами окупається проти хмарних хвилин приблизно за 8 до 12 місяців при ваших обсягах, і це без урахування того, що на цьому ж сервері згодом можуть працювати інші моделі компанії.

5Специфікація серверів

Вузол застосунку (потрібен у всіх варіантах)

КомпонентВимогаКоментар
CPU8 vCPU (мінімум 4)медіа-шар, обробка RTP, мікшування, запис
RAM16 ГБ, рекомендовано 32 ГБбуфери аудіо і кеш даних білінгу
Диск200 ГБ SSD під систему, окремий том під записизаписи виносяться на файлове сховище
ОСUbuntu Server 22.04 LTS або сумісна, Dockerсервіс постачається контейнерами
Віртуалізаціяпідходить ВМ на вашому кластеріокреме залізо не обовʼязкове

Вузол GPU (тільки для варіанта А, повний контур)

КомпонентВимогаЧим зайнятий
GPU2 × NVIDIA L4 24 ГБ або 2 × A10 24 ГБ. Альтернатива: 1 × RTX 6000 Ada 48 ГБкарта 1 розпізнавання мовлення, карта 2 синтез і мовна модель
Мінімальна конфігурація1 × GPU 24 ГБтягне близько 15 одночасних сесій, тобто половину піку
CPU16 vCPU, рекомендовано 32підготовка аудіо, VAD, черги
RAM64 ГБ, рекомендовано 128 ГБмоделі та буфери
Диск1 ТБ NVMeваги моделей займають близько 40 ГБ, решта під кеш і логи
ДрайвериNVIDIA driver 550 або новіший, CUDA 12.x, NVIDIA Container Toolkitстандартний стек
Живлення і охолодженняL4 це 72 Вт на карту, однослотова, без додаткового живленняставиться у звичайний стійковий сервер

Звідки взялись саме ці цифри

  • Розпізнавання: модель класу Whisper large v3 у прискореній реалізації дає близько 25 до 35 одночасних потоків на одній карті 24 ГБ при телефонному аудіо 8 кГц.
  • Синтез: нейронний голос українською працює не весь час розмови, а близько 40 відсотків, тому 30 сесій дають приблизно 12 одночасних синтезів. Це вміщається на другу карту разом з мовною моделлю.
  • Мовна модель для розуміння наміру потрібна невелика (7 до 8 мільярдів параметрів у квантованому вигляді, 10 до 16 ГБ памʼяті). Сценарій показів і довідок здебільшого детермінований, модель потрібна для вільного мовлення.

6Підключення до FreePBX

Ми не замінюємо і не переналаштовуємо вашу АТС. Голосовий агент підключається як ще один внутрішній ресурс, у який IVR спрямовує обрані гілки.

СпосібЯк працюєОцінка
SIP-розширення (PJSIP)бот реєструється у FreePBX як звичайний внутрішній номер, IVR переводить дзвінок на ньогорекомендовано найменше втручання, стандартна конфігурація
Asterisk ARI, externalMediaAsterisk віддає боту потік RTP через REST і WebSocketгнучкіше керування, потрібен доступ до ARI (порти 8088 або 8089)
AudioSocket або EAGIокремий канал передавання аудіо у застосунокрезервний варіант, якщо перші два недоступні

Маршрут дзвінка

Вхідний дзвінокваш IVRгілка «покази і довідки»голосовий агентчерга операторів при ескалації
; приклад логіки у dialplan, спрощено
exten => _X.,1,Dial(PJSIP/voicebot,20,g)          ; спроба віддати боту, 20 секунд
 same => n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?done)
 same => n,Queue(operators)                        ; бот недоступний, працює черга
 same => n(done),Hangup()

7Мережа, кодеки і бюджет затримки

ПараметрЗначенняКоментар
СигналізаціяSIP 5060/UDP або 5061/TLS між Asterisk і ботомрекомендуємо TLS навіть усередині периметра
МедіаRTP, діапазон UDP 10000 до 20000 (достатньо 200 портів на 30 сесій)за потреби звужується
КодекиG.711 alaw (основний), Opus за наявностіяк у ваших транках сьогодні
Смугаблизько 100 кбіт/с на сесію в обидва боки, 30 сесій це до 3 Мбіт/снавантаження на мережу мінімальне
Затримка мережідо 5 мс між Asterisk і ботом, джитер до 20 мсодин дата-центр або одна майданчикова мережа
QoSDSCP EF для RTP, окремий VLAN для голосустандартна практика для телефонії
Вихід в інтернетпотрібен тільки у варіантах Б і Вдля варіанта А достатньо локальної мережі

З чого складається обіцяна секунда

ЕтапТиповоГірший випадок
Визначення кінця фрази абонента250 мс300 мс
Розпізнавання і фіналізація тексту150 мс250 мс
Логіка і запит у білінг80 мс150 мс
Мовна модель, якщо потрібна60 мс120 мс
Синтез до першого звуку150 мс300 мс
Мережа і буферизація30 мс60 мс
Разомблизько 720 мсблизько 1 180 мс

Саме тому варіант з зовнішнім розпізнаванням і синтезом складніший: кожен зовнішній виклик додає 60 до 150 мс і бюджет секунди стає дуже щільним. У контурі запас комфортний, а відповідь на типове питання про покази лунає навіть швидше, бо там не потрібна мовна модель.

8Записи розмов і сховище

Що зберігаєтьсяОбсяг на добу (пік)За 12 місяців при середньому навантаженні
Аудіо без стиснення (WAV 8 кГц)близько 4,8 ГБблизько 610 ГБ
Аудіо стиснуте (Opus 24 кбіт/с)близько 0,9 ГБблизько 115 ГБ
Транскрипти і резюме (текст)близько 8 МБблизько 1 ГБ
Технічні журналиблизько 200 МБблизько 40 ГБ з ротацією

9Інтеграції з вашими системами

СистемаЩо потрібноРежим доступуКритичність
FreePBX (Asterisk)SIP-акаунт для бота, гілка IVR, за потреби доступ до ARI і CDRчитання CDR, реєстрація SIPобовʼязково
Білінг (SQL або Access)перевірка особового рахунку, історія показів, обсяг за періодчитання: окремий користувач або представленняобовʼязково
Білінг, запис показіввнесення прийнятого голосом показузапис: процедура або проміжна таблицяза вашим рішенням
CRM кол-центру (Oracle)створення картки звернення за результатом дзвінкаAPI або таблиця обмінубажано
Дані про відключеннядовідка про зареєстроване відключення на день зверненнячитання, вивантаження або представленнябажано
База знаньофіційні тексти відповідей на типові питанняведеться у кабінеті агентаобовʼязково

Про запис показів голосом

У КП цей сценарій закладений, бо саме покази це 80 відсотків ваших дзвінків. Технічно можливі два режими, і вибір за вами: агент або пише показ у білінг напряму через погоджений інтерфейс, або передає його у чинний механізм приймання показів, а сам лише підтверджує абоненту, що показ прийнято. Другий режим не потребує прав на запис у білінг і зазвичай швидше проходить внутрішнє погодження.

Окремо про Access: якщо частина даних білінгу лежить у файлах Access, прямий одночасний доступ з боку сервісу не є надійним рішенням. Робочий варіант це нічне або погодинне вивантаження у проміжну базу, з якої читає агент. Це не впливає на якість відповідей про попередні періоди, але дає затримку в актуальності поточного дня, і про це треба домовитись на етапі проєктування.

10Безпека і персональні дані

11Відмовостійкість і безперервність обслуговування

Сценарій відмовиЩо відбуваєтьсяНаслідок для абонента
Сервіс агента недоступнийdialplan через 20 секунд переводить дзвінок у чергу операторівжоден дзвінок не втрачається, працює як зараз
Відмова GPU-вузлаавтоматичний перехід на зовнішнє розпізнавання або на операторів, за вашим виборомабо трохи вища затримка, або звичайна черга
Перевищення місткості у пікпонад 30 сесій нові дзвінки одразу йдуть операторамчерга як сьогодні, без погіршення
Недоступний білінгагент чесно каже, що дані тимчасово недоступні, і передає операторубез вигаданих цифр

Моніторинг: одночасні сесії, затримка відповіді, частка дзвінків, закритих без оператора, частка ескалацій, помилки інтеграцій. Метрики віддаються у вашу систему моніторингу або у власну панель сервісу, алерти в Telegram або на пошту чергового.

12Чесні обмеження, про які краще знати заздалегідь

13Чек-лист для ІТ-служби

Перелік того, що потрібно від вашого боку. Пункти 1 до 5 потрібні для старту пілота, решта до промислової експлуатації.

1Віртуальна машина під застосунок: 8 vCPU, 16 до 32 ГБ RAM, 200 ГБ SSD, Ubuntu 22.04, Docker, доступ адміністратора для розгортання.
2SIP-акаунт у FreePBX для бота і гілка IVR, з якої дзвінки підуть на нього. Плюс тестовий внутрішній номер для перевірки.
3Мережеві дозволи: SIP і RTP між Asterisk і вузлом застосунку, доступ до бази білінгу з адреси сервісу.
4Технічний користувач до білінгу з правами читання (рахунок, покази, обсяг за період) і, за вашим рішенням, з правом запису показів.
5Вивантаження CDR за 3 місяці для точного розрахунку місткості і тривалості дзвінків.
6Рішення по варіанту розгортання: повний контур з GPU, гібрид або хмара. Від цього залежить, чи потрібна закупівля сервера.
7Сервер з GPU (для варіанта А): 2 × 24 ГБ, драйвер NVIDIA 550 або новіший, CUDA 12.x, NVIDIA Container Toolkit.
8Доступ до CRM (Oracle) для створення картки звернення: API або погоджена таблиця обміну.
9Місце під записи: том на 250 ГБ (стиснуто) або 1 ТБ (без стиснення) на рік, з резервним копіюванням.
10Офіційні тексти відповідей на типові питання і правила пріоритетів та ескалації, підтверджені керівництвом кол-центру.
11Позиція служби безпеки щодо обробки голосу і персональних даних, строку зберігання записів і, для гібриду, передавання даних зовнішньому сервісу.
12Відповідальні особи: телефонія, білінг, CRM, інформаційна безпека, кол-центр. По одній людині на напрям.

14Етапи і хто що робить

ЕтапВаш бікНаш бікСтрок
Технічна сесіятелефонія, білінг, безпека, кол-центруточнення схеми, фіксація варіанта розгортання1 зустріч
Підготовка середовищаВМ, SIP-акаунт, доступи, мережеві правилаперелік і супровід налаштуваннятиждень 1
Розгортання і сценаріїпогодження текстів і правил ескалаціїустановка, підключення до FreePBX, сценарії показів і довідкитижні 1 до 2
Тестові дзвінкивнутрішні номери, участь супервізораналаштування розпізнавання, порогів, підтвердженьтиждень 3
Пілот на частині трафікуперемикання гілки IVRщоденний контроль метрик, донастройкатижні 3 до 4
Підсумокрішення про масштабзвіт: частка закритих дзвінків, точність, затримка, ескалаціїкінець пілота

Що ми пропонуємо зробити першим кроком

Технічна сесія на годину з вашими фахівцями по телефонії і білінгу плюс вивантаження CDR за три місяці. Після цього ми віддаємо фінальну специфікацію з точними цифрами під ваш реальний трафік, і вже за нею ІТ приймає рішення про залізо. Пілот при цьому можна стартувати паралельно, у гібридному режимі, без жодних закупівель.