Tuesday, April 15, 2008

Звонок в приложение

Здесь мы (AbavaNet) опишем новый подход к интеграции телефонии и веб-приложений. Цель состоит в доставке голосового звонка непосредственно в веб-приложение. Это позволит, например, оставлять голосовые сообщения в приложениях, проводить голосования и т.д. При этом предложенный способ будет работать и для мобильных сайтов, где голосовое общение может быть даже более актуальным.
Сервисы, интегрирующие веб и телефонию, конечно, уже существуют. Это то, что принято называть Mobile 2.0 (или Телеком 2.0). Среди сервисов, запущенных AbavaNet, можно указать, например, запись голосовых сообщений в блоги или Voice 2 Email. Но все сервисы в целом следуют одной модели - использование открытого API веб-платформы (например, Livejournal API) для доставки звонка.
А что если сделать еще и наоборот? Не из сервиса обращаться к веб-платформе, а непосредственно из веб-приложения принимать результаты звонка. Тогда, например, для такого сервиса как запись голосовых сообщений в блоги вообще не нужна была бы какая-то отдельная регистрация своего телефона и блога. Непосредственно в блог-платформе можно было бы разместить инструмент для приема голосовых сообщений и потенциальному пользователю осталось бы только позвонить.
Как это вглядит практически? Прием звонка непосредственно в веб-приложении означает, с практической точки зрения, что непосредственно в веб-приложении мы определяем место, где будет приниматься звонок, а также собственный callback - метод, который будет отвечать за прием звонка. Поскольку мы говорим о веб, то callback здесь - это postback. То есть CGI скрипт, который будет отвечать за прием звонка. А указание места приема - это должен быть какой-то тег.
Для разработчика веб-приложения это в итоге выливается в размещение в произвольном месте своего приложения JavaScript вызова, который и выставит соответствующую метку. Выглядит это таким образом:

AcceptCall('Голосовое сообщение', 'http://myserver/my_cgi_script')

Здесь первый параметр - это заголовок для пользователя (как это будет видеть посетитель сайта), второй параметр - CGI скрипт (от _собственного_ веб приложения), который будет регистрировать звонок. Для посетителя сайта это выглядит в итоге как обычная ссылка:

Голосовое сообщение


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

После звонка на указанный номер и ввода кода (код находится перед глазами - он одноразовый и запоминать его не нужно :) голосовое сообщение будет записано. А далее - телекоммуникационная платформа просто выполнит HTTP POST запрос по URL, указанному в качестве второго параметра (см. JavaScript вызов выше). При этом записанный файл (mp3, например) будет просто передан
(выгружен) в данном запросе. И, соответственно, скрипт в веб-приложении для приема звонка есть просто CGI-скрипт для обработки загрузки файла. Для веб-приложения это выглядит так, как будто есть некоторая страница с формой загрузки файла (<input type="file" ...) и нужно обработать загружаемый пользователем медиа-файл. Далее - уже целиком область ответственности веб-приложения: просто поместить у себя ссылку на полученный файл, вставить на страницу медиа-плейер для прослушивания etc.

Как веб-приложение различит, к чему относится полученный файл? Для этого указанный выше JavaScript вызов может использоваться в такой форме:

AcceptCall('Голосовое сообщение', 'http://myserver/my_cgi_script', дополнительные параметры)

Например, для форума (блога) серверное приложение, которое выводит ветку дискуссии может добавить на генерируемую страницу такой JavaScript код, указав в дополнительных параметрах ID сообщения (топика в форуме). Дополнительные параметры будут просто передаваться вместе с медиа-файлом "как есть". Базируясь на их значениях, CGI скрипт, который будет обрабатывать прием медиа файлов сможет корректно адресовать полученный файл уже в рамках веб-приложения.

В целом, это очень простой в использовании метод интеграции голосовых звонков непосредственно в веб приложение. Нет никаких специальных требований к веб-приложению , а прием звонка - это просто обработка загрузки файла.

Отметим, что описанный подход будет работать и для мобильных веб-приложений.

Что дальше? Хотите запустить такой сервис для своей блог-платформы, сайта, социальной сети и т.п.? Свяжитесь с нами. Кстати, интеграция телефонии - это один из способов монетизации для тех же социальных сетей. И все описанное в части бизнеса здесь, применимо и для данного сервиса.

No comments: