使用 Webhook 作為 Azure Logic Apps 和 Power Automate 的觸發程序
Webhook 是用來提供事件通知的簡單 HTTP 回呼。 Azure Logic Apps 和 Power Automate 兩者都可讓您使用 Webhook 作為觸發程序。 邏輯應用程式或流程會接聽此觸發程序,並在觸發程序引發時執行動作。 本教學課程示範如何使用 Webhook 做為觸發程序。
注意
我們將使用 GitHub 做為服務的範例,可以透過 Webhook 傳送通知,但此處所示範的技巧可以延伸到使用 Webhook 的任何服務。
Webhook 會在 Logic Apps 和 Power Automate 中當作自訂連接器的一部分來進行實作,所以您需要提供可定義 Webhook 圖形的 OpenAPI 定義。 如果要建立觸發程序,但沒有 OpenAPI 定義,則可以使用自訂連接器精靈中的觸發程序 UI 來定義 Webhook 觸發程序。
OpenAPI 定義包含讓 Webhook 得以運作的三個關鍵部分:
- 建立 webhook
- 定義來自 API 的連入勾點要求 (在此案例中,GitHub)
- 刪除 webhook
webhook 是在 GitHub 端由 HTTP POST 建立至 /repos/{owner}/{repo}/hooks
。 建立新的邏輯應用程式或流程時,會使用 OpenAPI 定義中定義的觸發程序,將它張貼到此 URL。 也會在觸發程序被修改時張貼至 URL。 在下面範例中,post
屬性包含張貼到 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 在設計工具中可用的觸發程序清單中顯示此 Webhook,所以請務必要將它納入。
如先前範例所示,傳入勾點要求 (從 GitHub 傳送至 Logic Apps 或 Power Automate 的通知) 的圖形已於自訂 x-ms-notification-content
屬性中定義。 不需要包含要求的整個內容,只要包含您想要在邏輯應用程式或流程中使用的部分。
OpenAPI 定義必須包含刪除 Webhook 方法的定義。 如果您更新觸發程序,而且刪除邏輯應用程式或流程,Logic Apps 和 Power Automate 會嘗試刪除 Webhook。
"/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 Hook being deleted",
"required": true,
"type": "string"
}
]
}
},
刪除 webhook 呼叫不包含教學課程標頭。 連接器中使用的相同連線也用於刪除 webhook 呼叫。
重要
為了讓 Logic Apps 或 Power Automate 刪除 Webhook,API 必須在建立 Webhook 時於 201 回應中包含 Location
HTTP 標頭。 Location
標頭應該包含用於 HTTP DELETE 的 Webhook 路徑。 例如,Location
隨附下列格式的 GitHub 回應︰https://api.github.com/repos/<user name>/<repo name>/hooks/<hook ID>
。
將 Webhook 要求傳送至 Logic Apps 或 Power Automate 的 API 通常會使用某種形式的驗證,而 GitHub 也不例外。 GitHub 支援數種驗證類型;我們會使用 GitHub 個人存取權杖進行此教學課程。
瀏覽至 GitHub,如果您尚未登入,請登入。
在右上方,選取您的設定檔圖片,然後在功能表中,選擇設定。

在左邊功能表中選擇開發人員設定,然後選擇個人存取權杖。
選擇產生新權杖按鈕,然後根據要求確認您的密碼。

在權杖描述方塊中輸入描述。
選取 admin:repo_hook 核取方塊。

選擇產生權杖按鈕。
記下新的權杖。

重要
您無法再存取此權杖。 您應該複製並貼到其他位置,稍後在本教學課程中使用。
首先匯入 Logic Apps 或 Power Automate 的 OpenAPI 定義。
匯入 Logic Apps 的 OpenAPI 定義
前往 Azure 入口網站,並開啟您稍早在建立 Azure Logic Apps 自訂連接器中建立的 Logic Apps 連接器。
在連接器的功能表中,選擇邏輯應用程式連接器,然後選擇編輯。

在一般底下,選擇上傳 OpenAPI 檔案,然後瀏覽至您下載的 OpenAPI 檔案。
![顯示 [上傳 OpenAPI 檔案] 選項的螢幕擷取畫面。](media/create-webhook-trigger/logic-apps-upload-definition.png)
匯入 Power Automate 的 OpenAPI 定義
移至 flow.microsoft.com。
在右上角,選擇齒輪圖示,然後選擇自訂連接器。

選擇建立自訂連接器,然後選擇匯入 Postman 集合。

輸入自訂連接器的名稱,然後瀏覽至您下載的 OpenAPI 檔案,並選擇連線。

參數 |
值 |
自訂連接器標題 |
"GitHubDemo" |
|
|
在一般頁面上,選擇繼續。
在安全性頁面的驗證類型底下,選取基本驗證。
在基本驗證區段的標籤欄位中,輸入文字使用者名稱和密碼。 這些都是在 Logic Apps 或流程中使用觸發程序時將會顯示的標籤。

