4.0 KiB
Документация по Aleesa-bot
Documentation is in Russian language because of project intended for use and develop by russian speaking community.
Что такое Aleesa-bot
Многосервисный бот. Сервисы для которого достаточно просто реализовывать на различных ЯП, потому что используются универсальные форматы общения между различными компонентами системы.
Зачем это нужно
Пока, как концепт бота, который умеет в несколько разных протоколов.
Архитектура проекта
Архитектура бота предполагает наличие роутера, фронтэнда и бэкэнда.
В текущей схеме реализованы фронтэнды для telegram, irc, jabber и cli протоколов. А также для бэкэнда реализованы бредогенератор, простые веб-клиенты для разных сервисов, и некоторые другие бэкэнд-обработчики.
Роутер
Во главе угла стоит роутер сообщений. Он принимает сообщения от фронт-энд-ов (если требуется, обрабатывает их) и направляет их в соответствующие обработчики на бэкэнде. Взаимодействие происходит по каналам redis pub-sub.
N.B. Поскольку обмен сообщениями между компонентами происходит в формате json, необходимо, чтобы этот json был валидным: числа были числами, а не строками. По соображениям совместимости не используются значения true и false, т.к. в некоторых яп при формировании json-а они могут стать 1 и 0, "true" и "false", "ok" и "false", "yes" и "no", что не является валидным с точки зрения json-а.
Фронт-энд
Фронт-энд части реализуют протоколы чатиков - irc, telegram, jabber итд. Принятые из чятиков сообщения всегда отправляются в redis-канал роутера, по протоколу redis pubsub.
Бэк-энд
Бэкэнд принимает в свой канал сообщения и обрабатывает их. В зависимости от того, требуется ли ответ, отвечает в канал из поля From.
Предполагается, что входное сообщение бэк-энд обработчик получает от роутера, но это не обязательно так (на текущий момент все бэк-энд-обработчики получают входящие сообщения от роутера).
Предполагается, что бэкэнд отвечает непосредственно отправителю (то есть фронтэнду), но это не обязаетельно так (на текущий момент все бэк-энд-обработчики отвечают изначальному отправителю сообщения).
Что делает Aleesa-bot-а интересным
То, что реализовывать дополнительные сервисы можно на любом ЯП. + добавить простенькую логику по отлову и направлению сообщения в рооутере (Впрочем, это не сложно и даже питонист сможет по образу и подобию реализованного, написать свой роут).