| | 1 | = Команда chat = |
| | 2 | |
| | 3 | == Назначение команды == |
| | 4 | |
| | 5 | Команда `chat` позволяет запрашивать и получать сообщения чата, а также передавать в чат новые сообщения. Чат в блоке MC-4-DSL-3U организован как упорядоченный список сообщений, каждое из которых имеет следующие атрибуты: |
| | 6 | * уникальный идентификатор; |
| | 7 | * время написания; |
| | 8 | * имя пользователя, написавшего сообщение; |
| | 9 | * хост (IP адрес), с которого пользователь передал сообщение; |
| | 10 | * текст сообщения. |
| | 11 | |
| | 12 | Идентификатор сообщения - целое число, увеличивающееся с каждым новым сообщением чата. |
| | 13 | |
| | 14 | == Ключи запроса == |
| | 15 | |
| | 16 | || '''Ключ''' || '''Тип значения''' || '''обязательный''' || '''Описание''' || |
| | 17 | || cmd || строка || да || "chat" - имя команды || |
| | 18 | || last || число || да || Идентификатор последнего полученного сообщения или 0 чтобы получить все сообщения. || |
| | 19 | || text || строка || нет || Текст передаваемого в чат сообщения. || |
| | 20 | |
| | 21 | Если в запросе присутствует ключ `text`, то его значение помещается в чат как новое сообщение. |
| | 22 | |
| | 23 | Если ключ `last` содержит ненулевое значение, в ответ на запрос передаются только те сообщения чата, идентификатор которых больше указанного в поле `last` значения. Это позволяет запрашивать у сервера только новые сообщения чата. |
| | 24 | |
| | 25 | Если ключ `last` равен нулю, сервер отдает все сообщения чата. Дополнительно к сообщениям передается ключ `me`, позволяющий определить, как (под каким именем и с какого адреса) "видит" сервер пользователя, передавшего запрос. |
| | 26 | |
| | 27 | === Примеры запроса === |
| | 28 | |
| | 29 | `{"cmd":"chat","last":0}` |
| | 30 | |
| | 31 | `{"cmd":"chat","last":1502598091,"text":"Да, я здесь!"}` |
| | 32 | |
| | 33 | == Права доступа == |
| | 34 | |
| | 35 | Для выполнения команды `certinfo` не требуется наличия каких-либо прав. |
| | 36 | |
| | 37 | == Возвращаемые данные == |
| | 38 | |
| | 39 | || '''Ключ''' || '''Тип значения''' || '''Описание''' || |
| | 40 | || cmd || строка || "chat" - имя команды || |
| | 41 | || me || строка || Ключ пристствует только если в запросе last=0. Значением является имя пользователя, пославшего запрос, и хост пользователя, пославшего запрос, соединенные символом "@". || |
| | 42 | || messages || объект || Сообщения чата. Ключи объекта являются идентификаторами сообщений, значениями сообщений являются объекты (хэши), каждый из которых описывает одно сообщение чата. Детально формат этих объектов описан ниже. || |
| | 43 | |
| | 44 | Обратите внимание, что ключи хэша `messages` имеют тип "строка", однако в запросе ключ `last` должен иметь тип "число". Поэтому перед отправкой запроса с указанием идентификатора последнего полученного сообщения значение идентификатора должно быть преобразовано из строки в число. |
| | 45 | |
| | 46 | Формат объекта сообщения чата: |
| | 47 | |
| | 48 | || '''Ключ''' || '''Тип значения''' || '''Описание''' || |
| | 49 | || time || число || Время написания сообщения (UNIX-time) || |
| | 50 | || user || строка || Имя пользователя, написавшего сообщение. || |
| | 51 | || host || строка || Имя хоста пользователя, написавшего сообщение. || |
| | 52 | || text || строка || Текст сообщения. || |
| | 53 | |
| | 54 | === Примеры ответов === |
| | 55 | |
| | 56 | {{{ |
| | 57 | { |
| | 58 | "cmd":"chat", |
| | 59 | "me":"mike@[192.168.0.75]", |
| | 60 | "messages":{ |
| | 61 | "1502598091":{ |
| | 62 | "time":1502701826, |
| | 63 | "user":"john", |
| | 64 | "host":"[192.168.0.58]", |
| | 65 | "text":"Михаил, ты здесь?" |
| | 66 | }, |
| | 67 | "1502598092":{ |
| | 68 | "time":1502701917, |
| | 69 | "user":"mike", |
| | 70 | "host":"[192.168.0.75]", |
| | 71 | "text":"Да, я здесь!" |
| | 72 | } |
| | 73 | } |
| | 74 | } |
| | 75 | }}} |
| | 76 | |
| | 77 | `{"cmd":"chat","messages":{}}` |