РАЗРАБОТКА БОТА ДЛЯ ОПТИМИЗАЦИИ РАБОТЫ С ИНФОРМАЦИЕЙ

Авторы:А. С. Калашников, А. Д. Кучеренко, В. К. Щеглов

Источник:Калашников А. С., Кучеренко А. Д., and Щеглов В. К.. "РАЗРАБОТКА БОТА ДЛЯ ОПТИМИЗАЦИИ РАБОТЫ С ИНФОРМАЦИЕЙ" Актуальные проблемы авиации и космонавтики, vol. 2, 2019, pp. 123-125.

Аннотация

Представлен процесс разработки программы-бота, оптимизирующей взаимодействие с ин- формацией в учебном процессе, а также приведено описание алгоритма её функционирования. Описаны выявленные проблемы.

Для повышения удобства работы с информацией с сайта СибГУ им. М. Ф. Решетнева было решено разработать бота – специальную программу, взаимодействующую с социальной сетью с целью автоматического ответа пользователю. Данное решение обусловлено тем, что большин- ство людей сегодня проводят большое количество времени в разных социальных сетях и мес- сенджерах. На начальном этапе была реализована функция отправки расписания учебы в ответ на запрос пользователя в социальной сети «ВКонтакте». Работа бота осуществляется через ин- терфейс API сайта vk.com [1] на языке программирования Python.

API ВКонтакте позволяет получать информацию из базы данных vk.com с помощью http- запросов к специальному серверу. Синтаксис запросов и тип возвращаемых ими данных строго определены на стороне самого сервиса. Бот отслеживает активность через Callback API, находясь на стороннем сервере.

Когда пользователь пишет боту какое-либо сообщение, на сервер приходит входящий запрос, оповещающий об этом. Структура запроса:

{"type":"message_new","object":{"id":43, "date":1492522323, "out":0, "user_id":xxxxxxxx, "read_state":0, "title":" ... ", "body":"помощь"}, "group_id":xxxxxxxxxxx} Из данного словаря бот получает сообщение из элемента "body" и id пользователя из элемента "user_id".

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

Блок-схема алгоритма работы бота

Рис. 1 - Блок-схема алгоритма работы бота

Вывод расписания происходит в режиме реального времени: бот считывает информацию с сайта расписания СибГУ [2] на основе номера группы, находящейся в базе данных. Для реализа- ции задачи парсинга была использована библиотека BeautifulSoup [3], которая поддерживает простые и естественные способы навигации, поиска и модификации дерева синтаксического раз- бора файлов HTML/XML. Из нее были использованы функция BeautifulSoup и методы: .find,.find_all, .decompose.

Пример работы бота приведен на рис. 2, 3.

Интерфейс общения с ботом (вывод сообщения о расписании)

Рис. 2 - Интерфейс общения с ботом (вывод сообщения о расписании)

Интерфейс общения с ботом (ответы бота на сообщения пользователя

Рис. 3 - Интерфейс общения с ботом (ответы бота на сообщения пользователя)

В процессе выполнения проекта авторами был выявлено ряд проблем. Сложности при выборе языка программирования, так как возникает необходимость осваивать большое количество биб- лиотек. Скорость взаимодействия с базой данных низкая, так как она реализована в текстовом файле. Проблемы с парсингом – создание бота совпало с периодом обновления сайта расписания, поэтому было проделано много лишней работы. Однако это позволило ознакомиться со всеми аспектами данного способа выбора информации. Как видно из блок-схемы перед нахождением расписания на требуемый день приходится удалять блок расписания сегодняшнего дня. Данное решение обусловлено особенностями работы библиотеки BeautifulSoup и структурой сайта рас- писания – каждый день, кроме сегодняшнего не имеет идентификатора, поэтому нахождение тре- буемого дня организуется перебором этих дней с удалением ненужных. При встрече с сегодняш- ним днем перебор останавливался с появлением ошибки, что искомый блок не найден

Таким образом, на данном этапе проекта были обнаружены проблемы, мешающие функцио- нированию программы, отработаны алгоритмы решения прикладных задач. Дальнейшая работа над проектом будет состоять из двух этапов: устранение текущих недостатков и оптимизация алгоритма, дальнейшее продвижение в работе в соответствии с целями проекта.

Разработанная система позволяет повысить удобство получения информации о расписании занятий для студентов, а также открывает новые возможности синхронизации официальной группы СибГУ в социальной сети «ВКонтакте» с сайтом университета.

Литература

  1. Документация [Электронный ресурс]. URL: https://vk.com/dev/manuals (дата обращения: 27.03.2019).
  2. Расписание занятий [Электронный ресурс] URL: https://timetable.pallada.sibsau.ru/timetable/ (дата обращения: 27.03.2019).
  3. Beautiful Soup Documentation [Электронный ресурс] URL: https://www.crummy.com/ software/BeautifulSoup/bs4/doc/ (дата обращения: 27.03.2019).