Очереди сообщений
Общее описание
Возможно подключение к очередям сообщений для:
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 | Содержимое ошибки (подробнее см соответствующий раздел) |