После создания iOS SDK мы активно взялись за работу над Android-версией, так как современные тренды не позволяют усомниться в необходимости поддержки данной платформы. К тому же уже есть компании, интегрировавшие функционал звонков в свои мобильные приложения для iOS, и они активно намекали, что пора бы и для Android им выдать инструменты. В результате, в семействе SDK, которые могут взаимодействовать с платформой VoxImplant, произошло пополнение. О том какие возможности доступны разработчикам и что с ними можно построить, а также о нашей идее про конкурс для разработчиков VoxImplant можно узнать под катом.
Итак, что нам нужно для того, чтобы создать приложение для Android с функционалом real-time коммуникаций от VoxImplant? Во-первых, фантазия чтобы придумать что и зачем делаем, во-вторых, инструменты для реализации нашей идеи. Для начала скачаем сборку Eclipse под названием ADT с по этой ссылке с сайта developer.android.com (как вариант, теперь еще есть Android Studio на базе IntelliJ IDEA на том же сайте). Затем нам потребуется скачать VoxImplant Android SDK по этой ссылке. В этом архиве на самом деле не просто библиотеки, но и пример приложения, чтобы проще было разобраться. Распаковываем архив и импортируем проект в ADT. Возможно придется поправить некоторые импорты библотек JRE и Android, так как в проекте может быть другая версия указана. Если все сделано правильно, то получаем живой проект, который можно собрать и запустить. В результате на девайсе или эмуляторе получим следующий результат:
Логично, что без аккаунта VoxImplant и какого-нибудь сценария обработки звонка приложение бесполезно, поэтому нам нужно создать аккаунт разработчика VoxImplant (если у вас его еще нет) и, после активации через СМС, зайти в панель управления. Где мы увидим следующую картину:
Теперь нам нужно выполнить следующие действия:
- Зайти в раздел Applications/Приложения и создать приложение, назовем его testapplication
- В разделе Users создать юзера и прицепить его к приложению, последее можно сделать как во время создания юзера, так и после. Назовем юзера testuser
- Написать сценарий обработки звонка через приложение (об этом подробнее ниже)
- Назначить сценарий обработки звонка, указав паттерн номера при котором он должен сработать
Сценарий обработки звонка
Все сценарии пишутся на Javascript и выполняются при звонке движком, который мы называем VoxEngine. Конечно, к стандартным функциям и возможностям Javascript добавляется ряд классов, которые позволяют управлять звонками, делать HTTP-запросы и т.д. Более подробная информация о классах и функциях VoxEngine доступна тут http://voximplant.com/docs/references/appengine/. Мы же сейчас напишем очень простой сценарий, который просто завернет нам звук обратно, этакий echo-тест часто используемый в ряде систем IP-телефонии. Идем в разде Scenarios/Сценарии, нажимаем создать сценарий, называем его TestScenario и пишем следующий код:
VoxEngine.addEventListener(AppEvents.CallAlerting, function(e) {
e.call.answer();
e.call.addEventListener(CallEvents.Connected, function(e) {
e.call.sendMediaTo(e.call);
});
});
По сути, мы здесь отвечаем на звонок с SDK на стороне платформы, и после соединения заворачиваем приходящий звук обратно звонящему, получается эхо. Что произнесем, то и услышим обратно. Сохраняем сценарий и снова идем в раздел Applications/Приложения, выбираем редактирование нашего testapplication и открываем раздел Rules/Правила. Нажимем Add Rule и определяем правило, назвать можно как угодно, например, EchoRule. В поле Pattern пишем echo вместо .*, чтобы выполнить данный сценарий только если номер был echo и перетаскиваем TestScenario из Available в Assigned. Жмем Add, потом жмем Save. Все, миссия выполнена, теперь можно вернуться к нашему Android-приложению и посмотреть как это все работает (или не работает, если что-то по пути сделали не так :)
Вводим логин в виде testuser@полное_название_вашего_приложения (testapplication.kraken.voximplant.com в моем случае), пароль и echo в качестве номера телефона, жмем Connect, после этого должна появится надпись Connected to server. Жмем Login и получаем Logged in successfully. Жмем Call и получаем наш звонок с эхо.
Кастомизация сценария звонка
Эхо — это, конечно, здорово, но мало применимо для каких-то реальных приложений, кроме случая для тестирования работы микрофона, поэтому давайте теперь сделаем так, чтобы заработали звонки на реальные номера. Идем в раздел сценариев и создаем следующий сценарий (назовем его PSTN):
VoxEngine.forwardCallToPSTN();
Потом редактируем наше приложение, добавляя новое правило (Rule), в котором Pattern делаем вида [0-9]+ и в Assigned перетаскиваем наш PSTN сценарий. Сохраняем и снова идем в мобильное приложение. Теперь если вместо echo ввести номер телефона в формате код страны, код региона, номер (например, 79261002030) и позвонить, то звонок пойдет на реальный телефонный номер.
Другие сценарии
На базе VoxImplant можно делать разные сервисы и приложения. Например, можно сделать РМО оператора колл-центра на базе какого-нибудь Android-девайса или сделать VoIP-звонилку а-ля Viber (несмотря на то что мы еще оптимизируем платформу для таких сценариев, есть компании, которые уже сделали такой функционал и встроили его в свои приложения). Мы уже писали про создание облачной IP АТС на базе VoxImplant, соответственно можно реализовать какой-нибудь мобильный клиент к такой АТС в дополнение к SIP-девайсам или софтфонам, если есть такое желание. В ближайшем будущем мы добавим поддержку видео-звонков в Android SDK, чтобы его функционал полностью соответствовал iOS-версии.
Документация
Документация по Android SDK доступна по ссылке http://voximplant.com/docs/references/mobilesdk/android/. Мы осознаем исключительную важность документации и трудимся над ее улучшением, пока она далека от идеала, но мы стараемся отвечать на вопросы, которые нам присылают разработчики. Если у вас возник вопрос во время разработки, то не стесняйтесь написать нам, мы будем рады помочь.
Конкурс
Есть у нас такое интересное желание — провести конкурс для разработчиков на лучшее приложение/сервис с использованием VoxImplant. Как только мы завершим разработку ряда важных на наш взгляд функций платформы (например, конференций), которые позволят реализовать больше ваших фантазий, и окончательно определимся с призовым фондом, критериями и условиями, то объявим об этом. Как говорится, stay tuned!
Автор: aylarov