VoxImplant — облачная платформа для разработчиков коммуникационных сервисов и приложений

    Доброго времени суток, %USERNAME%! Мы хотим поделится со всем сообществом разработчиков отличной новостью — мы (в лице компании Zingaya) запустили облачную платформу для разработчиков коммуникационных сервисов и приложений, благодаря которой вы теперь можете легко добавить поддержку аудио и видео коммуникаций, а также телефонии в свое веб или мобильное приложение. Итак, встречайте VoxImplant



    VoxImplant обладает рядом уникальных особенностей, которые вы не встретите в других коммуникационных платформах. Мы подробнее расскажем о них и о том какие возможности вам предоставляет платформа под катом.


    Начать стоит с более подробного описания, что же это все-таки такое и зачем оно нужно. VoxImplant — это облачная платформа, которая предлагает ряд API, с которыми непосредственно взаимодействует разработчик: Web SDK, Mobile SDK, VoxEngine и HTTP API. Все SDK и HTTP API позволяют взаимодействовать с платформой удаленно, а VoxEngine позволяет запускать в облаке приложения, которые описывают логику обработки звонков, проходящих через VoxImplant Cloud, на Javascript. В дополнение на платформе может быть зарегистрирован любой SIP-клиент, а также можно совершать и принимать звонки через SIP. Например, если у вас уже есть номер телефона с переадресацией на SIP, то вы можете легко направить звонок на VoxImplant и обработать его в соответствии с логикой вашего приложения, а потом прокинуть на какой-нибудь SIP-клиент, подключенный к вашему приложению. Таким образом можно быстро написать функционал простой IP PBX и подстроить логику обработки звонков под свои требования или интегрировать все это с какими-то вашими веб-сервисами, например, CRM.



    VoxImplant Web SDK


    VoxImplant Web SDK представляет собой Javascript библиотеку с рядом функций по взаимодействию с облаком VoxImplant, а точнее с вашими приложениями, которые вы там развернули. В зависимости от возможностей браузера Web SDK может работать в WebRTC-режиме, или же использовать Flash. Существует возможность жестко задать режим работы, но если ваш браузер не поддерживает его, что особенно актуально для WebRTC (который пока доступен только в Chrome и Firefox + в Yandex-браузере, но там он глючит пока еще), то SDK выкинет exception и работать не будет, поэтому мы рекомендуем дать SDK возможность самому определять технологию, которая будет использоваться, чтобы избежать лишних проблем, за исключением случаев когда вы хотите заставить пользователя работать с вашим приложением в конкретном браузере или какая-то функция доступна только в определенном режиме работы SDK (например, пока видео-звонки работают только во Flash-режиме). Подробное описание функций и возможностей Web SDK доступно по адресу http://voximplant.com/docs/references/websdk/.

    VoxImplant Mobile SDK


    То же самое, что и Web SDK, только в виде нативных библиотек для iOS/Android. На текущий момент библиотеки доводятся до ума, а также пишется документация, поэтому они станут доступны чуть позже.

    VoxEngine


    Одна из самых интересных частей платформы — VoxEngine (cloud application engine), который выполняет сценарии, написанные на Javascript. По сути, сценарии — это полноценные Javascript-приложения, которые VoxEngine запускает и выполняет, когда звонок проходит через VoxImplant Cloud. Для написания приложений доступны все функции ECMA5 + дополнительные функции, которые дают доступ к возможностям VoxImplant и позволяют взаимодействовать со внешним миром, например, делать HTTP-запросы или отправлять email. Подробно со списком доступных функций можно ознакомиться по ссылке http://voximplant.com/docs/references/appengine/. При создании новой сессии VoxEngine запускает именно те скрипты (Scenarios), которые разработчик описал в правилах (Rules) приложения, то есть в зависимости от типа звонка могут выполнятся совершенно разные скрипты. После завершения сессии (когда в сессии больше нет звонков или разработчик сам вызвал метод уничтожения сессии в скрипте) VoxEngine дает сессии еще какое-то время для освобождения ресурсов (например, для завершения последних нескольких HTTP-запросов), потом сессия уничтожается. Внутри одной сессии может быть сразу несколько разных звонков, которые можно соединять/разъединять друг с другом и делать с ними самые разные вещи, типа проигрывания звукового файла звонящему или записи разговора, но существуют ограничения по количеству звонков, количеству одновременно выполняемых HTTP запросов и использованию других ресурсов платформы на одну сессию. Подробнее об этом можно ознакомиться в документации. Если читатели Хабра сочтут нашу платформу достаточно интересной, то мы займемся циклом туториалов и статей в стиле «How To», чтобы подробнее рассказать что и как можно делать с использованием платформы. Ниже пример самого простого сценария — проброс вызова при звонке с Web SDK на телефон:

    VoxEngine.forwardCallToPSTN();
    


    на самом деле функция forwardCallToPSTN — это хелпер, написанный для упрощения и сокращения кода, если бы этого хелпера не было, то код выглядел бы следующим образом:

    VoxEngine.addEventListener(AppEvents.CallAlerting, function(e) {
      var pstnCall = VoxEngine.callPSTN(e.destination);
      VoxEngine.easyProcess(e.call, pstnCall);
    });
    


    Кстати, для вашего удобства мы встроили в панель управления VoxImplant редактор скриптов на базе CodeMirror с автокомплитом, поэтому необязательно наизусть помнить все названия функций. См. скриншот ниже:



    HTTP API


    VoxImplant HTTP API предоставляет возможность удаленного создания/редактирования/удаления всех сущностей, с которыми работает VoxImplant, таких как приложения (Applications), пользователи (Identitites), скрипты (Scenarios), правила (Rules), а также дает возможность работать с некоторыми функциями биллинга для распределения средств между аккаунтами пользователей. HTTP API очень полезно для интеграции с уже существующими приложениями и сервисами, иначе все пришлось бы делать в панели управления VoxImplant, что не очень удобно (попробуйте, например, создать вручную 1000 пользователей). Описание HTTP API доступно на странице http://voximplant.com/docs/references/httpapi/. Мы называем эту часть HTTP API Provisioning API, существует еще одна часть HTTP API, которая сейчас находится в разработке — Control API, она позволит удаленно создавать сессию и вызывать функции, описанные в сценарии для VoxEngine. Такой тип API необходим в случае, когда не используется клиентское приложение, например, если нужно сделать два звонка с платформы и соединить их между собой — стандартный callback-сценарий.

    VoxImplant Phone Numbers


    Мы будем предлагать телефонные номера, подключенные к платформе, которые можно будет арендовать, чтобы принимать на стороне платформы входящие звонки из обычной телефонной сети. В самое ближайшее время можно будет арендовать номера в США и в России (включая toll free). Если у вас уже есть номер телефона, с переадресацией на SIP, то вы сможете легко настроить его так, чтобы входящие на него звонки шли на VoxImplant для дальнейшей обработки.

    Используя все эти компоненты платформы, можно создавать самые разнообразные сервисы и приложения. Это короткая обзорная статья и основная ее задача — сообщить про запуск платформы и совсем коротко описать возможности. На voximplant.com мы создали специальный раздел сайта, в котором можно почитать о том как начать разрабатывать приложения http://voximplant.com/docs/quickstart/18/getting-started-with-voximplant/. Мы активно работаем над документацией, поэтому если чего-то еще не хватает или описано не самым понятным образом — пишите, будем рады добавить/поправить/улучшить.
    Voximplant 133,50
    Облачная телеком-платформа
    Поделиться публикацией
    Комментарии 36
    • +3
      название платформы божественное
      • 0
        спасибо, мы старались
      • 0
        Если не секрет какой SIP сервер используете?
        • 0
          Не секрет — все свое
          • 0
            Написали на С свой SIP сервер? А почему не взяли готовые?
            • 0
              Ну тут надо сначала разобраться с тем, что вы имеете в виду под SIP-сервером :) для нашего случая готовых не бывает
              • 0
                А не могли бы поподробнее? И почему именно для вашего случая готовых не бывает, например тот же freeswitch позволяет тоже самое! Если брать Asterisk то там есть ajam! Интересно было бы о технической реализации почитать!
                • 0
                  AJAM is a new technology available in Asterisk 1.4 which allows web browsers or other HTTP enabled applications and web pages to directly access the Asterisk Manager Interface (AMI) via HTTP.

                  Ну, судя по описанию, это имеет мало общего с тем, что мы сделали. Облачных платформ, которые умеют прямо совсем то же самое мы не встречали, есть похожие, например, Twilio, Plivo, Tropo, но они все предлагают REST API для взаимодействия с платформой, мы же предлагаем писать приложения на JS, которые работают прямо в облаке.
                  • 0
                    Ну вообще AJAM расшифровывается (Asynchronous Javascript Asterisk Manager) как бы намекая что может полностью работать на серверной стороне через тот же js(nodjs), насколько я знаю в freeswitch через mod_xml_rpc можно сделать аналогично asterisk ajam, правда не в курсе есть ли готовые библиотеки! Возможно я не понимаю какой-то вашей уникальности из описания. Хорошо бы статейку как все устроенно в плане архитектуры итд. Сразу хотелось бы задать вопрос, может ли ваша платформа уведомлять через API о наступление события, клиента из вне, тоесть грубо говоря реализовывать обратную связь!
                    • 0
                      Разница между RPC и выполняемым кодом все-таки есть. К слову, NodeJS мы не использовали из-за некоторых проблем с V8. По поводу последнего вопроса — да, конечно, в зависимости от события это может быть или что-то что вы получите на уровне клиентского SDK или можно просто сделать HTTP-запрос прямо из сценария вовне, чтобы сообщить о чем-то.
                      • 0
                        Разница есть, просто в вашем случаи основная часть использования это выполнения dialplana и заведение новых клиентов, если использовать тот же ajam то это делается один раз, а выполняем уже потом сервер без RPC, через RPC идет только изменения его или отлавливание event'ов и посылка команд! Все же реквестирую статью и структуре и текущих нагрузках!
                        • 0
                          Для заведения новых клиентов используется HTTP API, которое имеет мало отношения к app engine :) Вы попробуйте воспользоваться VoxImplant и написать какое-нибудь приложение, а потом сравните с AJAM и т.д. может быть лишние вопросы сами отпадут.
                    • 0
          • +1
            Ещё раз поздравляю с запуском ) уже немного приложили руку к сервису, это нечто.
            Нам для наших задач нужно уметь подключать сип к браузеру (webrtc) и выводить его в оффлайн, т.е. звонить на сотовые, городские итп. Мы пробовали хром+астериск, но это жуткие танцы с бубном. Каждая сборка хрома, это новые баги в webrtc реализации, под которые выпускают новые патчи для астера, т.к. из коробки он ни с кем работать не умеет. Воксимплант же даёт прозрачную интеграцию браузера со своим сервером телефонии. При этом скрипты воксимпланта намного читабильней, чем конфиги астера.
            • 0
              Ничего не понятно про Mobile SDK.
              Что в нем будет? Включен ли SIP клиент? Входят ли в поставку все голосовые кодеки?

              То есть если я захочу сделать VOIP клиент для айфона, насколько много своего кода мне придется дописывать?
              • 0
                Все кодеки будут включены, равно как и все функции управления сигнализацией.
                И работа со звуком на устройстве тоже.

                То есть уровень взаимодействия будет высокий — подключиться, позвонить, ответить на звонок, и т.д.
                • 0
                  а когда планируется релиз SDK для iOS?
                  • 0
                    Ориентировочно конец октября.
                    • 0
                      а можно ли как-нибудь до официального релиза от вас получить заголовочные файлы от вашего API (чтобы понять, что можно на нем делать, а что нельзя, до официального релиза вами)?

                      Ну или вообще стать бета-тестером ios sdk?
                      • 0
                        Функционал мобильного SDK будет максимально близок к функционалу Web SDK, поэтому можно пока ознакомиться с Web SDK и как только iOS SDK будет на подходе мы сообщим.
              • +1
                Опишите пожалуйста Бизнес-Кейсы, как можно использовать вашу систему.
                А то для людей, далеких от программирования, будет мало что понятно из топика.
                • +2
                  Часть кейсов (на англ) написана на сайте — voximplant.com/in-action/. Основное назначение платформы — возможность встроить телефонию куда угодно (на сайт, в веб-сервис, мобильное приложение). Получается а-ля Amazon Cloud, но для телефонии.

                  Можно реализовать сервис от простого звонка с сайта до облачного колл-центра. Как интересный кейс могу выделить интеграцию телефонии в CRM — получается звонок по клику из CRM, все звонки записываются, логируются, привязываются к конкретному менеджеру. При этом не требуется дополнительного оборудования, да и масштабируется все очень легко. А платформа упрощает и ускоряет саму интеграцию.
                • 0
                  А как Вы планируете предоставлять российские DID? Уже с кем-то из операторов есть соглашения?
                  • 0
                    Да, планируем к концу октября. Можно также и сторонние номера по SIP подключать.
                  • 0
                    Можно ли реализовать следующий сценарий:

                    1) пользователь вводит свой номер телефона и кликает по кнопке на сайте;
                    2) осуществляется звонок менеджеру сайта;
                    3) после соединения с менеджером производится звонок пользователю, оставившему номер телефона;
                    4) соединяются менеджер и пользователь.
                  • 0
                    судя по странице Pricing, звонки с SIP на SIP будут платные (0.4 цента в минуту). Это действительно так?
                  • 0
                    поддерживает ли ваш ios sdk работу приложения в фоне?

                    То есть я встраиваю ваш сдк в свое приложение, юзер его пускает, потом перключается в какое-либо другое приложение, работает в нем, а в это время мне звонят. Если у вас все сделано в SDK корректно (и мое приложение имеет voip в UIBackgroundModes в info.plist) то iOS должна показать на экране что мне кто-то звонит, как это происходит со скайпом.

                    Так что вопрос — у вас это все поддерживается? Чтобы это работало требуется TCP сокеты особым способом конфигурирровать — делает ли это ваш iOS SDK?
                    • 0
                      В первой версии SDK такой режим не поддерживается, но мы работаем над его поддержкой и в ближайшем апдейте SDK он появится
                      • 0
                        Блин, это ж пара экранов кода всего дополнительно требуется!

                        А как узнать, когда выйдет новая версия? У вас есть какой-нибудь список рассылки или другой канал оповещения об апдейтах мобильного sdk?
                        • 0
                          Есть блог, есть Twitter, есть Хабр — выбирайте :)
                          • 0
                            когда ожидать апдейта ios sdk с поддержкой background operation?
                            В вашем блоге написано «ну вот прям совсем скоро» — можно ли надеяться что это «совсем скоро» произойдет в течение недели?
                            • 0
                              99,9% что появится на следующей неделе
                              • 0
                                Все готово, осталось сделать roll out. Думаю в понедельник уже выложим новую версию SDK.

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое