r_keeper

Очередь сообщений

Подключение к очереди сообщений необходимо для:

  1. получения ответов по асинхронным задачам от агентов (async tasks);
  2. получения событий от агентов (agent events).
Подключение к очереди осуществляется методом Long Polling. Необходимо выполнить Post запрос по адресу:
POST https://{{serverName}}/wsserverlp/api/v2/aggregators/ListenQueue
Long Polling — это технология, которая позволяет получать информацию о новых событиях с помощью «длинных запросов». Сервер получает запрос, но отправляет ответ на него не сразу, а лишь тогда, когда произойдет какое-либо событие (например, поступит новое событие от кассы), либо истечет заданное время ожидания (20 секунд).

В теле запроса необходимо указать тип очереди.
{
  "queueType": "enum string"
}

Парсинг ответов

  1. Проверяем наличие ветки «error». Если нет, то хорошо, парсим дальше. Если есть, то парсим ошибку.
  2. Проверяем наличие ветки «responseCommon».
  3. В ветке «responseCommon» проверяем наличие «asyncCode»: «NoOperations». Если есть, то значит нет новых задач/эвентов.
  4. В ветке «responseCommon» парсим «taskType».
  5. Если «taskType» = «Event», то парсим ветку «eventResponse» и используем идентификатор ресторана objectId.
  6. Иначе «taskType» = название команды, т.е. парсим ветку «taskResponse».
// В очереди нет данных
{
  "responseCommon": {
    "asyncCode": "NoOperations"
  }
}
// Поступил ответ по задаче
{
  "taskResponse": {
  ----------task response json---------
  },
  "responseCommon": {
    "taskGuid": "guid string",
    "taskType": "enum string",
    "objectId": int
  }
}

// Произошла ошибка при выполнении задачи
{
   "responseCommon": {
      "taskGuid": "guid string",
      "taskType": "enum string",
      "objectId": int
   },
   "error": {
         ----------error response json---------
   }
}
// Поступило событие от кассы
{
  "eventResponse": {
  ----------agent event response json---------
  },
  "responseCommon": {
    "taskType": "Event",
    "objectId": int
  },
  "error": {
      ----------error response json---------
  }
}