Конкурс-бот Telegram на 1С:Предприятие 8.3
Информация о пользовательском / клиентском функционале.
При создании Telegram-бота использовался метод /setWebhook, который позволяет получать данные сообщений сразу при их отправке (вместо /getFile). Метод /setWebhook дополняется параметрами
-
update_id, message, callback_query, channel_post, inline_query, message_reaction
Это позволяет получать данные о более широком спектре сообщений (по умолчанию метод, например, не получает данные о реакциях на сообщения).
Текст при приёме переводится в формат JSON (платформы 1С), что позволяет обращаться отдельным полям сообщения. На анализе содержимого полей JSON и основан алгоритм работы Telegram-бота. Предварительно анализу выполняется контроль формата сообщения, ведь запросы-http форматов callback и inline должны обрабатываться отдельно от запросов формата text.
В итоге, в проекте были использованы следующие методы Telegram-API:
-
/getMe - получение текущей информации о боте.
-
/sendText - отправка текстового сообщения с callback-полями.
-
/sendDocument, /sendVideo, /sendImage (и аналогичные get-методы) для обработки файлов документов, картинок и видео (использовано для обработок файлов подарка пользователям).
-
/copyMessage (/copyMessages) - для пересылки сообщений рассылки / начала (конца) конкурса.
Важно: при работе с изображениями Telegram считает, что несколько медиа в альбоме - это несколько различных сообщений, объединённые общим тэгом.
Данный бот является своего рода «конкурс-ботом» с достаточно расширенным функционалом и возможностью подведения аналитики в разрезе проводимых ранее конкурсов. Автоматизация проведения конкурсов является максимально возможной, то есть администратору канала в Telegram нужно лишь в начале задать необходимые для подведения статистики данные. Помимо своей основной цели, бот собирает данные зарегистрированных в нём пользователей для возможной отправки им рассылок от своего лица в будущем. Интерактивно доступен функционал изменения сообщения приветствия бота, настройка файла подарка новым пользователем с программным контролем факта получения подарка, а также задание и изменение сообщения пользователю о получении подарка, которое всплывает совместно с текстом приветствия. Оговорённые выше функции доступны из приложения Telegram с любого устройства, дополнительно имеется возможность просмотра аналитики в разрезе конкурсов и каналов, списка зарегистрированных пользователей, администраторов бота и детальной информации по каждому конкурсу из приложения 1С:Предприятие, доступ к которому осуществляется по специальной ссылке в браузере. Инструменты управления ботом могут быть использованы для нескольких Telegram-каналов или обсуждений. Единственное, что должно их объединять – формально общий владелец и список администраторов, так как подведение аналитики является совместным для всех каналов.
Информация для пользователя / клиента представлена в следующем файле. В нем подробно описан функционал, который предоставляет конкурс-бот.
Справка по_использованию Telegram бота.pdf
Основные приёмы разработки.
При создании Telegram-бота использовался метод /setWebhook, который позволяет получать данные сообщений сразу при их отправке (вместо /getFile). Метод /setWebhook дополняется параметрами
-
update_id, message, callback_query, channel_post, inline_query, message_reaction
Это позволяет получать данные о более широком спектре сообщений (по умолчанию метод, например, не получает данные о реакциях на сообщения).
Текст при приёме переводится в формат JSON (платформы 1С), что позволяет обращаться отдельным полям сообщения. На анализе содержимого полей JSON и основан алгоритм работы Telegram-бота. Предварительно анализу выполняется контроль формата сообщения, ведь запросы-http форматов callback и inline должны обрабатываться отдельно от запросов формата text.
В итоге, в проекте были использованы следующие методы Telegram-API:
-
/getMe - получение текущей информации о боте.
-
/sendText - отправка текстового сообщения с callback-полями.
-
/sendDocument, /sendVideo, /sendImage (и аналогичные get-методы) для обработки файлов документов, картинок и видео (использовано для обработок файлов подарка пользователям).
-
/copyMessage (/copyMessages) - для пересылки сообщений рассылки / начала (конца) конкурса.
Важно: при работе с изображениями Telegram считает, что несколько медиа в альбоме - это несколько различных сообщений, объединённые общим тэгом.
В дополнение к основным приёмам разработки прилагаю выгрузку информационной базы 1С:Предприятие 8.3.
BotManager v1.dt
Публикация информационной базы 1С:Предприятие 8.3 с ботом на веб-сервере через Apache.
Алгоритм публикации бота вполне стандартный, за исключением момента с регистрацией бота в информационной базе. Дело в том, что при использовании ролей пользователей в 1С бот не сможет зайти в ИБ под паролем. В связи с этим, возникает необходимость регистрации анонимной публикации, под которой должен заходить бот. Для этого нужно скопировать текущую информационную базу с предварительно сформированным файлом default.vrd (создаётся при публикации основной базы на сервере Apache24), изменить путь на путь к основной информационной базе, а в качестве идентификатора входа использовать &quiot, куда не будет ничего подставляться. Пользователю Bot доверим лишь два метода-http: send и get, в результате чего человек, входящий от пользователя Bot не сможет попасть в ИБ, а бот выполнит свою работу в должной степени. В conf/httpd.conf необходимо вставить код для публикации анонимной базы, чтобы предоставить возможность боту обращаться по указанному адресу.
В дополнении прилагаю архив с ИБ и алгоритм его активации:
-
Закинуть папку с базой на диск.
-
Из текстового файла "Код для httpd" закинуть всё в conf/httpd.conf.
Изменить пути в коде на [Путь к базе]/TG-ChatBot/Anon-TG-ChatBot_Directory
И [Путь к базе]/TG-ChatBot/Anon-TG-ChatBot_Directory/default.vrd
Изменить пути в коде на [Путь к базе]/TG-ChatBot/TG-ChatBot_Directory
И [Путь к базе]/TG-ChatBot/TG-ChatBot_Directory/default.vrd
-
В default.vrd в обоих файлах изменить путь к основной базе
[Путь к базе]\TG-ChatBot -
В 1С пользователь Administrator, пароль nqROGWc6IAdmin
4.1 Администрирование → Данные бота (Сервис) → URL WEB-Сервера
Изменить url самого сервера с моего на ваш.4.2 Администрирование → Данные бота (Сервис) → Путь файла подарка
Изменить путь сохранения файлов подарка пользователям.
[Путь к базе]\TG-ChatBot\Document4.3 Администрирование → Установить WebHook → URL
Проверить, что URL из пункта 4.1 попал на форму4.4 Запустить обработку "Установить WebHook"
Результат в окне ответа должен быть {"ok":true,"result":true,"description":"Webhook was set"}4.5 Запустить тонкий клиент или веб-клиент на сервере для активации регламентных заданий (в варианте файловой ИБ)