Prepare for first run
This commit is contained in:
122
README
122
README
@@ -1,113 +1,67 @@
|
||||
aleesa-weba
|
||||
------------------------------------------------------------------------------
|
||||
Клиент для различных веб-приложений и API.
|
||||
Работает по протоколу Redis pubsub.
|
||||
aleesa-webapp
|
||||
-----------------------------------------------------------------------------------------------------------------------
|
||||
Клиент для различных веб-приложений и API. Работает по протоколу Redis pubsub.
|
||||
|
||||
|
||||
Механика работы
|
||||
------------------------------------------------------------------------------
|
||||
Клиент подписан на все каналы, попадающие под шаблон "webapp:*" (без кавычек).
|
||||
Предполагается, что есть специальный канал "broadcast", на который
|
||||
подписываются все модули и, если надо, ответ в такой канал получают все.
|
||||
-----------------------------------------------------------------------------------------------------------------------
|
||||
Клиент подписан на на redis-канал craniac. В этот канал пишет другой демоночек - aleesa-misc.
|
||||
|
||||
Формат протокола - это json с полями:
|
||||
from - модуль, который решил отправить запрос.
|
||||
chatid - чат, из которого сделан вызов
|
||||
userid - пользователь, на чью фразу мы отвечаем
|
||||
message - оригинальный текст сообщения
|
||||
plugin - плагин, нужный для генерации ответа
|
||||
misc - объект с дополнительными полями, здесь все поля опциональны и
|
||||
специфичны для задействованных плагинов
|
||||
|
||||
N.B.
|
||||
При запуске нового приложения, которое будет пользоваться этим клиентом, оно
|
||||
должно "поприветствовать" клиента по всем каналам, для того, чтобы сработала
|
||||
внутренняя логика и клиент подписался на новые каналы. Если этого не сделать,
|
||||
то первое сообщение по новому каналу будет "проглочено" и "потрачено" на
|
||||
подписку на этот канал.
|
||||
|
||||
|
||||
Плагины и команды
|
||||
------------------------------------------------------------------------------
|
||||
TBD: Описать список плагинов и команд, которые их триггерят.
|
||||
Формат протокола
|
||||
|
||||
|
||||
Плагин для работы с flickr
|
||||
------------------------------------------------------------------------------
|
||||
Этот плагин используется для добычи ссылок на картинки в разных "картиночных"
|
||||
командах бота.
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
Этот плагин используется для добычи ссылок на картинки в разных "картиночных" командах бота.
|
||||
|
||||
Есть скрипт, который поможет с регистрацией приложения в api Flickr -
|
||||
bin/flickr_init.pl он достанет все нужные ключи и секреты к ним.
|
||||
Есть скрипт, который поможет с регистрацией приложения в api Flickr - bin/flickr_init.pl он достанет все нужные ключи
|
||||
и секреты к ним.
|
||||
|
||||
До запуска этого скрипта, бот должен быть забутстраплен через bootstrap.sh.
|
||||
|
||||
Залогиньтесь https://identity.flickr.com/login и создайте app
|
||||
https://www.flickr.com/services/apps/create/apply/ в своём Flicker-овском
|
||||
аккаунте.
|
||||
Залогиньтесь 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" в конфиге либо закоменчен
|
||||
либо отсутствует.
|
||||
Запишите app key и secret https://home.openweathermap.org/api_keys в config.json. Удостоверьтесь, что параметр
|
||||
"verifier" в конфиге либо закоменчен либо отсутствует.
|
||||
|
||||
Далее, разлогиньтесь, это нужно, чтобы потом проще было достать параметр
|
||||
verifier.
|
||||
Далее, разлогиньтесь, это нужно, чтобы потом проще было достать параметр verifier.
|
||||
|
||||
Запустите bin/flickr_init.pl и следуте предлагаемым инструкциям - в итоге
|
||||
будет дана ссылка, которую надо скопипастить в браузер. По ссылке предложат
|
||||
залогиниться, далее надо будет разрешить приложению просматривать профиль и
|
||||
через один-два редиректа вы попадёте на example.com. Из адресной строки
|
||||
браузера надо скопировать параметр "verifier" и вписать его в config.json.
|
||||
Запустите bin/flickr_init.pl и следуте предлагаемым инструкциям - в итоге будет дана ссылка, которую надо скопипастить
|
||||
в браузер. По ссылке предложат залогиниться, далее надо будет разрешить приложению просматривать профиль и через
|
||||
один-два редиректа вы попадёте на example.com. Из адресной строки браузера надо скопировать параметр "verifier" и
|
||||
вписать его в config.json.
|
||||
|
||||
Чтобы сохранить в бд плагина API access token для нормальной работы плагина,
|
||||
второй раз запустите bin/flickr_init.pl. На этом всё.
|
||||
Чтобы сохранить в бд плагина 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 предлагает всё необхдимое
|
||||
для работы плагина.
|
||||
https://home.openweathermap.org/api_keys . Free plan предлагает всё необхдимое для работы плагина.
|
||||
|
||||
Когда api key будет создан, его нужно вписать в config.json в секцию
|
||||
openweathermap в качестве appid. На этом всё.
|
||||
Когда 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 и так далее.
|
||||
-----------------------------------------------------------------------------------------------------------------------
|
||||
Понадобится perl, cpanm и local::lib, а также несколько разных devel-пакетов для разных библиотек. Как правило, это
|
||||
находится методом тыка, но точно понадобятся sqlite-devel, bdb-devel (или db-devel), hiredis-devel. Кроме того,
|
||||
понадобятся development tools - gcc, gcc-g++, perl-devel, make, cmake и так далее.
|
||||
|
||||
В каталоге с приложением под целевым пользователем запускаем bash bootstrap.sh
|
||||
Ждём с надеждой, что оно не обломится в пути.
|
||||
Приложение тестировалось на alpine linux x86_64 3.12, со встроенным perl-5.32.1
|
||||
|
||||
Если всё хорошо, то после создания data/config.json из data/config_sample.json
|
||||
и получения ключей и настройки модулей openweathermap и flickr, можно
|
||||
запускать приложение. Оно запустится как unix daemon.
|
||||
В каталоге с приложением под целевым пользователем запускаем bash bootstrap.sh Ждём с надеждой, что оно не обломится в
|
||||
пути.
|
||||
|
||||
Если всё хорошо, то после запуска redis-а, создания data/config.json из data/config_sample.json, можно запускать и само
|
||||
приложение.
|
||||
|
||||
Тест
|
||||
------------------------------------------------------------------------------
|
||||
Версии перловых модулей в 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. Ошибок быть
|
||||
не должно ни в консоли теста ни в логе, к которому мы притэйлились.
|
||||
|
||||
Если тесты работают не взрываясь - работает и приложение.
|
||||
В каталоге contrib находится скрипт для alpine linux, системы инициализации openrc. Этот скрипт достаточно положить В
|
||||
/etc/init.d/aleesa-misc сконфигурить сервис по инструкции выше и после этого сервис запускается командой:
|
||||
service aleesa-misc start
|
||||
в автозагрузку его можно прописать через команду
|
||||
rc-update add aleesa-misc default
|
||||
|
||||
Reference in New Issue
Block a user