Слухайте
Вона розуміє запит у контексті розмови та правил бізнесу.
Голосові ШІ-агенти Платформа
Ми створюємо агентів, які приймають і ініціюють дзвінки, використовують інформацію бізнесу та працюють із вашими системами. Від першого запитання до повного запиту, підтвердження або передання колезі.
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 ms затримки; якісніша альтернатива, `eleven_turbo_v2_5`, коштує приблизно 250 ms. Вибір не сховано в коді, це поле в конфігурації агента.
78 моделей у `LLM_MODELS`, згрупованих за постачальником в інтерфейсі разом із виміряною затримкою та вартістю за хвилину — від `gpt-5-nano` із приблизно 806 ms і близько 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 ms; якщо вам потрібна вища якість і ви приймаєте більшу затримку, `eleven_turbo_v2_5` — близько 250 ms. Голосів 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 мовами. Румунська є мовою за замовчуванням для нових агентів.
Ні, і це добре знати перед плануванням запуску. GitHub workflow у репозиторії націлений на проєкт Supabase Cloud, який було видалено, тож «push на main = публікація» більше не є правдою після міграції на власну інфраструктуру. Реальна публікація відбувається через SSH, з копіюванням і перезапуском. Практичний наслідок: термінова зміна потребує людини, а не лише commit.
Передача людині є частиною сценарію, а не винятком. Кожен агент має прописані межі й налаштований шлях переведення в телефонію; а в розмові є ворота та критерії оцінки успіху, саме щоб випадок поза роллю був зупинений, а не імпровізований.
Ілюстративний приклад
Сценарій використання, без даних клієнта чи приписаних комерційних результатів.
Хтось телефонує на номер бізнесу о 23:40, поза графіком роботи рецепції.
Asterisk застосовує нічне правило графіка (наприклад 22:00 → 06:00) і зіставляє за пріоритетом: заголовок SIP Diversion, потім номер Kallina, потім запасне правило. Нічний агент відповідає через вибраного в конфігурації постачальника, уточнює запит і викликає інструменти, якими має право користуватися.
Дзвінок залишається в історії з транскриптом, аудіозаписом, тривалістю та вартістю, розбитою за постачальником. Те, що виходить за межі ролі агента, зупиняється і передається далі, а не імпровізується.
Що необхідно:Номер, підключений на SIP trunk нашого Asterisk, вихідні дзвінки дозволені оператором за потреби та зворотний дзвінок, а також агент із prompt, схваленою базою знань і письмовими обмеженнями.
Можливості співпраці
Голосова підтримка на основі затвердженої інформації, з передачею оператору та чіткими правилами щодо запису й зберігання розмов.
Ми визначаємо пілот навколо реального процесу: користувачі, дані, інтеграції, витрати та критерії приймання. Розширення відбувається після оцінки результату.
Визначаємо вимоги до доступності, хостингу, захисту даних та інтероперабельності. Будь-яке з’єднання з послугами AGE або STISC потребує валідації придатності, доступу та схвалень.
Це сценарії адаптації, а не заяви про наявні контракти чи партнерства. Запропоновані функції підтверджуються в межах робочої сфери проєкту.
Обговорити пілотАсистент, підключений до інформації вашого бізнесу, у тих каналах, де вам пишуть клієнти.
ПлатформаGrai — наш дослідницький напрям у синтезі мовлення і моделях, пристосованих до мов, якими тут говорять.
Дослідження & розробкаMegaforms досліджує збір відповідей через діалогові форми, включно з голосовими відповідями і транскрибуванням.
Розробка та демонстраціїРозкажіть про свій процес. Разом визначимо, що варто збудувати, що можна підключити і як перевіримо результат.