在精靈頂端,確定會將名稱設定為 "GitHubDemo",然後選擇建立連接器。
您現在已準備好在邏輯應用程式或流程中使用觸發程序,或者您也可以閱讀如何從 UI 建立觸發程序。
在本節中,我們將說明如何在 UI 中建立觸發程序,而不需要 OpenAPI 定義中的任何觸發程序定義。 從基準 OpenAPI 定義開始,或在自訂連接器精靈中從頭開始。
在一般頁面上,確定指定描述和 URL。
參數 |
值 |
描述 |
「GitHub 是社交原始程式碼存放庫。」 |
URL |
"api.github.com" |
|
|
在安全性頁面上,設定基本驗證(如您在上一節中所進行的工作)。
在定義頁面上,選擇 + 新增觸發程序,然後填入觸發程序的描述。 在此範例中,您建立會在對存放庫進行提取要求時引發的觸發程序。

參數 |
值 |
摘要 |
「對選定存放庫發出拉取要求時觸發」 |
描述 |
「對選定存放庫發出拉取要求時觸發」 |
作業識別碼 |
"webhook-PR-觸發程序" |
可視性 |
"無" (如需詳細資訊,請參閱下方) |
觸發程序類型 |
"Webhook" |
|
|
適用於邏輯應用程式或流程中作業和參數的顯示性屬性有下列選項:
- 無:正常地顯示於邏輯應用程式或流程中
- 進階:隱藏在額外的功能表底下
- 內部:對使用者隱藏
- 重要:一律優先對使用者顯示
要求區域會根據動作的 HTTP 要求來顯示資訊。 選擇從範例匯入。

定義 Webhook 觸發程序的要求,然後選擇匯入。 我們提供範例,讓您匯入 (影像下方)。 如需詳細資訊,請參閱 GitHub API 參考。 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 回覆來顯示資訊。 選擇新增預設回應。

定義 Webhook 觸發程序的回覆,然後選擇匯入。 同樣的,我們提供範例,讓您匯入。 如需詳細資訊,請參閱 GitHub API 參考。

{
"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"
}
}
}
在觸發程序設定區域中,選取應接收來自 GitHub 之回撥 URL 值的參數。 這是 config
物件中的 url
屬性。

在精靈的頂端,輸入名稱,然後選擇建立連接器。
您現在已設定好所有項目,因此可以在邏輯應用程式或流程中使用 webhook。 接下來建立流程,該流程會在您的 GitHub 存放庫接收 git 推送時將推播通知傳送至 Power Automate 行動應用程式。
在 flow.microsoft.com 中,在頁面頂端選擇我的流程。
選擇從空白建立,然後選擇下一頁的搜尋數百個連接器和觸發程序。

在 Power Automate 的設計工具中,搜尋您稍早註冊的自訂連接器。

選擇清單中要用來做為觸發程序的項目。
由於這是您第一次使用此自訂連接器,您必須連線至該連接器。 輸入連接資訊,然後選擇建立。

參數 |
值 |
連線名稱 |
描述性名稱 |
使用者名稱 |
您的 GitHub 使用者名稱 |
密碼 |
您稍早建立的個人存取權杖 |
|
|
輸入您想要監視的存放庫詳細資料。 您可以從 OpenAPI 檔案中的 WebhookRequestBody 物件辨識欄位。

參數 |
數值 |
負責人 |
要監控的存放庫負責人 |
repo |
要監控的存放庫 |
|
|
重要
您應該使用您的帳戶具有權限的存放庫。 若要這樣做,最簡單的方法是使用您自己的存放庫。
選擇 + 新增步驟,然後選擇新增動作。
搜尋並選取推播通知動作。

使用動態內容對話方塊中的值,在文字欄位和其他欄位中輸入一些文字。 請注意,這些值來自 OpenAPI 檔案中的 WebhookPushResponse 物件。

參數 |
數值 |
連線名稱 |
描述性名稱 |
使用者名稱 |
您的 GitHub 使用者名稱 |
密碼 |
您稍早建立的個人存取權杖 |
|
|
在頁面頂端,提供流程名稱,然後選擇建立流程。

若要確認一切已正確設定,請選擇我的流程,然後選擇新流程旁邊的資訊圖示,以檢視執行歷程記錄:
如果一切都已正確設定,您會在每當您選取的 GitHub 存放庫上發生 git 推送時,在 Power Automate 行動應用程式中立即收到推播通知。 使用上述程序,您可以使用任何支援 webhook 的服務做為您的流程中的觸發程序。
非常感謝您提供有關連接器平台問題,或新功能構想的意見反應。 若要提供意見反應,請移至提交問題或取得連接器說明,然後選取您的意見反應類型。