Как подключить WebRTC к Zoom и звонить в 2 раза дешевле


    Сервис Zoom штурмом взял индустрию видеоконференций — просто потому, что ребята смогли предложить хорошее качество видео и «всегда работает». У конкурентов и первое, и второе как-то не клеилось. Кто пробовал сделать в Skype или аналоге видеоконференцию на пять и более человек, меня поймет. Авторы сервиса адекватно оценивают его популярность и «премиум» возможности предлагают недешево: возможность подключать к конференциям участников с обычными телефонами стоит от 100 долларов в месяц. Зато SIP-подключение стоит в два раза дешевле. И под катом я хочу показать, как подключать к подобным сервисам Voximplant, чтобы в несколько строк JavaScript-кода получать недорогие звонки по всему миру и нашу голосовую автоматику.

    Настройка Zoom


    Всё, что нужно сделать со стороны Zoom, это купить интеграцию с SIP, которая называется H.323/SIP Room Connector и покупается по этой ссылке. Нам понадобится всего один порт, так как вся «телефонная магия» будет осуществляться с помощью JavaScript на стороне Voximplant.

    Настройка Voximplant


    Идея заключается в создании веб-интерфейса, который через HTTP API будет инструктировать облако Voximplant подключиться к нужной конференции Zoom. А затем облако сможет подключить к этой конференции участников с телефонов: как позвонив само, так и предоставив номер для звонка. Чтобы сделать решение еще дешевле, мы будем использовать номера в «песочнице» Готэм Сити, которые почти как настоящие, но работают через добавочные.

    Зарегистрироваться разработчиком Voximplant можно здесь, после чего в вашем полном распоряжении оказывается панель управления manage.voximplant.com, в которой и будут осуществляться дальнейшие шаги по настройке.

    С помощью раздела «Приложения» в левом меню создайте новое и назовите его zoomconnector. Затем в разделе «Сценарии» внутри приложения создайте ZoomBridge и ZoomCall-In вот с таким исходным кодом:

    Немного кода под спойлером


    Чтобы участники конференции могли позвонить в Готэм, перейдите в раздел «Номера» и нажмите «Купить телефонный номер».


    На новом экране поставьте переключатель в позицию «Тестовые номера» – это позволит арендовать номер в несуществующем городе:


    Для этого примера мы будем использовать 699100981 в Готэм-сити. Это добавочный номер. Чтобы позвонить по нему, нужно вначале позвонить по единому номеру доступа виртуальных номеров (указаны в разделе «Мои номера») и после голосового приветствия набрать этот номер. Затем нужно привязать его к вашему приложению. Это можно сделать через «Номера»—>«Доступные» внутри приложения.

    И последнее — необходимо указать, какие JavaScript-сценарии в каких ситуациях нужно выполнять. Для этого перейдите в ваше приложение zoomconnector, далее — в раздел «Роутинг». Здесь нужно создать два правила. Первое будет выполнять сценарий ZoomCall-In по входящему звонку на виртуальный номер, а второе выполнять сценарий ZoomBridge для организации конференции и взаимодействия с Zoom. Обратите внимание, что порядок правил имеет значение. Более специфичные (для одного номера) нужно располагать выше, чем менее специфичные (для всех звонков).


    и еще несколько скриншотов под спойлером



    Можно звонить!


    Запускаем приложение Zoom и открываем Zoom Meeting:


    У запущенного Meeting есть Meeting ID, который используется при подключении. Скопированные выше демонстрационные JavaScript-сценарии позволяют подключиться к Zoom двумя способами:

    1. Пользователь звонит на номер доступа в Готэм Сити, набирает добавочный и попадает в сценарий ZoomCall-In, который уже синтезирует «введите номер Meeting». Пользователь вводит номер так же, как вводил добавочный. После чего сценарий делает внутренний звонок на сценарий конференции ZoomBridge, который при первом входящем звонке соединяется с Zoom и затем начинает микшировать голоса участников «с телефона» и передавать все это в Zoom и обратно. Этот же сценарий отвечает за то, чтобы облако Voximplant само позвонило на указанный номер и добавило звонок к конференции. Таким образом можно добавить к конференции до 100 (!!!) участников с телефонов.
    2. Облако Voximplant может создать конференцию и без входящего звонка. Для этого нужно сделать HTTP-запрос startconference, передав в качестве параметра номер Meeting в Zoom и информацию о приложении. Получившаяся JavaScript-сессия со сценарием ZoomBridge установит подключение к Zoom и будет ждать входящих звонков или команды на исходящий звонок.


    Добавление участников обратным звонком


    Обратите внимание на этот фрагмент кода в сценарии ZoomBridge:


    После того как облако Voximplant запустило JavaScript-сессию по входящему звонку или по команде от HTTP API, вы можете взаимодействовать с этой сессией, делая HTTP-запросы к специальному access url (сама сессия, кстати, тоже может общаться с окружающим миром, делая HTTP-запросы). В нашем примере мы используем эту возможность чтобы проинструктировать JavaScript-сессию конференции позвонить по указанному номеру и добавить его к общению с Zoom Meeting:


    «Access URL» для общения с сессией мы получаем либо запустив сессию через HTTP API (способ номер 2 выше), либо подписавшись на событие Started сессии и передав его себе HTTP-вызовом из сессии на свой backend. В нашем примере команда на запуск обратного звонка будет выглядеть как-то вот так:

    Voximplant
    Облачная платформа голосовой и видеотелефонии

    Comments 11

      +1
      Спасибо.
      С Cisco Meeting Server не планируете что-то похожее реализовать?
      Там тоже есть открытый API на XML.
        0
        Голос и видео дружат по SIP и RTP. Cisco Meeting Server так умеет?
          0

          А чего бы ему не уметь?

            0
            Конечно.
            +1
            Реализовать может каждый желающий — Voximplant платформа для разработчиков
            0
            Кстати, а вы G.722 везде поддерживаете?
              +1
              Не поддерживаем
                0
                Эмм, а почему?
                  0
                  Потому что есть OPUS :)
                    0
                    Только его стационарные SIP телефоны не поддерживают…
              0
              Вот бы такую конференцию, чтоб:

              — Оперсорс
              — Сип из коробки
              — Десятки участников, 1000+ пассивных
              — Вещание на ютуб или фейсбук в реальном времени
              — Не под санкциями.

              Упс, а она уже есть...

              Only users with full accounts can post comments. Log in, please.