Доступ к параметрам почтового запроса в веб-перехватчике Azure

Я пытаюсь прочитать параметры запроса URL-адреса из POST , поступающего в мой веб-перехватчик Azure (PowerShell).

Мой веб-хук получает запрос POST, например:

      Content-Type: text/plain; charset=utf-8
POST https://{notificationUrl}?validationToken={opaqueTokenCreatedByMicrosoftGraph}

Как вы заметили, здесь речь идет о создании подписки на Microsoft Graph . Однако я не хочу засорять этот пост слишком большим количеством деталей, потому что я думаю, что мой вопрос достаточно общий: как читать параметры POST в веб-перехватчике Azure.

Runbook, прикрепленный к этому веб-перехватчику ( на основе этого ), по-видимому, требует, чтобы все клиентские данные поступали через один параметр с именем . я умею читать WebhookName, RequestBody, а также RequestHeaderвнутри . Однако я не знаю, как прочитать параметр запроса URL в запросе POST, который достигает моего веб-перехватчика.

В частности, мне нужно получить доступ к этому . Он не отображается в . Я также попытался удалить Webhookdataparam из моего модуля Runbook, но тогда абсолютно ничего не приходит. Я также пытался добавить параметр вместе с WebhookDataparam, но выходит пустым.

Я должен добавить, что вместе с POST от Graph (который не работает) я тестирую свой runbook с помощью Postman и обязательно включаю validationTokenв URL. Опять же, я могу прочитать его, если включу его в тело POST, но не в том случае, если это параметр запроса. И поскольку в конечном итоге Graph будет отправлять его через параметр запроса, я думаю, что сначала мне нужно заставить это работать.

1 ответ

В частности, не поддерживаются строки запроса. Из документации:

Для получения данных от клиента модуль Runbook поддерживает один параметр с именем . Этот параметр определяет объект, содержащий данные, которые клиент включает в запрос POST.

Параметр имеет следующие свойства:

состоит из 2 частей, триггеров и модулей Runbook:

(Правый ящик) принимает только одно WebhookDataобъект для управления переменной и данными, с которыми будет работать.

Webhooks(левое поле), обрабатывает запуск, получение данных и передачу их в Runbook. Очень конкретно, RequestBodyуказывается как:

Тело входящего запроса POST. В этом теле сохраняется любое форматирование данных, такое как строка, JSON, XML или закодированное в форме. В этом теле сохраняется любое форматирование данных, такое как строка, JSON, XML или закодированное в форме.

С этим определением, очень конкретно, хотя WebHooksможет поддерживать строки запроса, в данном случае для запуска Azure Runbooksони явно игнорируются.


Кроме того, если конечным желанием является подписка на события Microsoft Graph, «лучший» способ — использовать Event Hubsдля обработки уведомлений :

Использование концентраторов событий Azure для получения уведомлений об изменениях отличается от веб-перехватчиков несколькими способами, в том числе:

  • Вы не полагаетесь на общедоступные URL-адреса уведомлений. Пакет SDK концентраторов событий будет передавать уведомления вашему приложению.
  • Вам не нужно отвечать на проверку URL-адреса уведомления. Вы можете игнорировать полученное сообщение о проверке.
  • Вам потребуется подготовить концентратор событий Azure.
  • Вам потребуется подготовить Azure Key Vault.
Другие вопросы по тегам