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

kupkhyzjihvpofe65nwrhh111e0.jpeg


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

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


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

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

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

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

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


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

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

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


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

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


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

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

g8gusfkgg6l9fbhl58w6_gnbsws.png


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

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

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

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


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

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


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

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

© Habrahabr.ru