измените заголовок Content-Type на application / cloudevents + json при публикации в сетке событий - PullRequest
0 голосов
/ 06 марта 2020

Я использую триггер «Когда получен HTTP-запрос», чтобы затем опубликовать sh несколько событий в сетке событий с помощью действия «Publi sh Event». For l oop прекрасно работает для разделения входящего JSON и создания события publi sh, но при этом publi sh завершается ошибкой с

{
  "error": {
    "code": "UnsupportedMediaType",
    "message": "The Content-Type header is either missing or it doesn't have a valid value. The content type header must either be application/cloudevents+json; charset=utf-8 or application/cloudevents-batch+json; charset=UTF-8. Report 'edf36bbd-9221-4882-8a29-2264ffb16d72:3:3/6/2020 2:18:20 PM (UTC)' to our forums for assistance or raise a support ticket.",
    "details": [
      {
        "code": "InvalidContentType",
        "message": "The Content-Type header is either missing or it doesn't have a valid value. The content type header must either be application/cloudevents+json; charset=utf-8 or application/cloudevents-batch+json; charset=UTF-8. Report 'edf36bbd-9221-4882-8a29-2264ffb16d72:3:3/6/2020 2:18:20 PM (UTC)' to our forums for assistance or raise a support ticket."
      }
    ]
  }
}

Я предполагаю, что заголовок из ввода используется при публикации, поэтому я попытался изменить заголовок при публикации, изменив заголовок в блоке Publish_Event следующим образом (непосредственно в представлении кода, поскольку это не поддерживается в пользовательском интерфейсе), поэтому я получаю следующее (часть заголовков добавлена ):

"Publish_Event": {
    "inputs": {
        "body": [
            {
                "data": "@items('For_each_2')",
                "eventType": "company-location",
                "id": "ID : @{items('For_each')['businessId']}",
                "subject": "Company Location changed"
            }
        ],
        "headers": {
            "Content-Type": "application/cloudevents+json; charset=utf-8"
        },
        "host": {
            "connection": {
                "name": "@parameters('$connections')['azureeventgridpublish']['connectionId']"
            }
        },
        "method": "post",
        "path": "/eventGrid/api/events"
    },
    "runAfter": {},
    "type": "ApiConnection"
}

Но это тоже не работает. Не удалось найти действие для внесения изменения.

Мой полный поток выглядит следующим образом: app logic flow

и в качестве тестовых данных у меня есть следующие JSON Я использую, чтобы отправить с почтальоном (немного упрощенно):

[
    {
        "id": 3603,
        "businessId": "QQTADOSH",
        "locations": [
            {
                "id": 5316,
                "businessId": "A-yelr3g"
            },
            {
                "id": 5127,
                "businessId": "A-c7i8gd"
            },
            {
                "id": 5403,
                "businessId": "A-fjdd2y"
            },
            {
                "id": 6064,
                "businessId": "A-rqvhz8"
            }
        ]
    },
    {
        "id": 3118,
        "businessId": "Cr11_Macan_111qa",
        "locations": [
            {
                "id": 4563,
                "businessId": "A-3bv860"
            }
        ]
    }
]

1 Ответ

1 голос
/ 09 марта 2020

Похоже на Официальную сетку событий Publi sh Соединитель не поддерживает Схема событий в облаке .

Вы можете установить topi c для принятия Схема таблицы событий , но я считаю, что это возможно только во время создания.

Лучше всего открыть запрос функции на UserVoice , чтобы добавить поддержку для этого и в тем временем, обходной путь должен был бы использовать HTTP-действие до Публикация в Custom Topi c.

Но обратите внимание, что Обходной путь может заключаться в создании полезной нагрузки события для отправки (и таких вещей, как получение ключа доступа из хранилища ключей вместо непосредственного сохранения его в рабочем процессе).

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