От экспериментов Попова с радиосвязью до AI-звонков — как телефония стала основой умных коммуникаций

Voice AI-системы на базе Jambonz: от телефонии к диалогу человека и машины
Voice AI-системы на базе Jambonz: от телефонии к диалогу человека и машины

Телефония уже давно перестала быть просто голосовой связью. Сегодня она стала цифровой инфраструктурой, где звонки можно анализировать, управлять ими программно и подключать искусственный интеллект. Это превращает обычный разговор в диалог между человеком и системой — живой, персонализированный и управляемый данными.

Я окончил Одесскую национальную академию связи имени А. С. Попова, где изучал физику сигнала, частоты и принципы коммутации. Тогда казалось, что это чистая инженерия — расчёты, схемы и лабораторные приборы. Но сегодня те же принципы лежат в основе Voice AI-систем, где голос превращается в поток данных, а логика коммуникации — в код.

На фото: здание Одесской национальной академии связи
На фото: здание Одесской национальной академии связи

Меня зовут Mykhailo Kapustin, я — технический директор (CTO) и сооснователь трансатлантического холдинга Advanced Scientific Research Projects. Мы проводим прикладные исследования в области искусственного интеллекта, нейроинтерфейсов (BCI) и когнитивных технологий, включая анализ сновидений и моделирование человеческого восприятия.

Сегодня мы приближаемся к эпохе нейроинтерфейсов (BCI), где общение может происходить напрямую — от сознания к сознанию.
Я допускаю, что в будущем появятся системы цифровой телепатии, передающие мысли напрямую в память собеседника, — либо человек сам эволюционирует к этой способности.

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

Александр Степанович Попов — изобретатель радио и один из основоположников современной связи. На фоне — схема и первый радиоприёмник, продемонстрированный 7 мая 1895 года.
Александр Степанович Попов — изобретатель радио и один из основоположников современной связи. На фоне — схема и первый радиоприёмник, продемонстрированный 7 мая 1895 года.

Прежде чем перейти к практической части и показать, как построить голосового агента на AI, разберёмся, из чего состоит телефония — что такое PSTNSIPSIP-транки и почему Jambonz стал ключевым связующим звеном между классической связью и искусственным интеллектом.

Caller (PSTN / SIP): откуда начинается голос

Любой голосовой вызов начинается с caller — стороны, которая инициирует звонок. Это может быть мобильный телефонстационарная линия или VoIP-клиент — программное приложение, которое передаёт голос через интернет (например, Zoom, Microsoft Teams, Telegram или специальный корпоративный софт).

Далее всё зависит от того, по какой сети проходит сигнал:

  • PSTN (Public Switched Telephone Network) — классическая телефонная сеть, через которую проходят обычные звонки. Она обеспечивает стабильное соединение, но не подходит для прямой интеграции с цифровыми системами.

  • SIP (Session Initiation Protocol) — протокол, который переводит голос в цифровой формат и позволяет передавать его через интернет (Voice over IP). Он управляет установлением, маршрутизацией и завершением вызовов.

Чтобы соединить эти два мира — аналоговый (PSTN) и цифровой (SIP) — используется SIP-транк. Это виртуальный канал, через который звонки из телефонной сети поступают в интернет-систему, например, в Jambonz. SIP-транк выполняет роль интерфейса между оператором связи и вашим приложением: принимает вызов, переводит его в SIP-сессию, после чего управление переходит к Jambonz, где логика обработки уже задаётся программно.

Этап

Что происходит

Технология / Протокол

Результат

1. Caller

Пользователь инициирует звонок с телефона или VoIP-клиента.

PSTN или SIP

Голосовой сигнал отправляется в сеть.

2. SIP-транк

Звонок поступает через виртуальный канал от оператора в цифровую среду.

SIP

Конвертация вызова в SIP-сессию.

3. Jambonz

Принимает вызов, создаёт сессию и отправляет webhook вашему приложению.

SIP / HTTP

Событие вызова передано backend-сервису.

4. Ваш backend

Обрабатывает событие и возвращает JSON с инструкциями (verbs).

HTTP / WebSocket

Определяется логика разговора.

5. Jambonz (execution)

Выполняет verbs — синтез речи, сбор аудио, маршрутизация.

STT / TTS / RTP

Пользователь слышит ответ AI.

Эта последовательность отражает весь путь голосового вызова — от инициатора звонка до обработки и ответа со стороны AI. Ниже представлена схема, показывающая, как эти компоненты соединяются между собой на уровне протоколов и потоков данных:

Рисунок 1. Поток голосового вызова от абонента до AI-ответа через SIP, Jambonz и backend-систему.
Рисунок 1. Поток голосового вызова от абонента до AI-ответа через SIP, Jambonz и backend-систему.

Что такое Jambonz и зачем он нужен

После того как звонок проходит через PSTN, SIP и SIP-транк, управление переходит к Jambonz — платформе, которая делает телефонные вызовы программно управляемыми.
Jambonz используется для создания Voice AI-приложений, где звонки обрабатываются на уровне кода: принимаются, маршрутизируются, преобразуются в текст, озвучиваются через TTS и взаимодействуют с внешними AI-моделями.

Платформа открытая и гибкая: она поддерживает любые SIP-транки, STT/TTS-сервисы и LLM-провайдеров, позволяя строить собственные голосовые пайплайны.
Взаимодействие между Jambonz и приложением происходит через вебхуки или WebSocket-соединения. Система отправляет события вызова, а приложение отвечает JSON-инструкциями — последовательностью команд, которые определяют логику разговора.

