= Команда 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":{}}`