Голосовой бот для обзвона клиентов: платформа со скриптом из файла и кампаниями

Загружаете скрипт продаж — получаете голосового робота, который звонит по списку с настоящего номера, ведёт разговор по вашему сценарию, размечает исход и сохраняет стенограмму. Разбираем, как это устроено внутри и что пришлось чинить по дороге.
Голосовой бот для обзвона клиентов: платформа со скриптом из файла и кампаниями

Собрали платформу исходящего обзвона. Пользователь вставляет свой скрипт продаж — система превращает его в голосового агента, который звонит по списку контактов с настоящего телефонного номера, ведёт разговор по сценарию, отвечает на возражения, размечает исход и оставляет стенограмму. Внутри — SIP-телефония, распознавание и синтез речи Яндекса, YandexGPT и веб-панель управления.

Скрипт → рабочий промпт
Пауза между репликами ~0,5 с
Пробный звонок на свой номер
Стенограмма и исход каждого звонка
ЗадачаСнять с менеджеров сценарный обзвон и сделать так, чтобы новый сценарий запускался без участия программиста.
РешениеСвоя платформа: агент собирается из скрипта, кампания — из списка номеров, звонки идут через SIP, результаты копятся в базе.
СтекPJSIP + SIP-оператор, Яндекс SpeechKit (распознавание и синтез, голос «Марина»), YandexGPT, FastAPI, PostgreSQL, Docker.
Схема обзвона: список контактов уходит в голосового бота, на выходе размеченные исходы — интерес, перезвонить, отказ

Что было нужно

Задача звучала просто: «пусть робот обзвонит базу и расскажет про акцию». За этой простотой прячутся три отдельные проблемы, и каждая способна убить проект.

  • Телефония. Звонить надо с настоящего номера через оператора связи, чтобы у клиента определился нормальный номер, а не «неизвестный вызов из интернета».
  • Реальное время. Робот должен слушать и отвечать в темпе живого разговора. Пауза в пять секунд — и человек кладёт трубку.
  • Повторяемость. Новый скрипт должен превращаться в работающего бота без программиста. Иначе каждая акция — это новая разработка, и экономика не сходится.

Поэтому делали не «бота под один сценарий», а платформу, где сценарий — это вход, а не исходный код.

Как проходит один звонок

Три блока крутятся по кругу, пока разговор не закончится.

Шаг 01

Слышит

Речь клиента распознаётся в текст. Детектор речи отделяет реплику от шума и понимает, что человек договорил.

Шаг 02

Думает

Текст уходит в модель вместе со сценарием и историей диалога. Ответ выбирается по скрипту, а не по общим знаниям модели.

Шаг 03

Говорит

Ответ синтезируется голосом и звучит в трубке. Дальше бот снова слушает.

Главный параметр здесь — задержка между «человек договорил» и «бот начал отвечать». Первые замеры на зарубежных моделях дали от 5 до 27 секунд из наших сетей: в переписке это терпимо, в телефонном разговоре — провал. Перевели «мозг» на YandexGPT на российских серверах и получили около четырёх десятых секунды. Это и есть разница между «робот тупит» и «нормально поговорили».

Скрипт превращается в бота автоматически

Самая неочевидная часть проекта — не телефония, а превращение сырого скрипта в рабочий промпт. Заказчик присылает то, что у него есть: файл со скриптом продаж, черновик оффера, список возражений. В платформе за это отвечает отдельный генератор — он собирает из этого текста четыре вещи.

  • Приветствие. Первая фраза бота — дословно из скрипта, целиком: представление, повод звонка, вопрос для вовлечения. Не сокращаем и не «улучшаем».
  • Сценарий разговора. Шаги, формулировки, условия предложения, ответы на возражения — с конкретикой из скрипта, а не общими словами.
  • Переменные. Имя клиента и другие поля, которые подставляются из списка контактов: бот здоровается по имени, а не «уважаемый абонент».
  • Правила разметки исхода. По каким признакам считать разговор интересом, просьбой перезвонить или отказом — под статусы конкретной кампании.

Главное правило генератора — копировать, а не сочинять

Если в скрипте написано «скидка 10% на первый визит», в промпте окажется ровно «10%», а не абстрактное «предложи скидку». Бот не изобретает условия акции — он повторяет ваши. На пилотном скрипте розничного центра это была презентация акции с конкретным примером расчёта, и бот проговаривал его без отсебятины.

Что видно в админ-панели

Всё управление — через веб-панель в браузере, включая телефон и планшет. Порядок работы такой:

  • Создать агента. Вставить скрипт, выбрать голос, дождаться, пока соберётся промпт.
  • Проверить. Пробный звонок на свой номер — послушать, как бот говорит, и поправить скрипт до того, как он пойдёт по базе.
  • Создать кампанию. Загрузить список номеров с именами и переменными, задать паузу между звонками.
  • Запустить и остановить. В любой момент, без перезапуска сервиса.
  • Смотреть результаты. По каждому контакту: статус, исход, длительность, стенограмма разговора, короткое резюме на русском.
  • Отдать дальше. Результаты уходят по webhook в CRM или выгружаются в таблицу.

