Хабрахабр

ВелоSIPеды и разговор облачных телефоний друг с другом

Если телеком-оператор связи себя уважает, то он поддерживает SIP и точка. Процесс «абонент А звонит абоненту Б» проще реализовать, если телефония/asterisk/freeswitch взаимодействуют единообразно, по стандарту. Для полноты картины вспомним и про «железные» телефоны, которые – сюрприз – еще не канули в Лету, потому что их использует энтерпрайз. Однако работа с этим протоколом – не самое простое, что есть в телефонии. Сегодня я расскажу, как в нашей платформе реализован SIP и какие нюансы ждут разработчиков; даже если вы не телеком-разработчик, под катом вы узнаете, как взаимодействуют платформы вроде сотовых операторов или нашего Voximplant.

Подключение к Voximplant

Капитан Очевидность напоминает, что протокол SIP – это про сигнализацию, а не про передачу голоса/данных, поэтому первое, что делает SIP-устройство (далее – абонентское устройство) – подключается к серверу и говорит свое «имя»: alice@server.com. В случае Voximplant, имя подключенного устройства будет иметь вид:

alice@application-name.account-name.voximplant.com

Важный момент: облачная телефония воспринимает каждое подключенное устройство как «SIP-телефон».

Типовой звонок с абонентского устройства Voximplant:: Подключенное устройство может звонить на сотовые телефоны, Web/Mobile SDK и другие подключенные SIP (используя их имена, например: sip:bob@application-name.account-name.voximplant.com).

  • звонок поступает в облако. Не сразу второму абоненту, а в облако, Карл!
  • в облаке этот звонок обрабатывает JS-сценарий, который направит звонок на второе устройство и свяжет абонентов друг с другом.

Если звонить на другое устройство/клиент, также подключенный к Voximplant, то в сценарии достаточно использовать метод callUser.

Для этого две телефонии – Voximplant и «Гигафон» – должны «подружиться»… А если звонить на SIP-телефон, подключенный к другому оператору, условному «Гигафону»?

Мир, дружба, SIP

«Дружба» между телефониями обычно заключается в том, что серверы Voximplant и «Гигафон» прокидывают между собой сигнализацию по SIP, чтобы в итоге абонентские устройства узнавали друг о друге. Такие серверы называются SIP Proxy (прокси). Когда связь налажена и звонок считается установленным, абонентские устройства начинают обмениваться данными (голос и/или видеопоток) по RTP. Но сперва прокси Voximplant должен разрешить прокси «Гигафона» делать сигнализацию.

Главный способ: trunk

– У меня есть армия..!
– А у нас есть trunk.
© Неназванный фантастический фильм

Trunk – это возможность для других операторов звонить на абонентские устройства Voximplant. Чтобы Voximplant дал доступ к своим устройствам, trunk использует whitelist IP-адресов.

После добавления IP (или подсети) «Гигафона» в whitelist, его SIP-устройства смогут достучаться до наших без процедуры регистрации. Здорово и удобно, но что насчет обратного trunk? Могут ли другие операторы делать trunk на Voximplant, то есть вносить нас в белый список?

В ответ придет JSON с именами и IP актуальных медиасерверов, которые «Гигафон» пропишет у себя. Если оператор умеет в trunk, то он может узнать наши явки-пароли-адреса, сделав запрос api.voximplant.com/getMediaResources?with_mediaservers&with_sbcs.

Но если оператор «Гигафон» не умеет делать trunk на других операторов, то есть вспомогательная функциональность:

SIP-регистрация

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

SIP – всему голова

Есть мнение, что SIP – плохо стандартизированная область телекоммуникаций, этому вопросу посвящены отдельные статьи на Хабре и не утихают холивары.

Желаем успехов в обуздании SIP-настроек; если возникнут вопросы – комменты открыты. Но все же SIP давно стал привычным и (при правильном подходе) удобным «клеем» для телеком-операторов, поэтому trunk – распространенная функциональность, благодаря которой связаны лоскуты на полотне телекоммуникаций.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть