A TOOL FOR AUTOMATING SURVEYS IN THE CORPORATE INFRASTRUC-TURE
Abstract and keywords
Abstract (English):
This article presents a project to develop a bot for creating and managing polls and voting on the Mattermost platform, implemented in the Go programming language. The project is aimed at optimiz-ing the processes of interaction in organizations. The article also examines the architecture of data storage using Tarantool and PostgreSQL, which guarantees the security and integrity of information. The bot's functionality includes creating polls, voting, viewing results, and managing polls, making it intuitive for users. The project not only improves teamwork, but also promotes a more democratic and transparent decision-making process

Keywords:
Mattermost, polls, voting, Go
Text
Text (PDF): Read Download

Современные организации стремятся к оптимизации процессов взаимодействия и принятия решений. Одним из эффективных инструментов для достижения этой цели являются опросы и голосования, которые позволяют собирать мнения и предпочтения сотрудников. В данной статье представлен проект, разработанный на языке Go [1], который предлагает решение для создания и управления опросами в Mattermost – на платформе для командного общения с открытым исходным кодом [2]. Этот проект не только упрощает процесс создания опросов, но и предоставляет уникальные функции, которые выделяют его среди существующих решений.

Проект вносит значительный вклад в область интерактивных систем опросов и голосований, сочетая современные технологии и подходы к разработке. Использование языка Go обеспечивает высокую производительность и параллелизм, позволяя обрабатывать множество запросов одновременно. В результате бот становится незаменимым помощником в формировании коллективного мнения, предоставляя пользователям возможность легко создавать опросы, голосовать и просматривать результаты через простые текстовые команды.

Разработка бота на языке Go позволяет достичь высокой производительности и надежности. Бот поддерживает различные команды, что делает его функциональным инструментом для взаимодействия с пользователями. Например, команды @create, @vote, @results, @finished и @delete позволяют пользователям легко управлять опросами. Это обеспечивает интуитивно понятный интерфейс, который не требует от пользователей специальных технических знаний.

Проект интегрирован с Mattermost (рисунок 1), который обеспечивает безопасный и гибкий обмен сообщениями, интеграцию с различными инструментами и возможность кастомизации под нужды бизнеса. Mattermost предоставляет возможность создания каналов, обмена файлами и интеграции ботов. Это позволяет командам организовывать опросы и голосования прямо в контексте их работы, что значительно упрощает процесс взаимодействия.

Рисунок 1 – Работа бота в системе Mattermost

 

Для хранения данных о голосованиях и опросах используется Tarantool – это высокопроизводительная NoSQL база данных и сервер приложений, разработанная для работы с данными в реальном времени [3]. Она сочетает в себе функциональность базы данных с возможностями выполнения бизнес-логики, что позволяет создавать эффективные и масштабируемые приложения, обеспечивающие высокую производительность и надежность. PostgreSQL поддерживает Mattermost, гарантируя надежное хранение всех данных платформы [4]. Такая архитектура позволяет избежать потерь данных и обеспечивает быстрый доступ к информации.

Tarantool Admin предоставляет удобный веб-интерфейс для просмотра и управления данными, что упрощает администрирование и мониторинг состояния базы данных. Это позволяет администраторам эффективно управлять данными и обеспечивать их целостность (Рисунок 2).

 

 

 

Рисунок 2 – Веб-интерфейс для просмотра и управления данными Tarantool

 

Проект можно быстро развернуть в любом окружении с помощью Docker и Docker Compose. Для этого необходимо настроить файл .env с необходимыми параметрами, такими как токены доступа и пароли. Установка Docker и Docker Compose является первым шагом, который необходимо выполнить перед запуском проекта. Запуск проекта осуществляется с помощью команды docker-compose up --build, которая создает и запускает все необходимые компоненты в виде контейнеров. Это позволяет значительно упростить процесс развертывания и минимизировать время на настройку.

Взаимодействие с ботом происходит по протоколу WebSocket, что обеспечивает быстрый обмен сообщениями между пользователями и сервером. Бот поддерживает несколько ключевых операций (Рисунок 3):

  • Создание опросов: Команда @create "вопрос" "вариант 1" "вариант 2" позволяет пользователям создавать новые опросы.
  • Голосование: Команда @vote ID_голосования вариант_ответа позволяет пользователям голосовать в созданных опросах.
  • Просмотр результатов: Команда @results Id_голосования выводит результаты текущего голосования.
  • Завершение опроса: Команда @finished Id_голосования завершает опрос досрочно и доступна только создателю.
  • Удаление опроса: Команда @delete Id_голосования позволяет удалить опрос и доступна только создателю.
  • Справка о боте: Команда @bot_help предоставляет информацию о функционале бота.

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

 

Рисунок 3 – Ключевые операции бота

 

Файл .env содержит конфиденциальные данные, такие как пароли и токены, используемые в проекте. Настройка этого файла является важным шагом, который позволяет обеспечить безопасность и корректную работу бота. На рисунке 4 представлен пример содержимого файла .env.

 

 

Рисунок 4 – Наполнение env файла

 

В качестве основных преимуществ использования данного решения отметим следующие:

  • Высокая производительность: язык Go обеспечивает быструю обработку запросов и минимальное время отклика, что особенно важно для команд с большим количеством пользователей.
  • Безопасность данных: интеграция с Mattermost и использование надежных баз данных, таких как PostgreSQL и Tarantool, гарантируют защиту данных и их целостность.
  • Гибкость и настраиваемость: открытая архитектура Mattermost позволяет легко интегрировать дополнительные функции и адаптировать бот под специфические нужды команды.
  • Удобство использования: интуитивно понятный интерфейс и команды делают процесс создания и участия в опросах простым и доступным для всех пользователей, независимо от их технического уровня.

Проект по созданию опросов и голосований в Mattermost, реализованный на языке Go, представляет собой мощный инструмент для улучшения взаимодействия в командах и организации процесса принятия решений. Его высокая производительность, безопасность и интуитивно понятный интерфейс делают его отличным выбором для организаций, стремящихся оптимизировать свои внутренние процессы. С помощью этого решения команды могут быстро и эффективно собирать мнения, что способствует более демократичному и прозрачному принятию решений.

References

1. Go documentation - [Elektronnyy resurs]. - URL: https://go.dev/doc/ (da-ta obrascheniya: 29.04.2025).

2. Mattermost Documentation. - [Elektronnyy resurs]. - URL: https://github.com/mattermost/docs (data obrascheniya: 30.04.2025)

3. Tarantool – documentation - [Elektronnyy resurs]. - URL: https://www.tarantool.io/en/doc/latest/ (data obrascheniya 30.04.2025)

4. PostgreSQL documentation – [Elektronnyy resurs] – URL: https://www.postgresql.org/docs/ (data obrascheniya 30.04.2025).

Login or Create
* Forgot password?