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