В предыдущей хабрастатье я показал, что если сервис умеет интегрироваться по SIP и RTP, то с ним можно делать много интересных штук. Например, приглашать в видеоконференции Zoom участников с мобильных телефонов. Но наше облако Voximplant — это не только телеком и телефоны. Еще мы любим и умеем SDK, чтобы звонить и принимать звонки из неожиданных мест: с веб страниц, из приложений (звонки через интернет намного дешевле, чем через голосовой канал) и даже из VR/AR Unity решений. В этой статье я покажу, как с помощью нескольких строк фронтенд JavaScript создавать «звонящие» страницы, с помощью которых участники смогут делать видеозвонок в конференцию. И да, благодаря последнему обновлению от Apple звонить теперь можно и с веб страниц на iPhone!
Настройка Zoom
Все то же самое, что в предыдущей хабрастатье.
Настройка Voximplant
В предыдущей статье я подробно рассказал про создание нового приложения и организацию конференций, чтобы голос всех участников с телефонов микшировался на стороне облака Voximplant и затем коммуницировался с Zoom по одному SIP каналу. В этой статье я покажу другу схему работы, когда каждый пользователь, звонящий с веб страницы через видео звонок, будет подключаться напрямую к конференции Zoom. Соответствующий сценарий Voximplant (один, потому что два нужные были только для организации конференции со стороны Voximplant) выглядит вот так:
Этот сценарий получает входящий видео-звонок от WebSDK, патчит SDP (потому что все сервисы «понимают» SDP немного по-разному), совершает исходящий звонок в Zoom и соединяет видео и голосовые потоки входящего и исходящего звонков.
Фронтенд часть
Несколько строк JavaScript позволяет сделать вот такую страницу, на которой любой желающий может ввести идентификатор конференции Zoom и, если для конференции подключая интеграция через SIP, то видеозвонок будет осуществлен прямо с веб страницы!
Разделение звонка в облаке на две части, «входящий» и «исходящий», пошло еще со времен Asterisk, который мы не используем. Для разработчика удобно оперировать двумя независимыми частями (они называются «ногами» звонка, «call legs»). Например, для голосовых звонков, в случае потери связи можно синтезировать что-нибудь вроде «подождите, восстанавливаю соединение», позвонить повторно из той же JavaScript сессии и снова соединить звонки. Или по команде от оператора переключить входящий звонок куда-нибудь еще. В нашем примере можно «вставить» между входящей и исходящей ногой звонка запись видео, если заменить вызов easyProcess на:
А с помощью параметра transcribe можно превратить голос в текст! Если у вас есть оплаченный Zoom с SIP коннектором, то вы можете воспользоваться тестовой страницей, которую я сделал для этой статьи: demos02.voximplant.com/zoom
Вопросы в комментах традиционно приветствуются. Про телефонию мы знаем много и готовы рассказывать.