Общее описание

Возможно подключение к очередям сообщений для:

1. получения ответов по асинхронным задачам (async tasks);

2. получения событий от агентов находящихся в ресторанах (agent events).

Порядок подключения

Подключение к очереди осуществляется методом long polling (длинные опросы). Агрегатору необходимо выполнить Post запрос, по адресу:

POST https://{{serverName}}/wsserverlp/api/v2/aggregators/ListenQueue

Если будет сообщение, то вы сразу же получите ответ. Если сообщения нет, то Whiteserver будет держать соединение, до тех пор пока не поступит сообщение, или не пройдет 20 секунд. Затем агрегатор должен установить соединение заново.

В теле запроса необходимо указать тип очереди.

Формат запроса:

{
  "queueType": "enum string"
}


Тип очереди (queueType)Описание
AllQueuesСлушать все очереди
TaskQueueСлушать очереди асинхронных задач (tasks)
EventQueueСлушать очереди событий от агентов (agent events)

Последовательность парсинга ответов

1. Проверяем наличие ветки «error». Если нет, то хорошо парсим дальше. Если есть, то парсим ошибку.

2. Проверяем наличие ветки «responseCommon». Если есть, то хорошо, парсим дальше. Если нет, то ошибка.

3. В ветке «responseCommon» проверяем наличие «asyncCode»: «NoOperations». Если есть, то значит нет новых задач/эвентов. Если нет, то значит есть ответ парсим дальше.

4. В ветке «responseCommon» парсим «taskType».

4.1. Если «taskType» = «Event», то парсим ветку «eventResponse» и используем идентификатор ресторана objectId.

4.2. Иначе «taskType» = одной из команд. т.е. парсим ветку «taskResponse».

Ответ - Если нет данных

{
  "responseCommon": {
    "asyncCode": "NoOperations"
  }
}

Ответ - Если поступил ответ по задаче (task)

Успешный ответ на задачу
{
  "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---------
   }
}

Описание параметров


ПараметрТипОбязательныйОписание
taskResponse

Содержимое ответа по задаче
responseCommon

Общее содержимое по задаче (taskType - тип задачи, taskGuid - идентификатор задачи, objectId - идентификатор агента)
error

Содержимое ошибки (подробнее см соответствующий раздел)


Ответ - Событие от агента (agent event)

{
  "eventResponse": {
  ----------agent event response json---------
  },
  "responseCommon": {
    "taskType": "Event",
    "objectId": int
  },
  "error": {
      ----------error response json---------
  }
}

Описание параметров

ПараметрТипОбязательныйОписание
eventResponse

Содержимое сообщения от агента
responseCommon

Общее содержимое по задаче (taskType - тип задачи, taskGuid - идентификатор задачи, objectId - идентификатор агента)
error

Содержимое ошибки (подробнее см соответствующий раздел)


Ответ с ошибкой

Пример. При отсутствии авторизации вернется:

{
  "error": {
    "wsError": {
      "code": "error code string"
    }
  }
}

Описание параметров

ПараметрТипОбязательныйОписание
error

Содержимое ошибки (подробнее см соответствующий раздел)