Главная страница

Телеграммбот построения маршрута с использованием общественного транспорта города Киева


Скачать 2.02 Mb.
НазваниеТелеграммбот построения маршрута с использованием общественного транспорта города Киева
Анкорshorodok_bakalavr
Дата10.04.2023
Размер2.02 Mb.
Формат файлаpdf
Имя файлаShorodok_bakalavr.uk.ru.pdf
ТипДиплом
#1049985
страница2 из 5
1   2   3   4   5
Проанализировав все возможные варианты создания данного чат-бота было обнаружено, что для написания такого бота необходимо использовать один из языков серверного программирования: Ruby, Node.JS, Python, PHP. Необходимо определить, какой именно язык лучше всего подходит для написания такого бота.
Также важно умение работать с REST (Representational State Transfer) API (Application
Programming Interface), которые предоставляют мессенджеры, а в данном случае это
– TelegramBotAPI. После этого важно определиться с типом бота:
а) боты, имеющие способность к обучению (т.е. понимающие естественные языки), умеющие использовать логику при общении с пользователем и обрабатывать естественный язык для создания ответа на сообщения;
б) заскриптированные боты (боты, которые не способны понять естественный язык), у них диалог с пользователем – это заранее сформированный набор слов или предложений, а «скрипт» – это своеобразное дерево решений, в котором сценарий, запрограммированный заранее, является ответом на вопросы пользователя . Диалоги у них в большинстве случаев линейны и структурированы.
И в заключение, нужно определить цель бота, поскольку у него должна быть определенная цель, потому что в противном случае он не будет иметь смысла.
Письмо
ИТ51.320БАК.002 ПО
10
Изм.
Письмо
№ докум.
Подпись
Дата

4 ОБЗОР СУЩЕСТВУЮЩИХ РЕШЕНИЙ
4.1. Приложение Eway
В ходе детального изучения предметной области, было найдено приложение
“Eway” и соответствующий веб-сайт.
Поскольку приложения начинают терять популярность, большая часть людей начинает использовать телеграммы-боты в повседневной жизни, я решил выбрать тему: телеграмм-боты для построения маршрута с использованием общественного транспорта в городе Киеве. Поэтому для того чтобы создать телеграмм-бота, который будет иметь возможности web-сайта и приложения, нужно определить основные возможности приложения и web-сайта.
Приложение "Eway" подойдет, прежде всего, для того, чтобы отслеживать нужный вам транспорт на маршруте. Вы сможете выйти из дома и дойти до остановки как раз до прибытия. Единственный минус – пока еще не все транспортные средства снабжены GPS-маячками, поэтому их движение нельзя увидеть на карте. Но, что касается Киева, почти все маршруты «Киевпасстранса» и крупных транспортных компаний уже синхронизированы с приложением, правда, часть из них не отображается в режиме реального времени.
Пользоваться приложением несложно: нужно включить GPS на своем устройстве, и дальше Eway сам установит ваш город по умолчанию и найдет ближайшие остановки. Среди них выбирается нужная, далее – соответствующий маршрут из списка транспорта. Приложение показывает ожидаемое время прибытия транспорта конкретного маршрута на остановку на закладке с общей информацией, а также информацию об интервале движения транспорта, времени его работы и стоимости проезда. В подменю «Карта» видно, где именно находится нужный вам троллейбус/трамвай/маршрутка.
Среди других полезных функций следует отметить прокладку маршрутов с прорисовкой на карте города (метрополитен тоже учитывается).
Кстати, сейчас сервис работает в меньшем количестве городов Украины, чем вначале, из-за конфликтов с компаниями, установившими права на
Письмо
ИТ51.320БАК.002 ПО
11
Изм. Письмо
№ докум.
Подпись
Дата
передачу GPS-данных. Отслеживание маршрутов есть в Киеве, Днепре, Каменском,
Полтаве, Дрогобыче, Хмельницком, Кропивницком, Львове.
Среди преимуществ данного приложения можно выделить следующие: пользователь может получить необходимую информацию об общественном транспорте, его местонахождении, времени прибытия, ближайших остановках и возможности построить маршрут.
Основными недостатками являются:
а) отсутствие GPS-маячков на всех транспортных средствах; б) медленная скорость работы;
в) отсутствие телеграмм-бота.
Поскольку нет телеграмм-бота, который был бы связан с нашей предметной областью, мы рассмотрим телеграмм бот «Синоптик»@synbot.
4.2. Synbot
Synbot – это бот, главная цель которого состоит в информировании пользователя о последнем прогнозе погоды. Этот бот может предоставлять информацию о прогнозе погоды не только на текущий день, но и на несколько последующих.
Каждое утро люди интересуются прогнозом погоды. Иногда для получения последнего прогноза погоды с помощью обозревателя или приложения не хватает времени. Synbot минимизирует затраты времени на получение прогноза погоды, достаточно открыть приложение Telegram и войти в чат с ботом, который поможет помочь определиться с гардеробом. Именно благодаря быстродействию этот бот становится все популярнее.
Рассмотрим основные функции данного бота. Как только мы открываем диалог с ботом, пользователю сразу предоставляется возможность узнать прогноз погоды на текущий день. Далее бот позволяет выбрать параметры отображения прогноза погоды, такие как: период времени, город, максимальная и
Письмо
ИТ51.320БАК.002 ПО
12
Изм.
Письмо
№ докум.
Подпись
Дата
минимальная температура воздуха, преимущественное направление ветра и возможность осадков.
Если есть необходимость, пользователь может сохранить ранее введенные параметры и настроить автоматические оповещения, то есть сообщения от бота с прогнозом погоды.
Преимущества Synbot:
а) удобство интерфейса;
б) возможность регулировать и сохранять параметры; в) быстродействие;
г) простой алгоритм действия; д) автосообщение.
Письмо
ИТ51.320БАК.002 ПО
13
Изм.
Письмо
№ докум.
Подпись
Дата

