4.5 KiB
4.5 KiB
Формат сообщений
Обмен сообщениями происходит по протоколу 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 здесь недопустимы.