За сутки небольшой пул холодных контактов обошёлся в $100 — не из-за масштаба, а из-за архитектурной ошибки. Голосовой агент периодически попадал на voicemail, IVR и других ботов. Два процесса вежливо приветствовали друг друга по кругу, пока счётчик телефонии, STT, TTS, модели и инфраструктуры продолжал тикать. В чате такой баг выглядел бы просто глупо. В звонке он ещё и стоит денег.
Основная иллюзия при проектировании голосовых агентов — что это чат-бот с прикрученным телефоном. Схема кажется очевидной: Twilio принимает звонок, streaming STT распознаёт речь, LLM-агент думает и вызывает инструменты (CRM, календарь, база данных), TTS озвучивает ответ. В текстовом чате такая схема терпима: можно взять тяжёлую модель вроде Claude Opus, дать длинный системный промпт и позволить ей собирать ответ минутами. В звонке эта логика ломается почти сразу.
| Параметр | Чат-бот | Голосовой агент |
|---|---|---|
| Допустимая задержка ответа | Секунды и минуты | До 1–2 секунд |
| Размер промпта | Большой промпт допустим | Большой промпт снижает управляемость |
| Реакция на паузу | Пользователь ждёт | Пауза становится частью разговора |
| Архитектура | Один промпт + инструменты | Граф стадий с условиями переходов |
| Стоимость ошибки | Неудобство | Прямые денежные потери (телефония, STT, TTS) |
Главная причина — разная природа latency. Пауза в 2–3 секунды в телефонном разговоре уже ощущается как сбой. Если в этот момент агент последовательно дёргает CRM, проверяет календарь, ждёт ответа модели, генерирует текст и отправляет его в TTS — разговор звучит не как умный ИИ, а как зависший оператор. Человек на другом конце не обязан молчать: он перебивает, говорит «алло?», повторяет вопрос. Всё это попадает в streaming-транскрипт, модель пытается реагировать на новые фрагменты, контекст засоряется — и через несколько реплик вместо диалога получается каша.
Inbound-квалификация лидов освободила команду из 4 сейлзов примерно от 40 часов работы в неделю.
Быстрая модель проблему не решает, а лишь переносит. На одном из проектов использовалась Gemini 2.5 Flash — она начинала отвечать быстро и могла произнести «сейчас проверю календарь», пока дёргает инструмент. Но при большом промпте и длинном flow уже через несколько реплик модель теряла нить: забывала, зачем звонит, что уже спросила, на каком этапе находится и какой инструмент вызывать дальше. Большой промпт в голосовом агенте превращается в мешок инструкций, из которого модель на пятой реплике достаёт не ту бумажку.
Рабочая архитектура — это управляемый граф стадий разговора. Платформы вроде Retell и ElevenLabs делают это явным прямо в интерфейсе. В шаблоне patient screening нет магической простыни «поговори с пациентом» — есть узлы: greeting, identity check, consent, screening questions, closing, transfer call, end call, technical issue fallback. У каждого узла короткая инструкция, у переходов — условия. Отдельно настраиваются чувствительность к перебиваниям, лимит длительности звонка, post-call extraction полей и тесты. Такой подход звучит скучно, но именно скучная инженерия здесь и спасает.
Два кейса, где граф сработал. Первый — inbound-квалификация лидов для компании, продававшей курсы программирования на немецком рынке. Маркетинг экспериментировал с аудиториями, и в заявки часто приходили люди, не понимавшие, куда оставили форму. Агент звонил входящим лидам и выяснял базовое: понял ли человек оффер, откуда узнал о программе, какой бюджет и сроки, может ли заниматься на английском. По итогам заполнялся опросник, считался скор, тёплые лиды уходили живым сейлзам. Результат — около 40 освобождённых часов в неделю на команду из четырёх человек. Второй кейс — напоминания о вебинарах. Доходимость из записавшихся составляла около 10%. Агент звонил за 30, 10 и 5 минут до старта с простым сообщением. Доходимость выросла примерно до 30%, местами — в 2,5 раза. Оба кейса объединяет одно: узкая задача, короткий разговор, мало ветвлений, понятный критерий успеха.
Холодный outbound не взлетел — и это закономерно. Холодный звонок — это открытый мир: voicemail, IVR с клавиатурой, секретарь, гейткипер, другой бот, «отправьте на почту», «я не принимаю такие решения». На каждый сценарий нужно отдельное поведение: когда считать звонок попавшим на voicemail, когда класть трубку, как не застрять на секретаре, когда перестать тратить деньги. Все эти ветки легко нарисовать на бумаге. В реальном звонке они смешиваются, ломаются, перебиваются и попадают в кривые транскрипты — именно так и сгорели $100 за сутки.
Готовые платформы вроде Retell и ElevenLabs ценны не тем, что «умеют звонить», а тем, что закрывают всю скучную realtime-механику: обработку перебиваний, streaming STT/TTS, лимиты, тестирование, извлечение данных после звонка. Собрать это самостоятельно технически возможно, но главный вопрос голосового агента — не «как позвонить», а «как не дать агенту продолжать звонить, когда он уже заблудился».


