VK: https://vk.com/aioniotis
Telegram: https://t.me/aioniotis
Сайт: https://athenaeum.digital/
Two-Digit Athenaeum - это облачная онлайн библиотека, расположенная по адресу https://athenaeum.digital. Книги в ней распространяются посредством отправки ботом сообщений в ВК и Telegram. Она состоит из:
- Сайта (html/css + js (ajax))
- Бэка (API и статика)
- CMS Для VK и Telegram
- Чат-бота для VK и Telegram
При этом, все, внезапно, реализовано на 1С:Enterprise и представляет из себя две базы/проекта EDT. Подобные разрозненные, на первый взгляд, механизмы, на самом деле, крепко связаны вокруг предметной области:
- Пользователь находит группу ВК (Телеграм), которая ведется из базы CMS
- Пользователь узнает о сайте / видит рекламу книги в группе
- Пользователь авторизуется на сайте и выбирает книгу
- Чат-бот ему её отправляет
- Чат-бот находится в группе ВК или Telegram
Всё это и есть Two-Digit Athenaeum
Репозиторий не представляет из себя универсальные механизмы - реализация местами может быть заточена сугубо под конкретные задачи базы, однако в нем все равно представлено много решений, которые можно использовать с минимальными переработками: Как уже было упомянуто ранее, проект состоит из 2-х баз
Данная база отвечает за медийную часть проекта. Основной целью было создать систему управления контентом, которая могла бы минимизировать мое участие в ведении группы. Весь реализованный функционал нацелен на автоматизацию всего, что можно автоматизировать в жизни админа и криейтера: создание постов из сырых данных, очередь и планирование публикаций во времени, регулярные посты (вроде дней рождений писателей, повторяющихся каждый год), создание постов на основе генератора случайных чисел (как, например, опросы о любимом авторе по нескольким случайным авторам из справочника) и пр.
В этом проекте реализованы:
-
Методы VK и Telegram API
Модули МетодыРаботыVK, МетодыРаботыTelegram
На основе наработок данного проекта были созданы библиотеки VKEnterprise и TelegramEnterprise. Для непосредественного использования гораздо удобнее взять сразу эти решения, однако здесь можно посмотреть на их использование:
- Постинг
- Создание опросов (VK)
- Получение статистики (общей и по постам) (VK)
- Публикация историй (VK)
- Лайки и репосты (VK)
- Авторизация пользователей на сайте
- Работа с рекламным кабинетом (VK)
- Сокращение ссылок через VK.CC
- Некоторые иные мелкие механизмы
-
Работа с ImageMagick (Статья на Инфостарте)
Модуль МетодыОбработкиИзображений
- Формирование карточек разных размеров по изображению
- Текст на картинках
- Наложение одной картинки на другую
- Создание комплексных пано на основе нескольких картинок, теней, текста
-
Непосредственно сам бизнес-процесс
Модуль МетодыРегламентныхЗаданий, МетодыОбработкиИзображений, МетодыФормированияПостов
- Очередь постов и расписание постинга с автоматической публикацией
- Простые посты картинка + текст и сложные посты из нескольких картинок с обработкой ImageMagick - этакие пайплайны, превращающие текст и двоичные данные из справочников/документов непосредственно в цепочки запросов к TG и VK с нужными данными
- Посты с аудиовложениями
Ферапонт - имя телеграм бота, рассылающего книги из библиотеки, однако помимо бота в этот проект еще вошли методы для работы сайта. Для уменьшения нагрузки на сервер (1С все-таки) была выбрана следующая схема веб-приложения
- Сам сайт непосредственно располагается на neocities (это такой сервис, позволяющий публиковать сатические веб-сайты. Нечто вроде GitHub Pages). Есть несколько статических страниц и ajax скрипты
- Вся информация, которая не изменяется во времени (или изменяется крайне редко), хранится тоже там - в виде json файлов. Эти json файлы формирует по алгоритму 1С на основе информации из справочников и заливает в каталог сайта на neocities в нужной структуре. Т.е., например, есть статичная страница book.html (для показа книг), загружающая нужную книгу при помощи ajax. Просто обращается этот ajax не к моему серверу - к бэку, а запрашивает статический json у того же neocitites. ... PROFIT
- Все, что статикой заменить никак нельзя, т.е. профиль и авторизацию, обрабатывает http-сервисами 1С. Профиль обрабатывается ajax запросами непосредственно к api, авторизация работает через Telegram и VK - к 1С обращаются уже они.
В этом проекте реализованы:
-
Небольшие примеры использования 1С как RestAPI
Модуль МетодыApiСайта
- Формирование json для ajax
- Авторизация через Телеграм и ВК
- Профили пользователей и статистика
-
Бот (единый механизм для VK и ТГ, ветвящийся на отправке сообщений)
Модуль МетодыБота
- Отправка текста и смайлов
- Работа с клавиатурами
- Рассылка напоминаний
-
Автотесты http-сервисов
Модуль МетодыТестирования
Моя попытка в автоматизированное тестирование. Обусловленно жесточайщей необходимостью - трястись после каждой правки в механизм бота и проверять 20+ пунктов, начиная от регистрации нового пользователя в каждую соц. сеть (что требует миллион телодвижений), заканчивая отправкой книги по коду, просто невыносимо. Выглядит это тестирование так:
- Есть константа ЗаписыватьТесты. Когда она Истина - все сервисы, где прописано условие проверки этой константы, начинают записывать свои запросы в специальный справочник как:
- Имя Метода
- JSON тела, если есть (Строкой)
- Заголовки (как есть из HttpСервисЗапрос - в ХранилищеЗначений)
- Параметры запроса (как есть из HttpСервисЗапрос - в ХранилищеЗначений)
- После записи этот тест можно запустить. В процессе запуска он проходит 3 этапа
- Процедура предобработки - специально написанная процедура, добавленная в перечень процедур предобработки для конкретного теста. В нее попадают записанные в Спр. данные и их можно обработать. Можно обработать и что-нибудь другое. Так, например, при запуске теста регистрации, данная процедура чистит Telegram ID у моего пользователя, чтобы зарегистрировался новый, сохраняя его в доп. параметры для последющей сверки.
- Общая процедура отправки запроса на свой сервис, создающая запрос из сохраненных (и, возможно, подредактированных в предыдущем пункте) данных
- Процедура постобработки - специально написанная процедура, добавленная в перечень процедур предобработки для конкретного теста. В нее попадает Ответ от сервиса и доп. параметры из пред. обработки. Если вернуться к примеру с регистрацией, то тут я достаю сохраненный ранее ID, ищу в базе, создался ли новый пользователь с таким, после чего удаляю этого нового пользователя и возвращаю ID своему. Ошибку в прохождении теста я определяею Если Тогда ВызватьИсключение.
Информация о выполнении или невыполнении пишется в РС
- Есть константа ЗаписыватьТесты. Когда она Истина - все сервисы, где прописано условие проверки этой константы, начинают записывать свои запросы в специальный справочник как:
Если у вас есть интересные идеи или вы пользуетесь билиотекой, но вам чего-то не хватает - присылайте. Помимо GitHub, у нас есть та самая группа ВК - можно писать в обсуждения.
Все статьи из недр проекта на Инфостарте:
https://infostart.ru/1c/articles/1982182/
https://infostart.ru/1c/articles/1996431/
https://infostart.ru/1c/articles/1923036/
Библиотеки TelegramEnterprise и VKEnterprise использют некоторые функции из проекта Коннектора
Copyright 2017-2023 Vladimir Bondarevskiy под Apache License, Version 2.0 https://github.com/vbondarevsky/Connector/
Используются методы HMAC SHA-256 и некоторые другие из БСП
Copyright (c) 2019, ООО 1С-Софт Все права защищены. Эта программа и сопроводительные материалы предоставляются в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) Текст лицензии доступен по ссылке: https://creativecommons.org/licenses/by/4.0/legalcode
В одном из прошлых релизов Для поднятия COM-соединения с 1С из node.js используется node-activex/winax
Copyright (c) 2023 Yuri Dursin под MIT
https://github.com/durs/node-activex
https://www.npmjs.com/package/winax