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. Ошибок быть не должно ни в консоли теста ни в логе, к которому мы притэйлились. Если тесты работают не взрываясь - работает и приложение.