5 РАЗРАБОТКА TELEGRAM-БОТА
5.1 Регистрация чат-бота для Telegram Bot API
Первым шагом для разработки бота является регистрация у специального чат-бота BotFather. Регистрация начинается с команды "/newbot", после чего предлагается ввести название чат-бота с обязательным условием: в конце название должно быть указано "Bot" или "_bot". Если все условия были выполнены, то BotFather выдает токен (специальный набор символов для доступа к HTTP API Telegram Bot) и URL-адрес для доступа из чат-бота.
Для установки дополнительных параметров, таких как иконка чат-бота, поздравительное сообщение, описание чат-бота, а так же удаление имеющихся чат- ботов, существуют следующие команды (таблица 5.1.1).
Таблица 5.1.1 – Доступные команды для смены чат-ботов
Команда
/setname
Описание
Изменение существующего имени
Присваивает текст,
отображаться при первом открытии
Присваивает текст в поле «О чат-боте»
Присваивает выбранную картинку позволяет создать список доступных команд
Удаляет выбранного чат-бота какой будет
/setdescription
/settabouttext
/setuserpic
/setcommands
/deletebot
Кроме команд для изменения основных параметров чат-бота существует ряд команд, позволяющих выводить неизменные параметры (токен), а так же присваивать значения, представленные в таблице 5.1.2.
Письмо
ИТ51.320БАК.002 ПО
14
Изм.
Письмо
№ докум.
Подпись
Дата

Таблица 5.1.2. – Доступные команды для дополнительной настройки чат-бота
Команда
/ token
Описание
Возвращает полученный ранее токен у выбранного бота
Аннулирует токен доступа к боту
Включает или отключает возможность вызвать бота из других чатов
Включает или выключает возможность передачи местоположения бота с другого чата
Позволяет получать информацию о количестве избранных пользователями команд
Определяет, может ли быть добавлен в групповые диалоги бот
Включает режим конфиденциальности. В этом режиме бот получает, обрабатывает и отправляет обратно информацию отдельно для каждого пользователя в чате.
/ revoke
/ setinline
/setinlinegeo
/setinlinefeedback
/setjoingroup
/setprivacy
После настроек на стороне Telegram и получения токена можно приступить к разработке программной части чат-бота.
5.2 Размещение чат-бота на удаленном сервере Heroku
Для постоянного и быстрого получения доступа к нашему чат-боту после разработки его необходимо разместить на локальном сервере. В качестве платформы был выбран Heroku. Размещение на облачной PaaS-платформе
Heroku схоже с работой распределенной системы контроля версий (Git).
Письмо
ИТ51.320БАК.002 ПО
15
Изм.
Письмо
№ докум.
Подпись
Дата

