Голосовой бот доступный каждому

Кадр из фильма «Мимино» (1977). Режиссёр Георгий Данелия. © Киноконцерн «Мосфильм»
Кадр из фильма «Мимино» (1977). Режиссёр Георгий Данелия. © Киноконцерн «Мосфильм»

Признание

Сразу честно: я не телеком-инженер и не голосовой гуру. Этот кейс я взял, потому что хотелось пощупать голосовых ботов на реальной задаче - так интересней. У «Электронной Столовой» (ГД мой знакомый) как раз нашлась боль — оказывается остаются в наше время староверы родители, кто не готов пользоваться ни приложениями, ни личными кабинетами, зато любят звонить и спрашивать баланс на карте ребёнка или просить перекинуть деньги со счёта старшего на младшего. То, что каждая копейка на счету, я понимаю, но как будто есть способ как разгрузить сотрудника офиса.

Уверовав в силу LLM, я решил, что сделаю голосового бота и попутно разберусь как оно работает. Нормального пайплайна «взял номер → прикрутил VAPI» не случилось, но оно заработало. Схема точно не идеальная — буду рад, если в комментах покажете, как вы бы это сделали.

Как все начиналось.

Перво наперво я решил найти платформу, где боты владеют русским не хуже провинциального офис-менеджера (вообще я сам оттуда). Не с первого раза я наткнулся на VAPI - платформа с понятным интерфейсом и большой палитрой голосов на любой вкус. Настроить бота на ней оказалось самой простой задачей. Все сложности начались потом.

Настройка бота не вызывает сложностей
Настройка бота не вызывает сложностей

«Алло! Ларису Ивановну хочу!»....

Ну а собственно, куда будет звонить обеспокоенный питанием своего чада родитель? VAPI дает возможность нативной интеграции с большим количеством провайдеров IP-телефонии и даже предлагает свой бесплатный номер (только для Штатов). Но увы, ни один из них не доступен в РФ. Остается выход - интеграция через SIP TRUNK.

Укажите с какого IP будет производиться вызов
Укажите с какого IP будет производиться вызов

Так интеграция доступна, какой телефонией воспользоваться? Я выбрал первый сервис, который позволил оформить номер на физика - Новофон. Осталось теперь только связать IP телефонию с VAPI.

Не тут-то было

Оказалось, вражеский сервис не хочет принимать вызовы с российского IP. Пришлось арендовать зарубежный VPS, поднимать там Asterisk и играться с маршрутизацией, чтобы трафик шёл в обход. Никогда не думал, что буду настраивать dialplan ночью, но все бывает первый раз. Учебник + форумы + бестолковые советы LLM, куча попыток понять, почему INVITE падает. Когда наконец-то услышал голос бота, хотел открыть шампанское.

Дергаем за ниточки

Чтобы агент мог вызывать внешние сервисы, создаем функцию. Ей нужно передать параметр (account number) и задать адрес webhook n8n.

Создание функции такж не выглядит сложным
Создание функции такж не выглядит сложным

N8N - зачем?

На тот момент я уже несколько дней увлекался n8n, что повлияло на решение использовать платформу для вызова API "Умной столовой". Пайплайн в n8n прямой как палка. Он принимает параметр от агента и передает его в API (как обойтись без n8n я не разобрался)

n8n - что умею, то и использую
n8n - что умею, то и использую

Что сейчас работает

Схема такая: **Novofon → Asterisk (VPS с иностранным IP) → VAPI → n8n → API Электронной Столовой → ответ клиенту.**

Функциональность пока минимальная:

- Авторизация по номеру счёта. - Озвучивание баланса.

Зачем пишу на VC

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

- Как бы вы выстроили маршрут звонка без танцев с VPS? - Какие есть лайфхаки по настройке VAPI или альтернативы с нормальным русским голосом? - Есть ли готовые прослойки вместо самописного n8n + API?

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

1