Голосовой бот доступный каждому
Признание
Сразу честно: я не телеком-инженер и не голосовой гуру. Этот кейс я взял, потому что хотелось пощупать голосовых ботов на реальной задаче - так интересней. У «Электронной Столовой» (ГД мой знакомый) как раз нашлась боль — оказывается остаются в наше время староверы родители, кто не готов пользоваться ни приложениями, ни личными кабинетами, зато любят звонить и спрашивать баланс на карте ребёнка или просить перекинуть деньги со счёта старшего на младшего. То, что каждая копейка на счету, я понимаю, но как будто есть способ как разгрузить сотрудника офиса.
Уверовав в силу LLM, я решил, что сделаю голосового бота и попутно разберусь как оно работает. Нормального пайплайна «взял номер → прикрутил VAPI» не случилось, но оно заработало. Схема точно не идеальная — буду рад, если в комментах покажете, как вы бы это сделали.
Как все начиналось.
Перво наперво я решил найти платформу, где боты владеют русским не хуже провинциального офис-менеджера (вообще я сам оттуда). Не с первого раза я наткнулся на VAPI - платформа с понятным интерфейсом и большой палитрой голосов на любой вкус. Настроить бота на ней оказалось самой простой задачей. Все сложности начались потом.
«Алло! Ларису Ивановну хочу!»....
Ну а собственно, куда будет звонить обеспокоенный питанием своего чада родитель? VAPI дает возможность нативной интеграции с большим количеством провайдеров IP-телефонии и даже предлагает свой бесплатный номер (только для Штатов). Но увы, ни один из них не доступен в РФ. Остается выход - интеграция через SIP TRUNK.
Так интеграция доступна, какой телефонией воспользоваться? Я выбрал первый сервис, который позволил оформить номер на физика - Новофон. Осталось теперь только связать IP телефонию с VAPI.
Не тут-то было
Оказалось, вражеский сервис не хочет принимать вызовы с российского IP. Пришлось арендовать зарубежный VPS, поднимать там Asterisk и играться с маршрутизацией, чтобы трафик шёл в обход. Никогда не думал, что буду настраивать dialplan ночью, но все бывает первый раз. Учебник + форумы + бестолковые советы LLM, куча попыток понять, почему INVITE падает. Когда наконец-то услышал голос бота, хотел открыть шампанское.
Дергаем за ниточки
Чтобы агент мог вызывать внешние сервисы, создаем функцию. Ей нужно передать параметр (account number) и задать адрес webhook n8n.
N8N - зачем?
На тот момент я уже несколько дней увлекался n8n, что повлияло на решение использовать платформу для вызова API "Умной столовой". Пайплайн в n8n прямой как палка. Он принимает параметр от агента и передает его в API (как обойтись без n8n я не разобрался)
Что сейчас работает
Схема такая: **Novofon → Asterisk (VPS с иностранным IP) → VAPI → n8n → API Электронной Столовой → ответ клиенту.**
Функциональность пока минимальная:
- Авторизация по номеру счёта. - Озвучивание баланса.
Зачем пишу на VC
- Если у вас есть реальный кейс и возможность боевого использования похожей схемы, пишите, я поделюсь знаниями и помогу чем смогу.
- Как бы вы выстроили маршрут звонка без танцев с VPS? - Какие есть лайфхаки по настройке VAPI или альтернативы с нормальным русским голосом? - Есть ли готовые прослойки вместо самописного n8n + API?
Ну и отдельно интересно, как вы обходите блокировки, когда нужно вести трафик на зарубежные площадки. Делитесь своим опытом — я с радостью поправлю схему и обновлю статью.