Реалізація голосового 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% після двох тижнів обкатки. Якщо показник нижчий — доопрацьовуємо сценарій безкоштовно. Отримайте консультацію щодо вашого сценарію — оцініть збільшення підтверджень у перші ж дні. Зв'яжіться з нами для швидкої оцінки проєкту. Замовте демонстрацію роботи бота на ваших даних.







