Команда chat
Назначение команды
Команда chat
позволяет запрашивать и получать сообщения чата, а также передавать в чат новые сообщения. Чат в блоке MC-4-DSL-3U организован как упорядоченный список сообщений, каждое из которых имеет следующие атрибуты:
- уникальный идентификатор;
- время написания;
- имя пользователя, написавшего сообщение;
- хост (IP адрес), с которого пользователь передал сообщение;
- текст сообщения.
Идентификатор сообщения - целое число, увеличивающееся с каждым новым сообщением чата.
Ключи запроса
Ключ | Тип значения | обязательный | Описание |
cmd | строка | да | "chat" - имя команды |
last | число | да | Идентификатор последнего полученного сообщения или 0 чтобы получить все сообщения. |
text | строка | нет | Текст передаваемого в чат сообщения. |
Если в запросе присутствует ключ text
, то его значение помещается в чат как новое сообщение.
Если ключ last
содержит ненулевое значение, в ответ на запрос передаются только те сообщения чата, идентификатор которых больше указанного в поле last
значения. Это позволяет запрашивать у сервера только новые сообщения чата.
Если ключ last
равен нулю, сервер отдает все сообщения чата. Дополнительно к сообщениям передается ключ me
, позволяющий определить, как (под каким именем и с какого адреса) сервер "видит" пользователя, передавшего запрос.
Примеры запроса
{"cmd":"chat","last":0}
{"cmd":"chat","last":1502598091,"text":"Да, я здесь!"}
Права доступа
Для выполнения команды chat
не требуется наличия каких-либо прав.
Возвращаемые данные
Ключ | Тип значения | Описание |
cmd | строка | "chat" - имя команды |
me | строка | Ключ пристствует только если в запросе last=0. Значением является имя пользователя, пославшего запрос, и хост пользователя, пославшего запрос, соединенные символом "@". |
messages | объект | Сообщения чата. Ключи объекта являются идентификаторами сообщений, значениями являются объекты (хэши), каждый из которых описывает одно сообщение чата. Детально формат этих объектов описан ниже. |
Обратите внимание, что ключи хэша messages
имеют тип "строка", однако в запросе ключ last
должен иметь тип "число". Поэтому перед отправкой запроса с указанием идентификатора последнего полученного сообщения значение идентификатора должно быть преобразовано из строки в число.
Формат объекта сообщения чата:
Ключ | Тип значения | Описание |
time | число | Время написания сообщения (UNIX-time) |
user | строка | Имя пользователя, написавшего сообщение. |
host | строка | Имя хоста пользователя, написавшего сообщение. |
text | строка | Текст сообщения. |
Примеры ответов
{ "cmd":"chat", "me":"mike@[192.168.0.75]", "messages":{ "1502598091":{ "time":1502701826, "user":"john", "host":"[192.168.0.58]", "text":"Михаил, ты здесь?" }, "1502598092":{ "time":1502701917, "user":"mike", "host":"[192.168.0.75]", "text":"Да, я здесь!" } } }
{"cmd":"chat","messages":{}}