get_messages
Чтобы получить сообщения из загрузчика сообщений, используйте метод messages/get_messages. Предварительно загрузите сообщения в сессию с помощью метода messages/load_interval.
Конечная точка
svc=messages/get_messages¶ms={
"indexFrom": <uint>,
"indexTo": <uint>,
"timeFrom": <uint>,
"timeTo": <uint>,
"filter": "<text>",
"flags": <uint>,
"flagsMask": <uint>,
"loadCount": <uint>
}
Пример использования этого запроса приведен на странице Примеры запросов сообщений.
Параметры
Все параметры необязательные.
| Параметр | Описание |
|---|---|
indexFrom |
Индекс первого запрашиваемого сообщения. Значение по умолчанию — 0. |
indexTo |
Индекс, следующий за последним запрашиваемым сообщением: сообщение с этим индексом не возвращается. Например, "indexFrom":8,"indexTo":9 возвращает одно сообщение с индексом 8. Если значение больше количества загруженных сообщений, возвращаются сообщения до последнего. Если indexFrom больше или равен indexTo или количеству загруженных сообщений, возвращается пустой массив. |
timeFrom |
Начало интервала. |
timeTo |
Конец интервала. |
filter |
Фильтр, поиск по параметрам pos и p. См. Фильтрация параметров сообщений. |
flags |
Маска, которая применяется к флагам сообщения, чтобы исключить сообщения из возвращаемого результата. См. Исключение сообщений по флагам. Значение по умолчанию — 0. |
flagsMask |
Значение, с которым сравнивается результат применения flags к флагам сообщения. См. Исключение сообщений по флагам. Значение по умолчанию — 0. |
loadCount |
Количество сообщений, которые необходимо вернуть (0xffffffff — все найденные). |
Логика метода расширена: можно использовать как прежнюю логику indexFrom/indexTo, так и новые:
| Логика | Описание |
|---|---|
timeFrom/timeTo |
Определяют время начала и конца сообщений. |
timeFrom/loadCount |
Определяют время начала сообщений. Метод возвращает первые loadCount сообщений начиная с timeFrom. |
timeTo/loadCount |
Определяют время конца сообщений. Метод возвращает последние loadCount сообщений до timeTo включительно. |
Чтобы использовать этот метод, в запросе должна быть указана хотя бы одна из перечисленных выше пар параметров.
Исключение сообщений по флагам
В этом методе параметры flags и flagsMask работают иначе, чем в messages/load_interval: они не отбирают сообщения, а исключают их из возвращаемого результата. Сообщение не возвращается, если flags не равен 0 и результат побитового И флагов сообщения (f) и flags равен flagsMask. Если flags равен 0, сообщения не исключаются.
flags |
flagsMask |
Исключаемые сообщения |
|---|---|---|
| 0xFF00 | 0x0000 | Сообщения с данными. |
| 0xFF00 | 0x0600 | События. |
| 0xFF00 | 0x4000 | Сообщения о сработавших уведомлениях. |
Флаги сообщений описаны на странице Сообщения.
Фильтрация параметров сообщений
Параметр filter можно использовать с любой логикой. Поиск выполняется по параметрам pos и p. Фильтр не влияет на остальные поля сообщения (например, t, f, tp, i, o): они возвращаются всегда. Если ни один параметр объекта pos не подходит под фильтр, pos возвращается пустым объектом.
Пример возвращаемого результата (без фильтрации):
[
{
"t": 1426233861,
"f": 7,
"tp": "ud",
"pos": {
"y": 53.84541,
"x": 27.4470783333,
"z": 0,
"s": 25,
"c": 285,
"sc": 255
},
"i": 0,
"o": 0,
"p": {
"adc1": 0,
"pre2": 123,
"param": 24,
"param5": 43
}
}
]
Пример фильтра:
"filter":"pos.x,p.pre*,p.param?"
Результат с фильтрацией:
[
{
"t": 1426233861,
"f": 7,
"tp": "ud",
"pos": {
"x": 27.4470783333
},
"i": 0,
"o": 0,
"p": {
"pre2": 123,
"param5": 43
}
}
]
После фильтрации возвращаются значение pos.x, значения параметров объекта p, которые начинаются с pre, и значения параметров объекта p, которые начинаются с param и содержат еще один символ в конце (например, param1 подходит, а param — нет).
Количество параметров, перечисленных через запятую, не ограничено. Звездочка (*) заменяет 0 или более символов, вопросительный знак (?) — один символ.
Ответ
[ /* массив сообщений */
{ ... }, /* сообщение */
{ ... } /* сообщение */
]
Форматы сообщений описаны на странице Сообщения.
Коды ошибок
| Код ошибки | Описание |
|---|---|
| 4 | Неверные входные параметры (не указана ни одна из пар параметров) или в сессию не загружены сообщения. |