Реалізація голосового AI-бота для підтвердження замовлень
При пікових навантаженнях — акції, розпродажі, чорні п'ятниці — оператори кол-центру не справляються з потоком дзвінків. До 30% замовлень залишаються непідтвердженими, а кожен п'ятий клієнт скаржиться на довге очікування. Голосовий AI-бот на базі GPT-4o вирішує цю проблему: обробляє до 500 дзвінків на годину з конверсією підтвердження 85–92% і вартістю дзвінка, значно нижчою за операторську. Ми впровадили такі рішення для 50+ інтернет-магазинів — від локальних до федеральних мереж, маючи більше 5 років досвіду в розробці голосових AI-рішень.
Технічно бот являє собою ланцюжок: STT (розпізнавання мовлення) → NLU (класифікація намірів через GPT-4o-mini) → TTS (синтез відповіді) → API CRM. Ми використовуємо асинхронну архітектуру на Python з чергами завдань, що забезпечує latency p99 менше 2 секунд. Інтеграція з вашою CRM займає 1–2 дні через REST API або webhook.
Порівняйте два підходи: класичний кол-центр і AI-бот. Ось ключові показники:
| Параметр | Оператор | Голосовий бот (GPT-4o) |
|---|---|---|
| Середня тривалість дзвінка | 90–180 с | 45–90 с |
| Вартість одного дзвінка | Висока | Низька |
| Частка підтверджень | 80–88% | 85–92% |
| Доступність 24/7 | Ні | Так |
| Обробка 100+ дзвінків на годину | Потребує 3+ операторів | 1 інстанс бота |
Бот не бере лікарняний, не помиляється в даних замовлення і завжди говорить за скриптом. Єдиний мінус — складність емпатії в нестандартних діалогах, але ми закриваємо це переведенням на оператора при негативних емоціях.
Чому голосовий бот ефективніший за оператора?
У бота немає втоми, а його продуктивність лінійно масштабується. Один екземпляр обробляє 500 дзвінків на годину — для досягнення такої ж пропускної здатності потрібно найняти 5–6 операторів. При цьому вартість одного дзвінка у бота суттєво нижча.
Як реалізувати обробку намірів клієнта?
Ключове завдання — класифікувати відповідь клієнта: підтвердження, скасування, зміна адреси, запит повторення інформації. Ми використовуємо gpt-4o-mini з примусовим JSON-виведенням. Це дешевше (вартість за 1М токенів низька) і точніше, ніж регулярні вирази або легковагові NLU-моделі.
import json from openai import AsyncOpenAI client = AsyncOpenAI() async def classify_intent(text: str) -> dict: response = await client.chat.completions.create( model="gpt-4o-mini", messages=[ { "role": "system", "content": """Ти класифікатор намірів для дзвінка підтвердження замовлення. Відповідай JSON з полями: - action: "confirm" | "cancel" | "change_address" | "change_date" | "repeat_info" | "unknown" - entities: словник витягнутих даних (адреса, дата тощо)""" }, {"role": "user", "content": text} ], response_format={"type": "json_object"} ) return json.loads(response.choices[0].message.content) За даними наших проєктів, точність класифікації на українській мові — 97% для перших трьох намірів.
Вибір STT та TTS
| Модель | Затримка | Вартість за хвилину | Якість для української |
|---|---|---|---|
| Whisper | 1–2 с | Низька | Відмінне |
| Deepgram | 0.5–1 с | Середня | Добре |
| ElevenLabs | 0.8–1.5 с | Низька | Відмінне (TTS) |
| OpenAI TTS | 0.5–1 с | Висока | Добре (TTS) |
Вибір залежить від пріоритету: мінімальна затримка або якість голосу. Для української мови оптимальна пара — Whisper + ElevenLabs.
Інтеграція з API замовлень
Боту потрібно не лише розпізнати намір, а й оновити статус у вашій системі. Ми використовуємо asyncio з повторними спробами та Circuit Breaker.
import aiohttp async def update_order(order_id: str, status: str, data: dict = None): async with aiohttp.ClientSession() as session: for attempt in range(3): async with session.patch( f"{ORDERS_API}/orders/{order_id}", json={"status": status, "confirm_data": data}, headers={"Authorization": f"Bearer {API_TOKEN}"} ) as resp: if resp.status == 200: return await resp.json() await asyncio.sleep(2 ** attempt) # exponential backoff raise Exception("Update failed after 3 retries") Статуси: confirmed, cancelled, address_changed, date_changed. Після оновлення бот повідомляє клієнту новий статус і завершує діалог.
Як уникнути типових помилок при впровадженні?
- Привітання не довше 15 секунд — інакше клієнт кладе трубку.
- Обов'язкова перевірка дублів дзвінків: не обдзвонювати вже підтверджені замовлення.
- Врахування часових поясів — дзвінок о 8 ранку за місцевим часом дає відмову.
- Скрипт повинен мати розгалуження для нестандартних питань (наприклад, "де зараз замовлення?").
- Надійна інтеграція: статус в CRM змінюється синхронно з відповіддю бота.
Процес роботи під ключ
- Аудит — розбираємо ваш сценарій дзвінка, API-схему, SKU, обмеження (1–2 дні).
- Проєктування — проєктуємо діалоговий граф, налаштовуємо STT/TTS, визначаємо fallback-стратегію (2–3 дні).
- Розробка — пишемо скрипти на Python з використанням LangChain для RAG-контексту (якщо підвантажуються дані з бази товарів) (5–7 днів).
- Інтеграція — підключаємося до вашої CRM через REST API або webhook, налаштовуємо логування (2–3 дні).
- Тестування — прогоняємо 100+ тестових дзвінків, коригуємо тональність і швидкість мовлення (2 дні).
- Деплой — розгортаємо контейнери в хмарі (AWS/GCP/on-prem), підключаємо номер SIP або вхідну лінію (1 день).
Строки орієнтовно
- MVP (один скрипт, дрібнооптові замовлення) — від 2 до 3 тижнів.
- Повноцінна система з кампаніями, A/B-тестуванням та аналітикою — від 4 до 6 тижнів.
Точні строки називаємо після аудиту. Вартість розраховується індивідуально — ви можете стартувати з пілота за менші гроші.
Що входить у роботу
- Діалоговий граф у форматі JSON (можна редагувати без кодингу)
- Адаптація STT/TTS під голосовий тон бренду
- Інтеграція з вашою CRM/ERP (REST API, webhook)
- Дашборд метрик (Grafana) з десятками графіків
- Інструкція з експлуатації та 1 місяць підтримки
- Консультація з оптимізації скрипта на основі логів
Ми гарантуємо Confirmation Rate >85% після двох тижнів обкатки. Якщо показник нижчий — доопрацьовуємо сценарій безкоштовно. Отримайте консультацію щодо вашого сценарію — оцініть збільшення підтверджень у перші ж дні. Зв'яжіться з нами для швидкої оцінки проєкту. Замовте демонстрацію роботи бота на ваших даних.







