Написать в Telegram@Odilient

ИИ И АВТОМАТИЗАЦИЯ

ИИ-администратор Bronjoy

Голосовой ИИ-администратор для салонов красоты и барбершопов Узбекистана. Он понимает узбекскую, русскую и смешанную речь, сверяется с реальным календарём и ценами и записывает клиента.

Собственный продукт
Клиент
Локальные услуги
Отрасль
В развитии
Срок
2026
Год
С чего всё началось

Задача

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

Что мы сделали

Решение

Мы разработали голосового агента, который работает по репликам: он передаёт аудио звонящего прямо в Gemini вместе с настоящими инструментами записи и по предложению стримит ответ в edge-tts. Занять время можно только через токен удержания (hold token), ни один инструмент не принимает цену, а каждая фраза о записи, отмене или переносе перед озвучиванием сверяется с вызовами инструментов, которые действительно прошли успешно.

Технологии
Geminiedge-ttsLaravel 12Nuxt 4PostgreSQLOpenRouterTelegram Bot APIDocker
За кулисами

Как всё создавалось

Голосовой ИИ-администратор для записи на узбекском и русском

ИИ-администратор Bronjoy отвечает на звонки в бизнес на языке звонящего. Он понимает узбекскую, русскую и смешанную речь вроде «menga zapis kerak, ertaga utrom», читает настоящий календарь и прайс-лист, удерживает слот и создаёт реальную запись в панели Bronjoy, где владелец видит каждый звонок и его расшифровку.

Текущий статус: администратор полностью работает как демо в браузере и записывает в настоящий календарь демо-барбершопа. В продакшене функция закрыта флагом VOICE_ENABLED, который сейчас выключен: демо-страница на bronjoy.com/ai-receptionist опубликована, но её голосовой API отвечает 404. Телефонная часть — реальный номер +998 — ещё не создана.

Ключевые возможности

  • Только реальные данные — услуги, свободное время и информация о бизнесе берутся из его собственных записей, и ни один инструмент не принимает цену.
  • Удержание слотов — hold_slot резервирует время и возвращает hold_token, без которого не работает book_appointment. Поэтому агент не может записать на время, которого не было в календаре, а два звонящих не получат один и тот же слот.
  • Контроль заявлений — фразы о записи, отмене или переносе на русском, узбекском или английском проверяются до синтеза речи; если нет соответствующего успешного вызова инструмента, фраза превращается в уточняющий вопрос, а перехват записывается в журнал.
  • Передача живому человеку — escalate_to_human отправляет в Telegram критическое уведомление с причиной и последними словами звонящего.
  • Настройки владельца — приветствие, языки, пол голоса, вежливое или неформальное обращение (siz или sen), местная лексика и правила заведения.
  • Стоимость в сумах — расходы на звонки показываются в сумах по ежедневному курсу Центрального банка, а не в токенах.

Архитектура и технологический стек

По репликам, а не через realtime API

Каждая реплика звонящего — это один потоковый вызов Gemini на каждый раунд инструментов: аудио звонящего отправляется прямо в модель вместе с инструментами записи, а на все раунды и все переключения на резервную модель есть общий дедлайн — 20 секунд. От схемы «сначала расшифровать, потом рассуждать» мы отказались сознательно: на наших тестовых записях телефонного качества она добавляла 1,8–2,7 секунды к каждой реплике и теряла то, что не передаётся одними словами. Расшифровка делается потом — для субтитров, карточки в CRM и поиска. Телефонная линия пойдёт тем же путём, так что телефонию можно будет добавить, не переписывая агента.

Модели и голоса

Агент работает на gemini-3.5-flash-lite с низким уровнем рассуждений, а под нагрузкой переключается на gemini-3.1-flash-lite; один раунд инструментов по замерам занимал 1,4–1,6 секунды. Речь синтезируют голоса edge-tts, например uz-UZ-MadinaNeural: первый звук от него приходил через 0,5 секунды против 6,6 секунды у Gemini TTS. Пока идёт запрос к календарю, звучит закэшированная фраза «одну минуту» на каждом языке, а демо-страница на Nuxt показывает рядом с расшифровкой каждый вызванный инструмент — в том числе каждое заявление, которое остановил контроль.

Баги, которые проявились только на узбекском

Тесты на настоящем узбекском выявили сбои, которые английский тест бы пропустил:

  • Цены звучали как шум. «80 000 so'm» озвучивалось как «80 och och och son», потому что узбекский голос читал пробел-разделитель тысяч как слово. Теперь цены попадают в модель без пробелов.
  • Время пересчитывалось неверно. Слот, удержанный на 14:30, озвучивался как «половина первого». Теперь время повторяется ровно в том виде, в каком его вернул календарь.
  • Двойной код страны. Номер телефона вернулся с повторённым 998. Теперь всё, кроме +998 и девяти цифр, отклоняется, а продиктованные номера всегда повторяются вслух или берутся из определителя номера.

Защита демо

Публичное демо допускает 30 реплик и 10 минут на сессию и 20 сессий на IP-адрес в час. Ежечасная задача voice:sweep-demo удаляет демо-записи через 24 часа, а аудио звонков по умолчанию не сохраняется. В наших тестовых звонках полная запись в три реплики стоила около 120–150 сумов — примерно один американский цент.

Что мы сделали

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

Смежные работы

Это часть нашей работы по внедрению ИИ и автоматизации. Передача человеку использует слой уведомлений, на котором работает бот для сотрудников Bronjoy, а MCP-серверы Bronjoy позволяют текстовым ИИ-ассистентам записывать клиентов в те же календари.

Создадим вместе

Хотите что-то вроде ИИ-администратор Bronjoy?

Расскажите, что должен делать ваш продукт. Мы определим объём работ, распишем сроки и пришлём фиксированную цену — бесплатно и без обязательств продолжать.

Бесплатная консультация Без обязательств Быстрый ответ