This repository has been archived on 2025-07-01 . You can view files and clone it, but cannot push or open issues or pull requests.
1e0181a2943952a62929c1a69ae335293a23fed4
aleesa-weba
------------------------------------------------------------------------------
Клиент для различных веб-приложений и API.
Работает по протоколу Redis pubsub.
Механика работы
------------------------------------------------------------------------------
Клиент подписан на все каналы, попадающие под шаблон "webapp:*" (без кавычек).
Предполагается, что есть специальный канал "broadcast", на который
подписываются все модули и, если надо, ответ в такой канал получают все.
Формат протокола - это json с полями:
from - модуль, который решил отправить запрос.
chatid - чат, из которого сделан вызов
userid - пользователь, на чью фразу мы отвечаем
message - оригинальный текст сообщения
plugin - плагин, нужный для генерации ответа
misc - объект с дополнительными полями, здесь все поля опциональны и
специфичны для задействованных плагинов
N.B.
При запуске нового приложения, которое будет пользоваться этим клиентом, оно
должно "поприветствовать" клиента по всем каналам, для того, чтобы сработала
внутренняя логика и клиент подписался на новые каналы. Если этого не сделать,
то первое сообщение по новому каналу будет "проглочено" и "потрачено" на
подписку на этот канал.
Плагины и команды
------------------------------------------------------------------------------
TBD: Описать список плагинов и команд, которые их триггерят.
Плагин для работы с flickr
------------------------------------------------------------------------------
Этот плагин используется для добычи ссылок на картинки в разных "картиночных"
командах бота.
Есть скрипт, который поможет с регистрацией приложения в api Flickr -
bin/flickr_init.pl он достанет все нужные ключи и секреты к ним.
До запуска этого скрипта, бот должен быть забутстраплен через bootstrap.sh.
Залогиньтесь https://identity.flickr.com/login и создайте app
https://www.flickr.com/services/apps/create/apply/ в своём Flicker-овском
аккаунте.
Запишите app key и secret https://home.openweathermap.org/api_keys в
config.json. Удостоверьтесь, что параметр "verifier" в конфиге либо закоменчен
либо отсутствует.
Далее, разлогиньтесь, это нужно, чтобы потом проще было достать параметр
verifier.
Запустите bin/flickr_init.pl и следуте предлагаемым инструкциям - в итоге
будет дана ссылка, которую надо скопипастить в браузер. По ссылке предложат
залогиниться, далее надо будет разрешить приложению просматривать профиль и
через один-два редиректа вы попадёте на example.com. Из адресной строки
браузера надо скопировать параметр "verifier" и вписать его в config.json.
Чтобы сохранить в бд плагина API access token для нормальной работы плагина,
второй раз запустите bin/flickr_init.pl. На этом всё.
Плагин OpenWeatherMap
------------------------------------------------------------------------------
Для работы погодного плагина надо заргистрироваться на сайте OWM
https://home.openweathermap.org/users/sign_in , залогиниться
https://home.openweathermap.org/users/sign_in и создать api key
https://home.openweathermap.org/api_keys . Free plan предлагает всё необхдимое
для работы плагина.
Когда api key будет создан, его нужно вписать в config.json в секцию
openweathermap в качестве appid. На этом всё.
Как это запустить?
------------------------------------------------------------------------------
Понадобится perl, cpanm и local::lib, а также несколько разных devel-пакетов
для разных библиотек. Как правило, это находится методом тыка, но точно
понадобятся zlib-devel, openssl-devel, sqlite-devel, bdb-devel (или db-devel).
Кроме того, понадобятся development tools - gcc, gcc-g++, perl-devel, make,
cmake и так далее.
В каталоге с приложением под целевым пользователем запускаем bash bootstrap.sh
Ждём с надеждой, что оно не обломится в пути.
Если всё хорошо, то после создания data/config.json из data/config_sample.json
и получения ключей и настройки модулей openweathermap и flickr, можно
запускать приложение. Оно запустится как unix daemon.
Тест
------------------------------------------------------------------------------
Версии перловых модулей в cpanfile не закреплены, поэтому после их бутстрапа
желательно проверить, что ничего не развалилось.
Для начала нужно запустить redis и удостовериться, что настройки в
data/config.json верны. После этого можно переходить к тестам.
Первый тест удостоверяется, что модули в принципе работают. Запускаем
bin/test-sub.pl, потом bin/test-pub.pl. В консоли, где запущен bin/test-sub.pl
должны появиться сообщения, визуально похожие на json. При этом ошибок быть не
должно.
Второй тест тыкает в приложение и удостоверяется, что оно формально работает.
Запускаем само приложение bin/aleesa-weba, оно уходит в фон. Притэйливаемся
к его логам (настройки в data/config.json). Запускаем bin/test.pl. В консоли
этого скрипта должны начать появляться сообщения, похожие на json. Ошибок быть
не должно ни в консоли теста ни в логе, к которому мы притэйлились.
Если тесты работают не взрываясь - работает и приложение.
Description
Languages
Perl
99.5%
Shell
0.5%