1. Разработка универсального телекоммуникационного сервиса по записи звонков для Asterisk Научный руководитель: канд. физ.-мат. наук, с.н.с. лаборатории Открытых Информационных Технологий Дмитрий Евгеньевич Намиот Выполнил: студент факультета ВМиК, м-211 Илья Вячеславович Тимофеев
Здравствуйте! Я - Тимофеев Илья, студент магистратуры факультета ВМиК, группа м-211. Представляю работу по теме «Разработка универсального телекоммуникационного сервиса по записи звонков для Asterisk ». Научный руководитель – Дмитрий Евгеньевич Намиот.
В настоящее время очень быстро развивается рынок смартфонов и коммуникаторов. Такие мобильные устройства способны выполнять настоящие программы в частности для обработки звуковой информации от пользователей. Но по прежнему самым распространенным способом генерации звуковой информации для большинства пользователей является звонок по обычному телефону. Разработке подхода для создания сервисов по работе с такой информацией и посвящена данная работа.
Результаты работы могут быть применены для создания таких сервисов, как: Голосовая почта с хранением файлов вне сервера атс Сервиса подкастов Публикация голосовой записи в блоге Одно из наиболее важных применений - публикация голосового описания проблем в системе ushahidi Автоматизация действий работников техподдержки по созданию задачи в системе трекинга и прикрепление к ней звукового файла разговора с клиентом
Исходя из актуальности темы ставится следующая цель: «Разработать подход и его реализацию для обработки звуковой информации, полученной от пользователя». К решение предъявляются следующие требования: 1 2 3
Существуют компании, предоставляющие облачные телекоммуникационные сервисы. Проблема заключается в том, что они являются платными и закрытыми. Сервис VoiceLJ позволяет клиентам сохранить запись их звонка в ЖЖ. Этот сервис основан на тесном взаимодействии с одним из операторов связи и не может быть использован при решении других задач. В рамках данной работы создано полностью открытое решение, являющееся универсальным облачным сервисом по записи звонков.
Относительно недавно стали появляться программные реализации автоматических телефонных станций, что позволило широкому кругу программистов (а не только людям работающим на владельцев этих атс) создавать свои телекоммуникационные сервисы. В основу решения положен наиболее широко распространённая и открытая реализация атс Asterisk. Популярность и кроссплатформенность java явились определяющими факторами выбора ее, в качестве языка реализации. AGI-proxy – система с открытыми исходными кодами, разработанная в МГУ будет использоваться для получения звукового файла звонка. Полученный файл желательно хранить не на локальной машине, а на отдельной. Наиболее гибким решением является использование специальных сервисов хранения файлов в интернет. Для выполнения требования расширяемости все модули программы будут общаться через четко определенные интерфейсы. Применение принципа Inversion of control позволяет упростит создание дополнительных модулей сторонними разработчиками.
Наиболее простым и эффективным решение задачи получения звукового файла звонка является использование разработанного ранее прокси, переадресующего телефонные вызовы в http запросы . Алгоритм работы следующий. Пользователь звонит через астериск. Этот звонок обрабатывается через вызов API, который в свою очередь переадресуется прокси. Он же посылает http запрос на сервер. В ответ приходят команды «поднять трубку» и «записать звонок в файл», которые так же переадресуются астериску. Все завершается, когда пользователь кладет трубку.
Таким образом на предыдущем шаге получилась запись звонка. Теперь эти записи нужно где-то хранить. Были исследованы наиболее популярные сервисы для хранения файлов. Сравнение некоторых параметров приведены на этой таблице. Наиболее важным параметром является наличие прямой ссылки на файл, а не на экран загрузки файла с капчей, как у narod.yandex.ru Прямую ссылку можно подать на вход к флеш плееру, который сможет сразу и проиграть этот файл. Как видно из таблицы наиболее выгодными являются сервисы от Amazon и Dropbox.
Изучив API перечисленных выше сервисов, я пришел к выводу, что следующая схема работы будет наиболее универсальной, подходящей для работы с любым из них. Перед началом работы нужно провести инициализацию. Объект типа PropertySet содержит настройки. Перед завершением работы некоторым сервисам нужно выполнить завершающие действия. Таким образом метод init и destroy выполняются только один раз. Непосредственно перед загрузкой файла нужно выполнить предварительные действия, например, установить соединение. В результате загрузки получаем ссылку или URL по которой можно получить к нему доступ. После этого нужно выполнить закрыть соединение в методе clean.
В итоге, алгоритм работы получился следующим. Пользователь звонит через Asterisk , который производит запись звонка. После этого разработанный фреймворк заботится о получении этого файла, подключении конкретного модуля, получении настроек для модуля, производит все приготовительные мероприятия и вызывает у модуля метод upload. Это и есть реализация принципа инверсии контроля. Конкретная реализация модуля выполняет сохранения файла и возвращает его URL . После этого, похожая последовательность действий происходит и при публикации записи в блоге, например.
В итоге Предложено решение, позволяющее быстро и просто реализовывать сервисы, использующие записи звонков пользователей Проведено исследование сервисов хранения файлов в интернет с открытыми API Реализованы несколько сервисов, использующих предложенное решение, что показывает его состоятельность и конформность требованиям