Существует три способа развертывания:
а) Heroku Git и Container Registry используя Heroku CLI; б) подключение аккаунта GitHub с автоматическим развертыванием; в) подключение аккаунта Dropbox с автоматическим развертыванием.
В работе был выбран способ и использование Heroku CLI.
а) для развертывания чат-боты были выполнены следующие действия: б) регистрация на облачную SaaP-платформу Heroku;
в) загружен и установлен Heroku CLI;
г) в терминале операционной системы или встроенном в IDE выполнен вход в аккаунт Heroku команду «heroku login»;
д) клонированный репозиторий из удаленного Git-сервера
Heroku на локальную машину с помощью команды heroku git: clone -a
;
е) зафиксированные изменения в коде с помощью команд git add. И «git commit
- am »;
ж) все зафиксированные изменения были отправлены на удаленный сервер облачных вычислений Heroku командой git push heroku master.
После выполнения всех указанных команд в правильной последовательности начинается передача данных на удаленный сервер. Если развертывание прошло успешно, то на терминале отобразится справочная информация о состоянии программы и режиме доступа к нему.
Таким образом, чат-бот был развернут на удаленном сервере облачных вычислений Heroku, что позволит пользователям получать бесперебойный доступ.
5.3 Среда разработки
Visual Studio Code Visual Studio Code – это понятный, лаконичный, но многофункциональный редактор исходного кода, совместимый с Windows,
MacOS и Linux.
Письмо
ИТ51.320БАК.002 ПО
16
Изм. Письмо
№ докум.
Подпись
Дата

IDE поддерживает большое количество популярных языков программирования.
Поддерживаемые расширения и среды выполнения представлены ниже:
а) JavaScript;
б) TypeScript;
в) Node.js;
г) C++;
д) C#;
е) Java;
ж) Python;
з) PHP;
и) Go;
к) .NET;
л) Unity.
Visual Studio Code включает в себя встроенный отладчик, удобство для разработки программных продуктов, инструменты для работы с Git- репозиториями, подсветку синтаксиса, средства для рефакторинга и IntelliSence
(технология автодополнения, которая предложит команду по первым буквам).
Visual Studio Code был основан на фреймворке Electron, позволяющем используя
Node.js разрабатывать настольные приложения, работающие на двигателе Blink.
Письмо
ИТ51.320БАК.002 ПО
17
Изм.
Письмо
№ докум.
Подпись
Дата

5.4 Язык программирования – Python
Python – это язык программирования общего назначения, который направлен прежде всего на увеличение производительности самого разработчика ПО, чем кода, который он пишет.
Если говорить простым языком, Python позволяет написать практически все: веб-/настольные приложения, игры, автоматизированные информационные системы, комплексные системы, системы управления жизнеобеспечением и многое другое. Кроме того, порог вхождения низкий, а код во многом немногословен и понятен даже для того, кто никогда на нем не писал. За счет простоты кода, будущее сопровождение программ, написанных на Python, становится легче и приятнее по отношению к Java или C. А с точки зрения бизнеса это дает сокращение затрат и повышение эффективности трудовых ресурсов.
Практически на всех платформах и операционных системах был реализован интерпретатор Python, являющийся несомненным преимуществом. Первым таким языком был С, однако его типы данных на разных машинах довольно часто занимали разное количество памяти, а это представляет некое препятствие при написании больших программ.
Также важная черта – расширяемость языка, этому придается большое значение и, как пишет сам автор Гвидо ван Россум, язык был задуман именно как расширяемый. Это означает, что есть возможность усовершенствования языка всеми заинтересованными разработчиками. Интерпретатор был разработан на языке программирования С и исходный код доступен для любых изменений.
При необходимости можно вставить его в свою программу и использовать как собственную встроенную оболочку. Или же, написав на C дополнение к Python и скомпилировав приложение, получить "расширенный" интерпретатор с новыми возможностями.
Письмо
ИТ51.320БАК.002 ПО
18
Изм.
Письмо
№ докум.
Подпись
Дата

Следующее значительное преимущество – наличие большого числа подключаемых модулей, обеспечивающих различные дополнительные возможности.
Такие модули обычно пишутся на С, на самом Python, и могут быть созданы более опытными программистами. В качестве примера можно привести следующие модули:
а) Numerical Python – предоставляет программисту более расширенные математические возможности, такие как манипуляции с целыми векторами и матрицами;
б) Tkinter – позволяет строить приложения с использованием графического пользовательского интерфейса (GUI);
в) OpenGL – это большая библиотека графического моделирования двух- и трехмерных объектов Open Graphics Library.
Единственным недостатком, на который обращал внимание сам автор, является сравнительно невысокая скорость выполнения Python программы. Однако, это не играет большую роль по сравнению с преимуществами языка при написании программ не очень критичных к скорости выполнения. Из использованных модулей можно выделить:
TeleBot, CherryPy, Requests, которые будут более подробно описаны ниже.
5.4.1 Модуль TeleBot
Модуль TeleBot является оболочкой над запросами к TelegramBotAPI, используется для упрощения и минимизации написанного кода. Все типы указаны в types.py. Все они полностью соответствуют определению типов API Telegram, за исключением from поля Message, которое переименовано в from_user (поскольку from это зарезервированный токен Python). К таким атрибутам, как message_id, можно обращаться непосредственно, например: message.message_id. При написании программ не очень требовательных к скорости выполнения стоит обратить внимание, что атрибут message.chat может принадлежать как определенному пользователю, так и групповому чату, это с полностью окупаемыми преимуществами языка.
Письмо
ИТ51.320БАК.002 ПО
19
Изм.
Письмо
№ докум.
Подпись
Дата

