Инструменты и этапы построения архитектуры расширяемого чат-бота на примере бота для изучения английского языка | Статья в журнале «Молодой ученый»

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

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №30 (425) июль 2022 г.

Дата публикации: 30.07.2022

Статья просмотрена: 327 раз

Библиографическое описание:

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



Чат-бот — это программа, которая способна вести переписку с пользователями в чате, имитируя при этом поведение человека. Она может работать на любой известной платформе, например, 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)
Основные термины (генерируются автоматически): API, обработчик обновлений, английский язык, проект типа, MVC, SQL, Библиотека классов, изучение грамматики, консольный клиент, публикация бота.


Похожие статьи

Использование современных языков программирования для решения профессиональных задач на примере языка программирования Python

Сравнение методов извлечения сущностей для создания образовательного контента в интеллектуальной среде

Исследование функциональности программ для разработки дизайна сайтов и мобильных приложений

Функция автодополнения в поисковых системах как инструмент для филологического исследования на примере запросов на английском и русском языках

Сравнительный анализ интегрированных сред разработки для языка Java

Использование двумерных массивов в VBA на уроках информатики

Сравнительный анализ Microsoft Word и Paint для работы с рисунком учениками начальной школы при знакомстве с компьютером

Статический анализ исходного кода в обучении и разработке программного обеспечения

Построение информационных моделей для описания объектов и систем в английском языке

Микросервисная архитектура при решении задач машинного обучения

Похожие статьи

Использование современных языков программирования для решения профессиональных задач на примере языка программирования Python

Сравнение методов извлечения сущностей для создания образовательного контента в интеллектуальной среде

Исследование функциональности программ для разработки дизайна сайтов и мобильных приложений

Функция автодополнения в поисковых системах как инструмент для филологического исследования на примере запросов на английском и русском языках

Сравнительный анализ интегрированных сред разработки для языка Java

Использование двумерных массивов в VBA на уроках информатики

Сравнительный анализ Microsoft Word и Paint для работы с рисунком учениками начальной школы при знакомстве с компьютером

Статический анализ исходного кода в обучении и разработке программного обеспечения

Построение информационных моделей для описания объектов и систем в английском языке

Микросервисная архитектура при решении задач машинного обучения

Задать вопрос