Слушайте
Понимает запрос в контексте разговора и правил бизнеса.
Голосовые ИИ-агенты Платформа
Мы создаем агентов, которые принимают и инициируют звонки, используют информацию бизнеса и работают с вашими системами. От первого вопроса до полного запроса, подтверждения или передачи коллеге.
Kallina
Понимает запрос в контексте разговора и правил бизнеса.
Обращается к базе знаний и авторизованным интеграциям, прежде чем ответить.
Заполняет данные, выполняет разрешенное действие или передает разговор человеку.
Частые вопросы, приём обращений и обратная связь с людьми, которые попросили связаться с ними.
Подтверждения и координация, с информацией из подключённой системы заказов.
Собирает необходимые детали. Доступ к календарю и бронирование настраиваются для каждой интеграции.
Сценарии, номер телефона, языки и действия настраиваются для каждого внедрения. Команда сохраняет возможность взять разговор на себя.
Kallina подробно
Kallina — это платформа, на которой мы создаём агентов, которые говорят по телефону и на веб-странице. У агента есть прописанная роль, утверждённая база знаний, набор инструментов, которые он может вызывать, и предел, после которого он передаёт разговор человеку. Разговор не заканчивается на транскрипте: у звонка есть длительность, стоимость у поставщика, запись и анализ, всё это связано с аккаунтом бизнеса.
Голосовой движок не один. В конфигурации агента вы выбираете между ElevenLabs Conversational AI, OpenAI Realtime, Gemini Live или «auto», когда Kallina выбирает поставщика в зависимости от языка, нагрузки и доступности. Помимо этого вы отдельно выбираете текстовый «мозг» — каталог в коде содержит 78 записей от OpenAI, Google, Anthropic, xAI и ElevenLabs, у каждой показаны задержка и стоимость за минуту в интерфейсе, чтобы выбор был осознанным, а не по слухам.
Телефония у нас своя, не арендованная у поставщика голоса. Звонки проходят через собственный Asterisk, с маршрутизацией по рабочим часам и часовому поясу, ночным графиком (например 22:00 → 06:00) и сопоставлением по приоритету: SIP-заголовок Diversion, затем номер Kallina, затем резервное правило. Для OpenAI Realtime есть мост AudioSocket, который преобразует кодек в обе стороны, g711_ulaw ↔ PCM16.
В `AGENT_PROVIDERS` есть четыре варианта: `elevenlabs` (ConvAI), `openai-realtime`, `gemini-live` и `auto`. Для text-to-speech на языках, отличных от английского, по умолчанию используется `eleven_flash_v2_5` — 32 языка, примерно 75 мс задержки; альтернатива более высокого качества, `eleven_turbo_v2_5`, стоит примерно 250 мс. Выбор не спрятан в коде, это поле в конфигурации агента.
78 моделей в `LLM_MODELS`, сгруппированных по поставщику в интерфейсе вместе с измеренной задержкой и стоимостью за минуту — от `gpt-5-nano` примерно 806 мс и около 0,0004 $/мин, до `claude-sonnet-4-6` примерно 1,55 с и около 0,0225 $/мин. Клиент, который спрашивает «почему отвечает медленно», получает ответ с цифрами, а не мнение.
Переадресация звонков настраивается по рабочим часам и часовому поясу, с поддержкой ночного графика и сопоставлением по приоритету (SIP-заголовок Diversion → номер Kallina → резервное правило). Мост `openai-realtime-bridge` выполняет преобразование AudioSocket между g711_ulaw и PCM16 для двустороннего аудиопотока.
`<script src="https://app.kallina.info/embed.js" data-widget="WIDGET_ID"></script>`. Страница никогда не узнаёт, какой агент отвечает, и не хранит никакого ключа поставщика: она запрашивает у Kallina сессию, а Kallina возвращает подписанный URL с коротким сроком действия. Есть и режим `data-mode="inline"`, в котором embed вообще ничего не рисует, а страница сама строит интерфейс поверх API `start()` / `stop()` / `toggle()` / `on(event, fn)`.
Пакетный обзвон с 1–10 одновременными звонками, импорт контактов из CSV, логика повторных попыток, отслеживание в реальном времени с паузой, возобновлением и остановкой, плюс follow-up через SMS.
Конфигурация агента поддерживает 32 языка (`LANGUAGES`), полная карта языков платформы содержит 41 запись, а панель администрирования переведена на 20 (`src/i18n/locales`). Румынский — язык по умолчанию в `DEFAULT_VALUES`.
Данные и работа
От исследования к внедрению
Сценарий с чётким входом и чётким выходом — входящий звонок на ресепшн, подтверждение заказа, кампания обзвона. Мы явно пишем, что агенту нельзя делать, и по какому пути он передаёт разговор человеку.
Номер подключается к SIP-транку нашего Asterisk. Входящие и исходящие звонки тестируются отдельно, потому что ломаться они могут отдельно: ограничение оператора на исходящие звонки оставляет входящие работать без проблем.
`scripts/verify-voice-path.mjs` проходит точно путь браузера — строку в конфигурации, `get-widget-config`, затем `widget-voice-session` — и останавливается на подписанном URL, не открывая websocket. Запускается для одного виджета или для всех с активной голосовой связью, с 1–3 параллельно, и возвращает код выхода, поэтому его можно напрямую включить в cron.
Вы выбираете между ElevenLabs Conversational AI, OpenAI Realtime и Gemini Live либо оставляете «auto», и Kallina решает по языку и доступности. Для синтеза голоса на других языках, кроме английского, по умолчанию используется модель `eleven_flash_v2_5` — 32 языка, около 75 мс; если вам нужно более высокое качество и вы принимаете большую задержку, `eleven_turbo_v2_5` — около 250 мс. Голоса OpenAI Realtime — их десять, а их движок работает до `gpt-realtime-2.1`.
Одна строка: `<script src="https://app.kallina.info/embed.js" data-widget="WIDGET_ID"></script>`, загружаемая как обычный скрипт, не как модуль. Файл сегодня отдается и имеет 13.762 байта. Если вам нужен собственный интерфейс, `data-mode="inline"` ничего не рисует и оставляет вам `start()`, `stop()`, `toggle()` и события `state`, `message`, `error`. Внимание к хосту: файл находится на `app.kallina.info`, а не на `kallina.info` — это два приложения на двух разных серверах.
Нет. Порядок в `embed.js` такой: загружается SDK, запрашивается микрофон с `getUserMedia({audio:true})`, и только потом вызывается `widget-voice-session`. Если человек отклоняет микрофон, запрос сессии вообще не выполняется, значит, ни один подписанный URL не выдается и ничего не расходуется.
Да — пакетный обзвон, 1–10 одновременно, контакты из CSV, повторные попытки и follow-up через SMS. Но исходящие звонки зависят от телефонного оператора, а не только от нас: в нашем журнале проблем задокументирован случай, когда центральная станция оператора начала возвращать `403 Forbidden` на все исходящие, при нашей неизменной конфигурации и при нормальной работе входящих звонков. Поэтому мы тестируем исходящие отдельно, прежде чем обещать кампанию.
Конфигурация агента поддерживает 32 языка, внутренняя карта языков содержит 41 запись, а панель администрирования переведена на 20. Румынский — язык по умолчанию для новых агентов.
Нет, и это полезно знать до планирования запуска. Workflow GitHub в репозитории нацелен на проект Supabase Cloud, который был удален, поэтому «push на main = публикация» больше не соответствует действительности после миграции на собственную инфраструктуру. Реальная публикация выполняется по SSH, с копированием и перезапуском. Практическое следствие: срочное изменение требует человека, а не только commit.
Передача человеку — часть сценария, а не исключение. У каждого агента есть прописанные ограничения и настроенный путь перевода на телефонию; а в разговоре есть ограничения и критерии оценки успеха, именно чтобы случай вне роли был остановлен, а не импровизирован.
Показательный пример
Сценарий использования, без данных клиента или приписанных коммерческих результатов.
Кто-то звонит на номер бизнеса в 23:40, вне расписания на ресепшене.
Asterisk применяет правило расписания на ночь (например 22:00 → 06:00) и сопоставляет по приоритету: заголовок SIP Diversion, затем номер Kallina, затем резервное правило. Ночной агент отвечает на выбранном в конфигурации провайдере, уточняет запрос и вызывает инструменты, которые ему разрешено использовать.
Вызов остаётся в истории с транскриптом, аудиозаписью, длительностью и стоимостью, разбитой по поставщику. Всё, что выходит за рамки роли агента, останавливается и передаётся дальше, вместо того чтобы импровизироваться.
Что необходимо:Номер, подключенный на SIP trunk нашего Asterisk, исходящие вызовы разрешены оператором при желании и обратный звонок, плюс агент с prompt, утвержденной базой знаний и письменными ограничениями.
Возможности сотрудничества
Голосовая поддержка на основе утверждённой информации, с передачей оператору и чёткими правилами записи и хранения разговоров.
Мы определяем пилот вокруг реального процесса: пользователи, данные, интеграции, затраты и критерии приемки. Масштабирование следует после оценки результата.
Мы устанавливаем требования к доступности, размещению, защите данных и совместимости. Любое соединение с сервисами AGE или STISC требует проверки соответствия, доступа и утверждений.
Это сценарии адаптации, а не заявления о существующих контрактах или партнерствах. Предлагаемые функции подтверждаются в рабочей области проекта.
Обсудить пилотАссистент, подключённый к информации вашего бизнеса, в тех каналах, где вам пишут клиенты.
ПлатформаGrai — наше исследовательское направление в синтезе речи и моделях, приспособленных к языкам, на которых здесь говорят.
Исследования & разработкаMegaforms изучает сбор ответов через диалоговые формы, включая голосовые ответы и транскрибацию.
Разработка и демонстрацииРасскажите о своём процессе. Вместе определим, что стоит построить, что можно подключить и как проверим результат.