
Как работает звонок в программируемой телефонии: inbound, outbound, Leg A и Leg B
kapustinomm 1 минуту назад Как работает звонок в программируемой телефонии: inbound, outbound, Leg A и Leg B 8 мин 3 Системы связи * Туториал В этой статье речь пойдет об анатомии отдельного вызова. Что происходит,...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Значимый прорыв формирует отрасль ИИ: kapustinomm 1 минуту назад Как работает звонок в программируемой телефонии: inbound, outbound, Leg A и Leg B 8 мин 3 Системы связи * Туториал В этой статье речь пойдет об анатомии отдельного вызова. Что происходит, когда вызов поступает в систему, как система перенаправляет вызов, почему появляются сегменты A и B, как они соединяются и какие данные необходимо сохранить в бэкенде. Как работает звонок в программируемой телефонии: inbound, outbound, Leg A и Leg BЯ использую Jambonz как конкретный пример CPaaS/SIP application layer.
В отдельной статье о Jambonz и Voice AI я разбирал более широкий путь: PSTN/SIP trunk -> Jambonz -> backend -> AI/LLM. Здесь фокус уже другой: как backend моделирует один production-звонок. Коротко о терминах: SIP (Session Initiation Protocol) - это signaling protocol, который помогает telephony layer установить, изменить и завершить звонок: кто кому звонит, куда направить call, когда сторона ответила или завершила сеанс.
Технические детали
CPaaS (Communications Platform as a Service) - это слой, который превращает телефонию в API: принимает inbound calls, вызывает backend webhooks и выполняет команды вроде say, gather, dial и hangup. Jambonz - пример такой voice platform. Представим внутреннюю телефонию продуктаНа публичный номер приходит входящий звонок - inbound call.
Backend получает его через telephony layer и может выполнить несколько действий до соединения с человеком: проиграть IVR, попросить нажать цифру, послушать короткую фразу, проанализировать ее с помощью AI или просто выбрать маршрут по номеру и настройкам продукта. После этого backend инициирует второй звонок - outbound call: например оператору, PBX, SIP endpoint или внешнему номеру. Когда вторая сторона отвечает, telephony layer соединяет inbound и outbound стороны в один разговор.
На уровне продукта мы хотим вести учет таких звонков: что сейчас активно, кто звонит, куда мы перенаправляем звонок, был ли ответ, сколько длился разговор и почему он завершился. Важный момент: для пользователя это один разговор, а для backend - минимум два звонка. Первый входит в нашу систему.
Отраслевые последствия
Второй создается нашей системой, когда мы звоним дальше выбранному destination. Поэтому сначала нужно разделить inbound call и outbound call, а уже потом говорить про Leg A, Leg B, bridge и модель состояния. Inbound callInbound call - это звонок, который входит в вашу систему:caller -> public phone number -> SIP trunk / carrier -> Jambonz / CPaaS -> backendДля caller это просто звонок на номер компании.
Для backend это момент, когда нужно создать локальную запись о звонке: Jambonz отправляет webhook на наш backend о том, что сейчас инициируется звонок, backend создает новую запись, например в таблице active_calls, и присваивает ей уникальный activeCallId внутри нашей системы. На этом этапе backend еще не обязан знать, кто ответит. Он знает только caller, dialed number, выбранный phone config и следующие действия для provider.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.




