Azure - приложение логики для служебной шины - передача JSON - PullRequest
0 голосов
/ 11 октября 2019

Я хочу передать нижеприведенный ответ JSON, полученный от события http в Приложение логики Azure в Очередь служебной шины Azure .

{
  "properties": {
    "data": {
      "properties": {
        "alertContext": {
          "properties": {},
          "type": "object"
        },
        "essentials": {
          "properties": {
            "alertContextVersion": {
              "type": "string"
            },
            "alertId": {
              "type": "string"
            },
            "alertRule": {
              "type": "string"
            },
            "alertTargetIDs": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "description": {
              "type": "string"
            },
            "essentialsVersion": {
              "type": "string"
            },
            "firedDateTime": {
              "type": "string"
            },
            "monitorCondition": {
              "type": "string"
            },
            "monitoringService": {
              "type": "string"
            },
            "originAlertId": {
              "type": "string"
            },
            "resolvedDateTime": {
              "type": "string"
            },
            "severity": {
              "type": "string"
            },
            "signalType": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "schemaId": {
      "type": "string"
    }
  },
  "type": "object"
}

Я использовал многовыражения вроде encodebase64(string(triggerBody())) но выдает ошибку.


ExpressionEvaluationFailed. The execution of template action 'For_each' failed: the result of the evaluation of 'foreach' expression '@encodebase64(string(triggerBody()))' is of type 'String'. The result must be a valid array.

Вот изображения:

  1. json-ответ, полученный логикой в ​​виде webhook: https://github.com/arindam-b/images/blob/master/Logicapp1.PNG

  2. Выражение в шаге,для преобразования JSON в строку, но ищет foreach: https://github.com/arindam-b/images/blob/master/Logicapp2.PNG

  3. Шаг 2 полный вид с частью служебной шины: https://github.com/arindam-b/images/blob/master/Logicapp3.PNG

Большое спасибо за ваш ценный вклад.

1 Ответ

1 голос
/ 14 октября 2019

Во-первых, ваш ответ JSON находится в application/json, вы можете выполнить действие for_each, оно будет похоже на рисунок ниже. И предположим, что вы хотите отправить сообщение в служебную шину. Вход For_each - triggerbody(), а содержание сообщения зависит от вашего требования: выберите свойство в ваших данных json. Мой тестовый контент - это свойство body, поэтому оно должно быть items('Fior_each')['body'].

enter image description here

Вторая сцена - это ваш ответ json в текстовом / простом илидругие типы, в этой ситуации это не сработает, вы используете Request Body JSON Schema. Вы должны разобрать их по типу json, а затем выбрать свойство. Поток будет как на картинке ниже. Вход Parse_JSON равен triggerbody(), а вход for_each равен body('Parse_JSON').

enter image description here

Прежде чем я спросил, хотите ли вы передатьВ целом, от json до сообщения, вы подтверждаете это, однако из вашего описания и вашей фотографии, вы хотите вырезать ваши данные json и выбрать свойство, которое вы хотите. Поэтому, если вы хотите сохранить весь JSON, вы можете хранить его без схемы.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...