Отправьте статью сегодня! Журнал выйдет ..., печатный экземпляр отправим ...
Опубликовать статью

Молодой учёный

Инструменты и этапы построения архитектуры расширяемого чат-бота на примере бота для изучения английского языка

Информационные технологии
30.07.2022
394
Поделиться
Библиографическое описание
Беднов, А. В. Инструменты и этапы построения архитектуры расширяемого чат-бота на примере бота для изучения английского языка / А. В. Беднов. — Текст : непосредственный // Молодой ученый. — 2022. — № 30 (425). — С. 4-5. — URL: https://moluch.ru/archive/425/94238/.


Чат-бот — это программа, которая способна вести переписку с пользователями в чате, имитируя при этом поведение человека. Она может работать на любой известной платформе, например, Telegram, Viber и т. д. Согласно документу, опубликованному командой Telegram, посредством их мессенджера 52 млн. человек регулярно используют почти 800 тыс. активных ботов [1]. Основным преимуществом данного вида общения с пользователем является упрощенная коммуникация: чтобы воспользоваться нужным сервисом, достаточно просто открыть чат в мессенджере. Так, например, в России за август 2021 года мессенджером Telegram воспользовалось 37 миллионов человек [2], а за февраль 2022 года — 54 миллиона [3]. Данное преимущество делает чат-ботов очень удобным инструментом для самообразования, например, для изучения английского языка.

После изучения исследований [4] по данной тематике были разработаны следующие функциональные требования — бот должен предоставлять возможности для: 1) изучения грамматики английского языка; 2) прохождение тестов по грамматике английского языка, просмотр результатов; 3)изучение английских слов в игровом формате; 4) повторение уже выученных слов; 5) просмотр прогресса изучения слов.

Был выбран стэк технологий.NET, так как приложение должно иметь достаточно сложную логику и легко расширяться новым функционалом, а данная платформа обладает статически типизированным ООП-языком C#, мощными готовыми библиотеками и фреймворками и большим как англо- так и русскоговорящим сообществом. Все методические материалы по английской грамматике были взяты с сайта native-english.ru.

Реализовано два клиента: консольный и серверный. Консольный удобен для быстрой проверки и отладки реализуемого функционала во время разработки, а серверный — для публикации бота в интернете. Консольный реализован как обычное консольное приложение (Console App) на платформе.NET, а серверный — с использованием фреймворка ASP.NET Core MVC, шаблон проекта — Web-API. Для доступа к данным используется библиотека EF Core. Для работы с Telegram Bot API использована библиотека TelegramBots. Telegram Bot API — это HTTP-интерфейс, созданный для разработчиков, заинтересованных в создании ботов для Telegram. Для публикации бота в интернете использован бесплатный.NET хостинг Somee.com.

Разработка архитектуры чат-бота состоит из следующих этапов:

  1. Создание контейнера зависимостей. В качестве контейнера зависимостей был выбран Autofac, так как он имеет достаточно хорошую производительность и прост в настройке. Чтобы Autofac можно было использовать в проекте, необходимо его установить через NuGet Package Manager.
  2. Создание консольного клиента. Консольный клиент представляет из себя обычное консольное.NET Core приложение, которое с определенной периодичностью посылает запросы к серверам Telegram, для получения обновлений, чтобы затем передать их обработчику обновлений.
  3. Создание веб-клиента. Веб-клиент представляет собой серверное приложение ASP.NET Core, которое получает обновления от Telegram при помощи механизма webhook и затем передаёт их обработчику обновлений.
  4. Организация хранения данных. Для хранения данных бота был использован Entity framework Core с подходом Code first (подробнее см. главу 3.3). В качестве СУБД использовался SQL Server. Подход Code First подразумевает, что база данных будет генерироваться из классов-моделей.
  5. Идентификация пользователей. Для идентификации пользователя используется уникальный идентификатор чата.
  6. Взаимодействие с чатом. Чтобы бот имел возможность взаимодействовать с чатом, а именно отправлять, редактировать и удалять сообщения был добавлен проект типа Библиотека классов Communication и класс ChatManager, в данном классе заключена вся логика по взаимодействию бота с чатом.
  7. Прием сообщений. Для того чтобы бот мог принимать и обрабатывать сообщения, был спроектирован механизм приемников, он заключается в следующем: каждому пользователю было добавлено поле, отвечающее за его состояние, обработчик обновлений во время идентификации определяет текущее состояние пользователя и на основе этого определяет, какому именно приемнику нужно передать сообщение.
  8. Работа с кнопками. Telegram Bot API позволяет прикреплять к сообщениям кнопки и записывать в них информацию, которая будет передана боту при нажатии. Для унификации процесса обработки нажатия кнопки в проект Entities был добавлен класс CallbackQuerryItem.
  9. Обработчик обновлений. Для обработки обновлений приходящих от клиента был добавлен проект типа Библиотека классов UpdateHandlers с классом CommonHandler, который состоит из одного публичного метода HandleUpdate.
  10. Бизнес-логика. Чтобы соответствовать требуемой функциональности, бот должен иметь логику. Для этого был создан проект типа Библиотека классом с именем LogicLayer. Бизнес-логика реализуемого бота делится на два основных модуля: изучение слов и изучение грамматики. В каждый модуль было добавлено по два типа классов: первые отвечают за логику получения данных, а вторые за логику изменения. Также, чтобы изолировать логику генерации сообщений, для каждого класса логики был добавлен класс, генерирующий сообщения и их разметку.

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

Литература:

  1. Телеграм 2020: аудитория и каналы // Блоги экспертов и ИТ-компаний URL: https://club.cnews.ru/blogs/entry/telegram_2020_auditoriya_i_kanaly (Дата обращения 28.07.2022)
  2. Messenger audience by app Russia 2021 // Statista URL: https://www.statista.com/statistics/1065027/russia-messenger-audience-by-app/ (Дата обращения 28.07.2022)
  3. Telegram обошел Whatsapp по объему трафика в России // Ведомости URL: https://www.vedomosti.ru/technology/articles/2022/03/20/914320-telegram-oboshel-whatsapp (Дата обращения 28.07.2022)
  4. Будникова А. С., Бабенкова О. С. Использование чат-ботов при изучении иностранного языка // Ученые записки. Электронный научный журнал Курского государственного университета URL: https://cyberleninka.ru/article/n/ispolzovanie-chat-botov-pri-izuchenii-inostrannogo-yazyka/viewer (Дата обращения 28.07.2022)
Можно быстро и просто опубликовать свою научную статью в журнале «Молодой Ученый». Сразу предоставляем препринт и справку о публикации.
Опубликовать статью
Молодой учёный №30 (425) июль 2022 г.
Скачать часть журнала с этой статьей(стр. 4-5):
Часть 1 (стр. 1-87)
Расположение в файле:
стр. 1стр. 4-5стр. 87

Молодой учёный