# Формат сообщений Обмен сообщениями происходит по протоколу redis pubsub. Сообщения передаются в формате JSON. | Имя поля | Тип | Примечание | |----------|--------|-------------| | from | string | Имя отправителя сообщения. Может быть как chat display name так и user display name, в зависимости от того, кто отправил сообщение. | | chatid | string | Уникальный идентификатор чата, из которого было отправлено сообщение. Если чат приватный, это может быть userid отправителя. | | userid | string | Уникальный идентификатор отправителя. Или чата, если сообщение отправляется анонимно. | | threadid | string | Если чат поддерживает тредики, уникальный идентификатор треда, в котором ведётся беседа. Если тредики не поддерживаются, поле отсутствует или пустое. | | message | string | Тело сообщения. | | plugin | string | Идентификатор плагина, от которого изначально пришло сообщение. Например, IRC или Telegram или Jabber. Должно сохраняться на протяжении всей цепочки обработки сообщения - в этот redis-pubsub канал отвечает последний из обработчиков/генераторов сообщения. | | mode | string | Режим, в котором происходит общение. Обычно либо public, либо private. | | misc | struct | Структурка с дополнительными полями. | | Имя поля misc | Тип | Примечание | |---------------|--------|------------| | answer | int | Может быть 0 или 1. Если поле отсутствует, подразумевается 0. 0, если ответ не требуется и 1, если требуется. | | bot_nick | string | Человекочитаемое имя (display name) бота в чяте. Проставляется по необходимости. (если в процессе генерации ответа требуется имя бота) | | csign | csign | Символ команды в чате. Это может быть ! / . или что-либо иное. С этого символа начинаются простые команды. | | fwd_cnt | int | Количество пересылок сообщений. Необходим для разрыва петель бесконечной пересылки сообщений. Выставляется в 0 демоном-генератором сообщения (например, IRC, Telegram, Jabber), инкрементируется каждым обработчиком, по достижении максимального значения (обычно 5) сообщение должно быть сброшено, а в лог должен упасть варнинг об этом событии. | | good_morning | int | Выставляется в 1, если это утреннее приветствие (message of the day). 0 в противном случае. | | msg_format | int | Выставляется в 1, если требуется/возможно произвести форматирование сообщения. | | user_name | string | Имя пользователя (display name) к которому производится обращение в ответной фразе. Зополняется по необходимости. | Крайне желательно явно заполнять все поля в json-е, чтобы не нагружать логику "угадывания" в соответствующих демонах. JSON-чики могут быть как в одну строку, так и форматироованы. Кроме наличия всех полей с корректными данными, крайне желательно, чтобы сами json-ы были валидными. loose json и human json здесь недопустимы.