Когда я впервые начал изучать телефонию, многое напоминало работу с аналоговыми измерительными приборами.В лабораториях мы фиксировали сигналы с помощью милливольтметров, анализировали искажённые формы волн и чертили схемы коммутации на ватманах.Тогда не существовало облачных API, но принципы были теми же: измерить, передать, обработать, интерпретировать.Сегодня те же задачи решаются в цифровом виде — только вместо кабелей и осциллографов работают SIP-потоки, вебхуки и LLM-модели.

Фото: лабораторный милливольтметр В3-38А, Одесская академия связи
Фото: лабораторный милливольтметр В3-38А, Одесская академия связи
Фото: чертежи принципиальных схем — традиционная практика инженерного анализа сигналов
Фото: чертежи принципиальных схем — традиционная практика инженерного анализа сигналов

И всё же принципы остались теми же — только теперь вместо аналоговых цепей мы управляем потоками данных. Jambonz позволяет описывать эти процессы не на уровне схем, а с помощью декларативных команд, называемых verbs. Именно они задают поведение голосового вызова: когда ответить, что сказать и как подключить AI к разговору.

Ключевые команды (verbs) в Jambonz

Каждый verb описывает конкретное действие: ответить на вызов, воспроизвести речь, распознать голос, соединить участников или завершить разговор. Комбинируя verbs в JSON-сценарий, разработчик формирует поведение вызова от начала до конца.

Категория

Примеры verbs

Назначение

Управление вызовом

answerhangupredirectpause

Приём, завершение или перенаправление вызова.

Работа с речью и аудио

sayplaygatherlistentranscribesynthesizer

Синтез речи, проигрывание звука, сбор и распознавание речи.

Интеграция с AI и NLP

LLMDialogflowRasa

Подключение внешних AI-моделей и диалоговых платформ.

Управление соединениями

dialconferenceenqueuedequeueleave

Соединение участников, организация конференций и очередей.

Работа с SIP

sip-declinesip-refersip-request

Управление низкоуровневыми SIP-сессиями.

Сервисные команды

tagconfigalert

Добавление меток, настройка параметров, уведомления.

Такой набор команд позволяет описывать голосовую логику полностью декларативно — от простого IVR до сложных AI-диалогов.

Создание приложения с AI и телефонией

Теперь, когда мы разобрались, как устроена архитектура телефонии и какую роль в ней играет Jambonz, можно перейти к самому интересному — практической интеграции AI в голосовой вызов. Ниже описан базовый сценарий, на котором строятся большинство Voice AI-приложений.

1. Входящий вызов и обработка события

Когда пользователь совершает звонок, Jambonz принимает его через SIP и вызывает ваш backend, отправляя webhook с информацией о вызове: номер, время, идентификатор сессии (call_sid) и направление вызова. Backend отвечает JSON-сценарием, где указывает, что нужно сделать дальше. Простейший пример — поприветствовать пользователя и начать слушать речь:

app.post('/webhooks/call', (req, res) => {
  res.json([
    { verb: 'say', text: 'Здравствуйте. Опишите ваш сон.' },
    { verb: 'gather', input: ['speech'], actionHook: '/webhooks/gather' }
  ]);
});
  • say — синтезирует речь через TTS;

  • gather — включает распознавание речи (STT) и ждёт ответ пользователя.

2. Обработка речи и подключение AI

Когда пользователь говорит, Jambonz передаёт распознанный текст в ваш backend через actionHook. Далее можно использовать любую LLM-модель (например, GPT или Gemini), чтобы сгенерировать ответ:

app.post('/webhooks/gather', async (req, res) => {
  const userInput = req.body.speech.transcript;
  const reply = await ai.generate(userInput); // Вызов LLM API
  res.json([
    { verb: 'say', text: reply },
    { verb: 'gather', input: ['speech'], actionHook: '/webhooks/gather' }
  ]);
});

Таким образом создаётся диалоговый цикл, где Jambonz отвечает голосом, а AI управляет содержанием разговора.

3. Завершение вызова

Когда разговор окончен, приложение может вернуть финальные команды:

res.json([
  { verb: 'say', text: 'Спасибо за разговор. До свидания.' },
  { verb: 'hangup' }
]);

4. Компоненты и протоколы

  • SIP / RTP — передают сигнал и аудио;

  • HTTP / WebSocket — обеспечивают обмен между Jambonz и приложением;

  • STT / TTS — преобразуют речь в текст и обратно;

  • LLM API — отвечает за смысловую часть диалога.

Благодаря такой архитектуре, всё поведение звонка можно описывать кодом, а логику общения — адаптировать под конкретные задачи: консультации, поддержка клиентов, интервью, исследовательские сессии.

Вывод

Сегодня мы управляем звонками так же, как когда-то инженеры управляли радиосигналами — только теперь схема находится в JSON-файле, а вместо антенны работает LLM-модель.

В этом есть что-то символичное: каждая технология связи — от радио до нейроинтерфейсов — решает одну и ту же задачу — услышать и быть понятым.
Jambonz показывает, как старые принципы можно перевести в новый контекст, где голос становится кодом, а код — частью живого разговора.

Комментарии (2)


  1. temadiary
    21.10.2025 17:11

    т.е. HTTP / WebSocket - это прослойка только ваше, получается. а уже телефония, asr\tts, llm - продукты третьих лиц.
    кстати зачем вам llm, когда можно облегчить и для начала просто классифицировать?


  1. temadiary
    21.10.2025 17:11

    и кажется моветон использовать хабр для повышения индексации своих курсов.
    ну чисто по человечески