В классе TeleBot расположены все способы API. Чтобы следовать общим соглашениям об именах Python, они переименованы. Например: sendMessage send_message, editMessageText, edit_message_text. Функция украшена декоратором экземпляра TeleBot – обработчик сообщений. Обработчики сообщений состоят из одного или нескольких фильтров. Каждый фильтр возвращает True или False для определенного сообщения и обработчик получает разрешение на обработку сообщения, если возвращается True.
5.4.2 Модуль CherryPy
Написанный на языке программирования Python, объектно-ориентированный веб-фреймворк – CherryPy. Создано для быстрой разработки веб-приложений для сети
Интернет. Представляет собой надстройку над HTTP-протоколом.
Модуль может выступать в качестве самостоятельного веб-сервера или работать под управлением другой серверной программы на основе протокола
WSGI. CherryPy не предназначен для обработки шаблонов для вывода данных, получения доступа к базе данных, авторизации пользователя. Фреймворк становится расширенным за счет фильтров, представляющих собой простые интерфейсы, вызываемые в определенных точках процесса обработки запросов/
ответов и состоят из семи функций. Главным компонентом TurboGears является модуль CherryPy.
Процесс установки CherryPy совсем несложен, достаточно просто скачать его и выполнить несколько коротких шагов из файла README. Модуль CherryPy устанавливается так же, как любой другой модуль Python, поэтому не нужно указывать каталог установки. Если сравнивать с другими, более сложными серверными технологиями, модуль CherryPy всегда доступен для использования, как и любой другой модуль Python, если он будет импортирован с помощью инструкции import. В реальности CherryPy представляет собой не более чем самостоятельное приложение на языке Python, умеющее управлять своим собственным многопоточным веб-сервером, благодаря этому мы
Письмо
ИТ51.320БАК.002 ПО
20
Изм. Письмо
№ докум.
Подпись
Дата
имеем возможность выполнить сценарий на стороне сервера достаточно просто, как запустить простую команду в окне терминала. По умолчанию сервер запускается локально на 8080 порта, и сразу выполняет функцию, которую ему передали, но также можно задать определенные настройки вручную, такие как:
IPадрес, порт, открытый и закрытый ключи SSL.
5.4.3 Модуль Requests
Requests – библиотека Python, выполняющая HTTP-запросы (HyperText
Transfer Protocol). Начиная от передачи параметров в URL-адресах до отправки пользовательских заголовков и проверки SSL.
5.5 REST API, HTTP-запросы, JSON и череда сообщений
5.5.1 REST API
REST – это стиль архитектуры программного обеспечения, который используется для построения распределенных масштабируемых веб-сервисов, использующих запросы HTTP.
REST (Representational State Transfer) – стиль взаимодействия компонентов распределенного приложения в сети. REST имеет согласованный набор учитываемых ограничений при проектировании распределенной гипермедиа-системы. В определенных случаях (интернет-магазины, поисковые системы) это влечет за собой повышение производительности и изменение архитектуры, а именно ее упрощение.
Компоненты в REST своим взаимодействием напоминают взаимодействие клиента и сервера в Интернете.
Вызов удаленной процедуры в сети Интернет может представлять собой обычный HTTP-запрос (обычно "GET" или "POST"; такой запрос называют "REST- запрос"), а все необходимые для передачи данные передаются в качестве параметров запроса.
Письмо
ИТ51.320БАК.002 ПО
21
Изм.
Письмо
№ докум.
Подпись
Дата

Для веб-служб, построенных с учетом REST, применяют так называемый термин «RESTful».
В отличие от веб-сервисов на основе SOAP, не существует единого официального стандарта для термина RESTful веб-API. Поскольку REST является архитектурным стилем, в то время как SOAP является протоколом. REST не является стандартом сам по себе и, несмотря на это, большинство RESTful- реализаций используют известные стандарты, такие как: HTTP, URL, JSON и XML.
1   2   3   4   5


написать администратору сайта