Справочный центр Wialon

get_messages

Чтобы получить сообщения из загрузчика сообщений, используйте метод messages/get_messages. Предварительно загрузите сообщения в сессию с помощью метода messages/load_interval.

Конечная точка

Copied!
svc=messages/get_messages&params={
  "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 возвращается пустым объектом.

Пример возвращаемого результата (без фильтрации):

Copied!
[
    {
	"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
	}
    }
]

Пример фильтра:

Copied!
"filter":"pos.x,p.pre*,p.param?"

Результат с фильтрацией:

Copied!
[
       {
		"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 или более символов, вопросительный знак (?) — один символ.

Ответ

Copied!
[	/* массив сообщений */
	{ ... },	/* сообщение */
	{ ... }		/* сообщение */
]

Форматы сообщений описаны на странице Сообщения.

Коды ошибок

Код ошибки Описание
4 Неверные входные параметры (не указана ни одна из пар параметров) или в сессию не загружены сообщения.

Если вы заметили ошибку в тексте, пожалуйста, выделите её и нажмите Ctrl+Enter.