Тот же набор действий доступен через API — если обзвон нужно запускать из вашей системы, а не руками.

Как устроено под капотом

  • Телефония — SIP-стек PJSIP, подключение к оператору (в нашей сборке Новофон), исходящий номер определяется у клиента.
  • Речь — Яндекс SpeechKit: распознавание и синтез, женский голос «Марина», настраиваемые темп и интонация.
  • Модель — YandexGPT, российские серверы, отсюда низкая задержка.
  • Данные — PostgreSQL: агенты, кампании, контакты, звонки, стенограммы, исходы.
  • Приложение — FastAPI, всё в Docker-контейнерах на отдельном сервере Ubuntu (4 CPU, 5,8 ГБ памяти).

Обзвон идёт последовательно, с настраиваемой паузой между номерами, только в рабочие часы (по умолчанию с 9:00 до 18:00 по Москве) и в ограниченное число одновременных линий. Контакт, попросивший больше не звонить, получает флаг «не звонить» и в следующие кампании не попадает — это не украшение, а требование к любому обзвону.

Что пришлось чинить

Демо голосового бота собирается за вечер. Работающий бот — нет. Вот что реально съело время.

Бот слышал сам себя

Микрофонный тракт возвращал собственную речь бота, и он начинал отвечать на свои же фразы. Лечится сбросом позиции чтения аудио и короткой паузой после проигрывания реплики.

Говорил раньше, чем сказали «алло»

Соединение установлено — но человек ещё не поднёс телефон к уху. Добавили ожидание речи до двух с половиной секунд: бот начинает приветствие, только услышав человека.

Реагировал на кашель и фон

Настроили детектор речи: порог громкости, минимальная длительность реплики, пауза около секунды как признак того, что человек договорил. Иначе бот перебивал на вдохе.

Не давал себя перебить

Живой человек перебивает. Научили бота замолкать, если собеседник заговорил поверх его реплики, и подхватывать разговор с этого места.

Телефония падала на потоках

PJSIP не прощает вызовов из посторонних потоков. Все обращения к телефонии пришлось завести в одну очередь — после этого падения прекратились.

Что это даёт бизнесу и где не поможет

Робот не заменяет продавца. Он снимает слой сценарных звонков: напоминания, подтверждение записи, обзвон своей базы с одним понятным предложением, опрос после обслуживания, отсев перед продающей кампанией. Там, где решают отношения и торг, ставить бота — значит потратить деньги и получить прежнюю воронку.

И отдельно: если течёт не обзвон, а само предложение, скорость звонков ничего не исправит. Робот быстрее донесёт до людей то, что им не нужно. Поэтому до автоматизации мы честно спрашиваем, есть ли оффер, повторяемость сценария и ресурс обработать результат.

Подробнее об услуге, сроках и структуре сметы — на странице разработки голосового бота для обзвона. Смежные направления студии: боты с ИИ в Telegram и на сайте и автоматизация бизнес-процессов.

Частые вопросы

Сколько времени занимает запуск нового сценария?

Сам агент собирается из скрипта за минуты — дальше время уходит на пробные звонки и правку формулировок. Это и есть основная работа: услышать, где бот звучит неестественно или уходит от сценария.

Можно ли подставлять данные клиента в разговор?

Да, в списке контактов хранятся имя и произвольные поля, они подставляются в реплики бота. Бот здоровается по имени и может упомянуть детали конкретного клиента.

Куда попадают результаты обзвона?

В базу платформы и дальше — по webhook в CRM или выгрузкой в таблицу. По каждому звонку есть статус, исход, длительность, стенограмма и короткое резюме на русском.

Что с теми, кто просит больше не звонить?

Такой контакт помечается флагом «не звонить» и исключается из следующих кампаний.

Нужен такой же обзвон?

Расскажите, какой звонок хотите снять с менеджеров и есть ли готовый скрипт — разберём сценарий и скажем прямо, окупится бот у вас или сначала стоит починить что-то другое.

Бесплатный разбор задачи

Смотрим сценарий звонка, объём базы и то, куда должны попадать результаты.

Что уточним

Тип звонка, наличие скрипта и согласий абонентов, SIP-оператор, приёмник результатов — CRM, таблица или мессенджер.

Разбор сценария и оценка окупаемости
Схема бота: телефония, речь, разметка исходов
Смета и сроки запуска пилота

Телефон +7 995 991 27 27, почта info@1iaia.com. Страница услуги: разработка голосового бота для обзвона.

Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять