Введение 5
1 Определения и обозначения 8
2 Постановка целей 10
3 Обзор существующих технологий для идентификации абонента 11
3.1 Электронные справочники 11
3.2 Мобильные приложения и сервисы для
мгновенной идентификации абонента 13
4 Разработка рейтинговой системы
обработки обратной связи от пользователей 16
4.1 Основные проблемы и задачи 16
4.2 Разработка рейтинговой системы 16
4.3 Отличия от существующих систем и обзор
существующих вариантов 19
4.4 Обзор альтернативных вариантов 20
4.5 Результаты 22
5 Реализация мобильного приложения для
идентификации абонента 22
5.1 База данных 24
5.2 Веб-приложение на базе ASP.NET 27
5.3 Мобильное приложение на базе Android 35
5.4 Результаты 38
Заключение
Определение имени и цели звонящего абонента по его телефонному номеру — актуальная задача, которая на сегодняшний момент в ИТ-индустрии не решается комплексно [44]. Возможностью приобрести подробные телефонные базы, доступные любому желающему, пользуются коллекторские и рекламные агентства, телефонные мошенники и другие люди и организации, досаждая владельцам смартфонов нежелательными звонками. Не зная, кто ему звонит, абонент вынужден тратить время на бесполезные беседы. Другая проблема, существующая в современном обществе — информационная перегрузка. У абонента нет времени отвечать на все входящие вызовы. Большинство людей хотели бы сэкономить своё время и другие ресурсы, отказываясь от разговоров, которые не принесут важной информации. В этом свете актуальной представляется задача разработки технологической системы, которая могла бы обеспечить пользователей мгновенным доступом к важной информации о входящих вызовах — кто именно звонит и с какой целью.
Существующие решения — онлайн-справочники (например, «Жёлтые страницы» [9]), мобильные приложения (TrueCaller [30], Contactive [20], Whoscall [32]), — решают задачу лишь частично, обеспечивая либо высокую скорость взаимодействия с системой (за счёт небольшого размера базы данных, содержащей только те номера, звонки с которых совершаются чаще всего, и чаще всего хранящейся прямо на мобильном устройстве), либо точность подачи информации и её актуальность (как, правило, точную и актуальную информацию по большинству запросов пользователя предоставляют объёмные онлайн-базы, доступ к которой осуществляется при помощи веб-браузера). Ещё одна сложность в разработке полезной системы заключается в быстром устаревании информации — и коллекторы, и рекламные агентства, и обычные пользователи время от времени меняют телефонные номера, и номер, который несколько дней или месяцев принадлежал одному абоненту, уже сейчас может принадлежать другому человеку. Решением этой проблемы могла бы стать рейтинговая система, обновление которой происходит на основе полученной от пользователей обратной связи. Многие из перечисленных решений обеспечивают механизмы получения и обработки обратной связи, но скорость работы этих механизмов может оказаться слишком мала, чтобы оперативно реагировать на изменения в телефонной базе.
Представленная в данной работе система учитывает недостатки упомянутых выше решений. Теоретическая ценность такой системы состоит в демонстрации возможности уточнять, добавлять и ранжировать информацию об абонентах самим пользователям. Практическая цель данной работы — создать такую технологическую платформу, которая могла бы предоставлять пользователю максимально полную информацию о характере входящего вызова — кто именно звонит и с какой целью. При этом система должна обрабатывать обратную связь от пользователей, а также предоставлять информацию в сжатые сроки (а именно, обработка запроса не должна превышать 1-2 секунды: именно столько обычно требуется человеку, чтобы оценить ситуацию и принять решение — в данном случае, ответить на звонок), а также работать в облегченном виде без доступа к сети Интернет.
Наиболее комфортной для пользователя представляется ситуация, когда информация о входящем вызове отображается мгновенно на самом мобильном устройстве. Именно поэтому для разработки системы, представленной в данной квалификационной работе, в качестве платформы была выбрана операционная система Android [14]. На базе этой операционной системы к началу 2016 года работает 80,7% [51] смартфонов по всему миру. Основной IDE (средой разработки) была выбрана система Xamarin [34] — она обеспечивает средства кроссплатформенной разработки и портирования мобильных приложений, так что созданное решение можно будет перенести и на другие мобильные операционные системы. Непрерывную работу системы и её масштабируемость обеспечивает облачный бэкенд, реализованный на платформе Microsoft Azure [24].
Представленное решение состоит из мобильного приложения на базе Android, названного CallDialer (реализовано на платформе .NET [63] во фреймворке Xamarin), двух веб-приложений (реализованных на платформе ASP.NET) и СУБД [5]. И СУБД, и веб-приложения на базе ASP.NET размещены в облачном хранилище Microsoft Azure [18].
В СУБД хранятся телефонные номера и варианты описаний, которые им присваивают клиенты системы, а также дата и время последнего звонка с каждого номера. Кроме того, в ней ведётся учёт рейтинга каждого из вариантов и каждого из клиентов системы. Рейтинг конкретного имени определяется тем, какое количество клиентов подтвердили его состоятельность и каков рейтинг этих клиентов. Рейтинг клиентов зависит от количества добавленных вариантов имён и их рейтинга. Одно из разработанных веб-приложений отвечает за обработку рейтингов — как пользователей, так и добавленных ими вариантов имён. Второе веб-приложение выступает в качестве анализатора, который определяет владельца телефонного номера и цель его звонков, обрабатывая записи пользователей сети Интернет, собранных с различных специализированных сайтов.
В мобильном приложении пользователь может просмотреть историю входящих вызовов, дополнительную информацию по каждому телефонному номеру и предложить собственные варианты имён. При каждом звонке с неизвестного пользователю номера приложение выводит на главный экран имя с самым высоким рейтингом на текущий момент.
Для удобства изложения сначала раскрывается часть данной работы, касающаяся разработки рейтинговой системы ранжирования вариантов описаний (глава 4), а затем — разработки самой технологической системы (гла-
ва 5). Все используемые определения вынесены в главу 1.
В данной работе рассмотрен алгоритм ранжирования данных, учитывающий обратную связь от пользователей системы. Также представлена технологическая платформа, позволяющая идентифицировать абонента и цель его звонка по номеру телефона звонящего, удовлетворяющая всем заданным требованиям.
Результаты работы были представлены на нескольких конференциях «Наука настоящего и будущего 2016», «СПИСОК 2016», «Современные технологии в теории и практике программирования 2016».
Все цели работы достигнуты.
[1] Андере, К. Truecaller: How it works and what you need to know about it. Режим доступа [проверено 7.05.2016]. URL: https://www.linkedin.com/pulse/truecaller-how-works-what-you-need- know-keith-andere
[2] Баранвал, В. Where does Truecaller get its data. Режим доступа [проверено 7.05.2016]. URL: https://www.quora.com/Where-does- Truecaller-get-its-data-It-doesnt-seem-to-work-for-me-but-if-it-did-work- wouldnt-that-raise-privacy-concerns/answer/Vipul-Baranwal
[3] Бернерс-Ли, Т., Филдинг, Р., Фристик, Г. Hypertext Transfer Protocol — HTTP/1.0. Режим доступа [проверено 7.05.2016]. URL: https://tools.ietf.org/html/rfc1945
[4] Лоуренс, Ф. Hanging on the Metaphone. Computer Language, Vol. 7, No. 12, 1990.
[5] Майер, Д. Theory of Relational Databases. Rockville, MD: Computer Science Press, 1983. P. 637.
[6] Нейгел, К., Ивьен, Б., Глинн, Д., Уотсон, К., Скиннер, М., Джонс, А. C# 5.0 и платформа .NET 4.5 для профессионалов. M.: Издательство Вильямс, 2014.
[7] Парамонов, С. Расшифровываем формулу Хабра-рейтинга или восстановление функциональных зависимостей по эмпирическим данным. Режим доступа [проверено 7.05.2016]. URL: https://habrahabr.ru/post/249375/
[8] Просто о корпоративном IaaS: что это, для кого, и как оплачивается. Режим доступа [проверено 7.05.2016]. URL: https://habrahabr.ru/company/it-grad/blog/257295/
[9] Сайт проекта «Жёлтые страницы». Режим доступа [проверено 7.05.2016]. URL: http://www.yp.ru/
[10] Сайт проекта «Код телефона». Режим доступа [проверено 7.05.2016].
URL: http://www.kodtelefona.ru/region_ru
[11] Сайт проекта «Фотобратск». Режим доступа [проверено 7.05.2016]. URL: http://photobratsk.ru/
[12] Сайт проекта «Фотогорький». Режим доступа [проверено 7.05.2016]. URL: http://www.photogorky.ru/
[13] Сайт проекта «Хабрахабр». Режим доступа [проверено 7.05.2016]. URL: https://habrahabr.ru/
[14] Сайт проекта Android. Режим доступа [проверено 7.05.2016]. URL: https://www.android.com/intl/ru_ru/
[15] Сайт проекта Android Developers. BroadcastReceiver. Режим доступа [проверено 7.05.2016]. URL: http://developer.android.com/reference/android/content/BroadcastReceiver.html...