Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Веб-перехватчики — это простые обратные вызовы HTTP, которые предоставляют уведомления о событиях, когда что-то происходит в веб-службе. В Azure Logic Apps и Power Automate вебхуки можно использовать в качестве триггеров. Приложение логики или поток ожидает срабатывания этого триггера и выполняет действие каждый раз, когда он срабатывает. В этом руководстве показано, как использовать веб-перехватчик в качестве триггера через настраиваемый соединитель, определенный с помощью спецификации OpenAPI.
Заметка
В этой статье GitHub используется в качестве примера сервиса, который может отправлять уведомления через вебхуки, но вы можете применить описанные здесь методы к любому сервису, который поддерживает вебхуки.
Предварительные условия
- Одна из следующих подписок:
- Azure, если вы используете Logic Apps
- Power Automate
- Базовый опыт создания приложений логики или облачных потоков и создания пользовательских соединителей из определений OpenAPI.
- Если вы используете Logic Apps, прежде всего создайте пользовательский соединитель Azure Logic Apps.
- Базовое понимание вебхуков.
- Базовое понимание спецификации OpenAPI (ранее известной как Swagger).
- Учетная запись GitHub.
- Пример определения OpenAPI для этого руководства. Если у вас его еще нет, скачайте его, чтобы использовать его в следующих шагах. В противном случае необходимо создать пользовательское определение OpenAPI для вашего вебхука.
Включение аутентификации в GitHub
API веб-службы, который отправляет запрос вебхука в Logic Apps или Power Automate, обычно использует тот или иной способ аутентификации, и GitHub здесь не исключение. GitHub поддерживает несколько типов проверки подлинности. В этом руководстве используются детализированные персональные токены доступа GitHub.
Перейдите к GitHub и войдите, если вы еще не сделали этого.
В правом верхнем углу выберите рисунок профиля, а затем в меню выберите "Параметры".
В меню слева выберите параметры разработчика.
В разделе "Личные маркеры доступа" выберите токены с точной настройкой.
Нажмите кнопку "Создать новый маркер" , а затем подтвердите пароль при запросе.
Введите имя токена и описание токена.
В разделе "Срок действия" выберите дату окончания срока действия маркера.
В разделе "Доступ к репозиторию" выберите только репозитории и выберите репозиторий, к которому вы хотите предоставить доступ.
В разделе Разрешения выберите Добавить разрешения>Веб-перехватчики>Чтение и запись.
Нажмите кнопку "Создать маркер ".
Сохраните свой новый токен. Позже вам потребуется использовать этот токен при добавлении коннектора вебхука как триггера.
Внимание!
Вы больше не сможете просмотреть этот токен. Скопируйте и вставьте его где-то, чтобы использовать его позже в руководстве.
Определение веб-перехватчика в определении OpenAPI
Вы реализуете вебхуки в Logic Apps и Power Automate как часть настраиваемого соединителя. Чтобы создать соединитель, необходимо указать определение OpenAPI, определяющее форму веб-перехватчика. В этом руководстве используется загруженный образец спецификации OpenAPI для веб-хуков GitHub.
Если вы хотите создать триггер, но у вас нет определения OpenAPI, с которым можно работать, используйте интерфейс триггеров в мастере настраиваемого соединителя, чтобы определить триггеры веб-перехватчика.
Пример определения OpenAPI содержит три части, которые критически важны для работы вебхука:
- Создание вебхука
- Определение запроса входящего вебхука из API веб-службы (в этом учебном примере — GitHub)
- Удаление вебхука
Соединитель использует это определение OpenAPI, чтобы понять, как создавать, получать данные от и удалять вебхуки для репозитория GitHub.
Создать вебхук
Соединитель использует API веб-службы (в нашем примере GitHub REST API) для создания веб-перехватчика на стороне веб-службы путем отправки HTTP-запроса POST в соответствующую конечную точку создания веб-перехватчика для веб-службы (/repos/{owner}/{repo}/hooksв случае GitHub).
Когда вы создаете новое приложение логики или поток с помощью соединителя, соединитель отправляет POST-запрос к конечной точке создания webhook веб-службы, как определено в описании OpenAPI соединителя. Он также отправляет запрос POST на этот URL-адрес, если изменить приложение логики или триггер потока. В следующем примере конфигурации пути OpenAPI свойство post содержит схему запроса на создание вебхука для отправки в REST API GitHub.
"/repos/{owner}/{repo}/hooks": {
"x-ms-notification-content": {
"description": "Details for Webhook",
"schema": {
"$ref": "#/definitions/WebhookPushResponse"
}
},
"post": {
"description": "Creates a GitHub webhook",
"summary": "Triggers when a PUSH event occurs",
"operationId": "webhook-trigger",
"x-ms-trigger": "single",
"parameters": [
{
"name": "owner",
"in": "path",
"description": "Name of the owner of targeted repository",
"required": true,
"type": "string"
},
{
"name": "repo",
"in": "path",
"description": "Name of the repository",
"required": true,
"type": "string"
},
{
"name": "Request body of webhook",
"in": "body",
"description": "This is the request body of the Webhook",
"schema": {
"$ref": "#/definitions/WebhookRequestBody"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/WebhookCreationResponse"
}
}
}
}
},
Внимание!
Свойство "x-ms-trigger": "single" — это расширение схемы, которое указывает Logic Apps и Power Automate отображать этот вебхук в списке доступных триггеров в конструкторе. Не забудьте включить его.
Определите входящий запрос хука из API
Определите форму входящего запроса перехватчика (уведомление от GitHub в Logic Apps или Power Automate) в пользовательском x-ms-notification-content свойстве, как показано в предыдущем примере. Запрос не должен содержать все содержимое запроса, а только части, которые вы хотите использовать в приложении логики или потоке.
Удалить вебхук
Добавьте определение того, как удалить вебхук, в определение OpenAPI. Logic Apps и Power Automate пытаются удалить существующий вебхук при обновлении триггера или удалении приложения логики либо потока.
"/repos/{owner}/{repo}/hooks/{hook_Id}": {
"delete": {
"description": "Deletes a Github webhook",
"operationId": "DeleteTrigger",
"parameters": [
{
"name": "owner",
"in": "path",
"description": "Name of the owner of targeted repository",
"required": true,
"type": "string"
},
{
"name": "repo",
"in": "path",
"description": "Name of the repository",
"required": true,
"type": "string"
},
{
"name": "hook_Id",
"in": "path",
"description": "ID of the webhook being deleted",
"required": true,
"type": "string"
}
]
}
},
Для вызова удаления вебхука не включен заголовок. Вызов для удаления вебхука использует то же соединение, что и коннектор.
Внимание!
Чтобы Logic Apps или Power Automate могли удалить вебхук, API веб-службы должен включать заголовок HTTP Location в ответе 201 при создании вебхука. Заголовок Location должен содержать путь к вебхуку, используемому с методом HTTP DELETE. Например, заголовок, включенный Location в ответ GitHub, соответствует следующему формату: https://api.github.com/repos/<user name>/<repo name>/hooks/<hook ID>
Импорт определения OpenAPI
Сначала импортируйте определение OpenAPI для Logic Apps или для Power Automate.
Импорт определения OpenAPI для Logic Apps
Перейдите в портал Azure и откройте соединитель Logic Apps, который вы ранее создали в разделе Создание настраиваемого соединителя Azure Logic Apps.
В меню вашего соединителя выберите Соединитель Logic Apps, а затем выберите Редактировать.
В разделе "Общие" выберите " Отправить файл OpenAPI", а затем перейдите к примеру скачаемого файла OpenAPI.
Импорт определения OpenAPI для Power Automate
Перейдите к https://make.powerautomate.com/.
В правом верхнем углу щелкните значок шестеренки, а затем выберите настраиваемые соединители.
Выберите "Создать настраиваемый соединитель", а затем выберите "Импорт коллекции Postman".
Введите имя настраиваемого соединителя, перейдите к примеру скачаемого файла OpenAPI и нажмите кнопку "Подключить".
Параметр Значение Название настраиваемого соединителя "GitHubDemo"
Завершение создания пользовательского соединителя
На странице "Общие " нажмите кнопку "Продолжить".
На странице Безопасность в разделе Тип аутентификации выберите Базовая аутентификация.
В разделе Обычная проверка подлинности для полей меток введите текст Имя пользователя и Пароль. Эти метки отображаются при использовании триггера в приложении логики или потоке.
В верхней части мастера убедитесь, что для имени задано значение GitHubDemo, а затем нажмите кнопку "Создать соединитель".
Теперь вы готовы использовать триггер в приложении логики или потоке или вы можете прочитать о том, как создавать триггеры из пользовательского интерфейса.
Создавайте триггеры вебхуков в пользовательском интерфейсе
В этом разделе описано, как создать триггер в пользовательском интерфейсе без определения триггеров в определении OpenAPI. Начните с базового определения OpenAPI или начните с нуля в мастере настраиваемых соединителей.
На странице "Общие " укажите описание и URL-адрес.
Параметр Значение Описание "GitHub — это социальный репозиторий исходного кода". URL-адрес "api.github.com" На странице Безопасность настройте базовую аутентификацию, как вы делали в предыдущем разделе.
На странице определения выберите новый триггер и заполните описание триггера. В этом примере вы создаёте триггер, который срабатывает при создании запроса на включение изменений в репозитории.
Параметр Значение Сводка "Срабатывает, когда делается запрос на извлечение в выбранный репозиторий" Описание "Срабатывает, когда делается запрос на извлечение в выбранный репозиторий" Идентификатор операции "webhook-PR-trigger" Видимость "none" (дополнительные сведения см. ниже) Тип триггера вебхук Свойство Видимость для операций и параметров в приложении логики или потоке имеет следующие параметры:
- нет: обычно отображается в приложении логики или потоке
- расширенная: скрыто в дополнительном меню
- внутренняя: скрыто от пользователя
- важная: всегда сначала предоставляется пользователю для просмотра
Область Запрос отображает информацию на основе HTTP-запроса на действие. Выберите Импорт из примера.
Определите запрос для триггера веб-перехватчика, а затем выберите Импорт. Мы предоставляем пример для импорта (в следующем разделе). Дополнительные сведения см. в разделе Справочник по API GitHub. Logic Apps и Power Automate автоматически добавляют стандартные и заголовки безопасности
content-type, поэтому эти заголовки не нужно определять при импорте из примера.
Параметр Значение Глагол "POST" URL-адрес "https://api.github.com/repos/{owner}/{repo}/hooks" Основная часть См. ниже { "name": "web", "active": true, "events": [ "pull_request" ], "config": { "url": "http://example.com/webhook" } }Область Ответ отображает информацию на основе HTTP-ответа для действия. Щелкните Добавить ответ по умолчанию.
Определите ответ для триггера веб-перехватчика, а затем выберите Import. Опять, мы предоставляем образец для импорта. Дополнительные сведения см. в разделе Справочник по API GitHub.
{ "action": "opened", "number": 1, "pull_request": { "html_url": "https://github.com/baxterthehacker/public-repo/pull/1", "state": "open", "locked": false, "title": "Update the README with new information", "user": { "login": "baxterthehacker", "type": "User" } } }В области Конфигурация триггера выберите параметр, который должен получить значение URL-адреса обратного вызова из GitHub. Этот параметр является свойством
urlв объектеconfig.
В верхней части мастера введите имя, а затем выберите Создать соединитель.
Используйте вебхук в качестве триггера
После настройки всего используйте вебхук через настраиваемый соединитель в приложении логики или в потоке. Затем создайте поток, который отправляет сообщение электронной почты всякий раз, когда ваш репозиторий GitHub получает push-запрос Git.
В https://make.powerautomate.com/верхней части страницы выберите "Мои потоки".
Выберите Создать с нуля.
В конструкторе Power Automate найдите настраиваемый соединитель, который вы зарегистрировали ранее.
Выберите элемент в списке, чтобы использовать его в качестве триггера.
Так как это первый раз, когда вы использовали этот настраиваемый соединитель, подключитесь к нему. Введите сведения о подключении и нажмите кнопку "Создать".
Параметр Значение Имя подключения Описательное имя Имя пользователя Ваше имя пользователя GitHub Пароль Личный маркер доступа, который вы создали ранее Введите сведения о репозитории, который хотите отслеживать. В объекте WebhookRequestBody в файле OpenAPI вы увидите знакомые поля.
Параметр Значение владелец Владелец репозитория для мониторинга репо Репозиторий для мониторинга Внимание!
Используйте репозиторий, к которому у вашей учетной записи есть права. Самый простой способ сделать это — использовать собственный репозиторий.
Выберите Новый шаг>Добавить действие.
Найдите и выберите действие "Отправить сообщение электронной почты( версия 2).
Введите текст в поле "Текст " и других полях, используя значения из диалогового окна динамического содержимого. Значения приходят из объекта WebhookPushResponse в файле OpenAPI.
В верхней части страницы присвойте потоку имя и выберите Создать поток.
Проверка и устранение неполадок
Чтобы убедиться, что все настроено правильно, выберите "Мои потоки", а затем щелкните значок сведений рядом с новым потоком, чтобы просмотреть журнал выполнения:
- Вы уже должны видеть как минимум один запуск со статусом Успешно после создания веб-перехватчика. Этот запуск означает, что вебхук был успешно создан на стороне GitHub.
- Если запуск завершился с ошибкой, просмотрите сведения о нем, чтобы узнать причину. Если сбой был вызван ответом
404 Not Found, то у вашей учетной записи GitHub, скорее всего, нет необходимых прав для создания вебхука в репозитории, который вы использовали.
Сводка
Если вы правильно настроили все, вы получаете push-уведомления в мобильном приложении Power Automate всякий раз при отправке git в выбранном репозитории GitHub. Используя описанный выше процесс, вы можете использовать любую службу, поддерживающую вебхуки, в качестве триггера в ваших потоках.
Дальнейшие шаги
- Создание пользовательского соединителя для веб-API
- Аутентификация API и соединителя с помощью Microsoft Entra ID
Предоставление отзыва
Мы очень ценим отзывы о проблемах с нашей платформой соединителей и новые идеи о функциях. Чтобы оставить отзыв, выберите пункт Сообщить о проблемах или получить помощь с соединителями и выберите тип отзыва.