Введение

Сервисные команды предназначены для управления агентом, получения логов, обновления и так далее. Эти команды

  • Создаются на основании действий пользователя в административной панели White Server или планировщиком задач White Server
  • Имеют ту же структуру, что и запросы от агрегатора к агенту
  • Отображаются в административной панели White Server так же, как и задачи от агрегаторов.

Агент отправляет запрос метода GetTask через RPC (удаленный вызов процедур) и получает сервисную задачу в ответ. Подготовив ответ, агент отправляет его через RPC с помощью AnswerTask.

Пример взаимодействия:

  1. Агрегатор прислал запрос CancelOrder
  2. Агент заберет массив данных params этого запроса через задачу GetTask
  3. Агент вернет ответ через задачу AnswerTask
  4. Из AnswerTask содержимое массива taskResponse уйдет агрегатору в асинхронный ответ, причем тоже в массив данных taskResponse.

RPC

RPC — это удаленный вызов процедур. Для отправки запросов используются общий url для агентов и мониторов — https://{{serverName}}/wsagent/api/v2/agents/rpc

Структура RPC запросов

Структура запросов от агентов и мониторов общая, ответы сервера тоже.

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

{
   "rpcTaskType":"string",
   "params":{
   }
}
JSON

Параметр

Тип

Обязательный

Описание

taskTypestringдаТип задачи. Может быть 
  • GetTask — получить задачу
  • AnswerTask — вернуть ответ по задаче.
params
нетМассив данных полезной нагрузки. Соответствует модели запроса params для агрегатора.

Успешный ответ:

{
  "result": {
   }
}
JSON

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

{
 "error": {
  /// детализация ошибки    
  }
}
JSON

GetTask

GetTask — тип получения задачи. 

{
   "rpcTaskType":"string",
   "params":{
      "taskGuid":"guid",
      "taskResponse":{
      }
   }
}
JSON
{
    "rpcTaskType": "GetTask"
}
CODE
{
  "result": {
    "taskGuid": "guid",
    "taskType": "string",
    "objectId": 0,
    "pluggedSystemId": "string",
    "timeout": 0,
    "aggregatorId": 0,
    "params": {
    }
  }
}
JSON
{
  "error": {
    "wsError": {
      "code": "string",
      "text": "string"
    }
  }
}
JSON

Параметр

Тип

Обязательный

Описание

-taskGuidguidдаУникальный код этой задачи. Используется при получении задачи через очередь
-taskTypestring enumдаТип задачи
-objectIdintнет

Код ресторана в системе лицензирования:

  • Обязательно для задач от внешних агрегаторов к objectId ресторана, например, для CreateOrder
  • Необязательно для системных задач к агенту, например, для ServiceGetAgentSettings.
-pluggedSystemIdstringнетИдентификатор подключаемой системы, например, NetName сервера r_keeper. Берется из поля pluggedSystems:systemName из ответа на модель GetAgentInfo
-timeoutintнетВремя ожидания ответа от агента в секундах
-aggregatorIdintнетКод агрегатора в системе лицензирования, который создал задачу
-paramsjson objectнетМассив данных соответствует модели запроса params для агрегатора

AnswerTask

AnswerTask — тип задачи, возвращающий ответ.

{
   "rpcTaskType":"AnswerTask",
   "params":{
      "taskGuid":"guid",
      "taskResponse":{
      }
   }
}
JSON
{
    "rpcTaskType": "AnswerTask"
}
CODE
{
  "result": {
   }
}
JSON
{
  "error": {
    "wsError": {
      "code": "string",
      "text": "string"
    }
  }
}
JSON