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

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

Меня зовут Mykhailo Kapustin, я — технический директор (CTO) и сооснователь трансатлантического холдинга Advanced Scientific Research Projects. Мы проводим прикладные исследования в области искусственного интеллекта, нейроинтерфейсов (BCI) и когнитивных технологий, включая анализ сновидений и моделирование человеческого восприятия.
Сегодня мы приближаемся к эпохе нейроинтерфейсов (BCI), где общение может происходить напрямую — от сознания к сознанию.
Я допускаю, что в будущем появятся системы цифровой телепатии, передающие мысли напрямую в память собеседника, — либо человек сам эволюционирует к этой способности.
Но суть связи не изменится: она по-прежнему будет строиться на передаче смыслов и маршрутизации сигналов между умами.
Телефония уже сегодня выполняет эту роль — только вместо нейронных импульсов в ней работают голос, протоколы и код.

Прежде чем перейти к практической части и показать, как построить голосового агента на AI, разберёмся, из чего состоит телефония — что такое PSTN, SIP, SIP-транки и почему 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. Ниже представлена схема, показывающая, как эти компоненты соединяются между собой на уровне протоколов и потоков данных:

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


И всё же принципы остались теми же — только теперь вместо аналоговых цепей мы управляем потоками данных. Jambonz позволяет описывать эти процессы не на уровне схем, а с помощью декларативных команд, называемых verbs. Именно они задают поведение голосового вызова: когда ответить, что сказать и как подключить AI к разговору.
Ключевые команды (verbs) в Jambonz
Каждый verb описывает конкретное действие: ответить на вызов, воспроизвести речь, распознать голос, соединить участников или завершить разговор. Комбинируя verbs в JSON-сценарий, разработчик формирует поведение вызова от начала до конца.
Категория |
Примеры verbs |
Назначение |
Управление вызовом |
|
Приём, завершение или перенаправление вызова. |
Работа с речью и аудио |
|
Синтез речи, проигрывание звука, сбор и распознавание речи. |
Интеграция с AI и NLP |
|
Подключение внешних AI-моделей и диалоговых платформ. |
Управление соединениями |
|
Соединение участников, организация конференций и очередей. |
Работа с SIP |
|
Управление низкоуровневыми SIP-сессиями. |
Сервисные команды |
|
Добавление меток, настройка параметров, уведомления. |
Такой набор команд позволяет описывать голосовую логику полностью декларативно — от простого 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)

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