在 Azure Logic Apps 中使用 HTTP webhook,根據服務端點事件執行工作流程或動作

適用於:Azure Logic Apps(消耗量+標準)

當你希望工作流程觸發或動作能等待事件或資料抵達目標服務端點後才執行時,請使用 HTTP Webhook 觸發器或動作,而非主動排程檢查端點。 HTTP Webhook 的觸發或動作會訂閱服務端點,並等待新的事件或資料才執行。 你可以用 webhook 模式來執行長時間執行的任務和非同步處理。

以下列表描述了基於 webhook 的工作流程範例:

  • HTTP Webhook 觸發器會等待 Azure 事件中樞 的事件抵達後再執行工作流程。
  • HTTP Webhook 動作會在 Office 365 Outlook 中等待批准後,才能繼續工作流程中的下一個動作。

本指南說明如何設定 HTTP Webhook 觸發器與 HTTP Webhook 動作,讓您的工作流程能在服務端點接收並回應新事件或資料。

Webhook 如何運作?

Webhook 觸發程序或動作不會輪詢或主動檢查目標服務端點中的新事件或資料。 相反地,觸發器或動作會等到新的事件或資料抵達服務端點後才執行。 當你將 Webhook 觸發程序或動作加入工作流程並儲存工作流程後,或在重新啟用停用的邏輯應用程式資源後,Webhook 觸發程序或動作會透過產生並註冊回撥 URL 來訂閱服務端點。 觸發器或動作會等待服務端點呼叫該 URL,然後由端點執行該觸發器或動作。 與 Request 觸發器類似, HTTP Webhook 觸發器會立即觸發。

例如,Office 365 Outlook 連接器動作稱為 Send approval email 遵循 webhook 模式,但僅適用於 Office 365 Outlook。 你可以透過使用 HTTP Webhook 觸發器或動作,將 webhook 模式擴展到任何服務中,並搭配你想要的服務端點。

Webhook 觸發程序會持續訂閱服務端點,直到您手動執行以下其中一項動作:

  • 變更觸發程序的參數值。
  • 刪除觸發程序,然後儲存您的工作流程。
  • 停用您的邏輯應用程式資源。

除非發生以下條件之一,否則 Webhook 動作會持續訂閱服務端點:

  • Webhook 動作成功完成時。
  • 你在等待回應時取消了工作流程的執行。
  • 工作流程會逾時。
  • 您修改作為 Webhook 觸發程序輸入的任何 Webhook 動作參數值。

更多資訊,請參閱:

先決條件

  • 一個 Azure 帳號和訂閱。 免費申請Azure帳號。

  • 部署服務端點或 API 的網址。

    本項目必須支援「訂閱與取消訂閱」模式,適用於工作流程中的 webhook 觸發器或工作流程中的 webhook 動作。

  • 標準或取用邏輯應用程式工作流程中,您想要使用 HTTP Webhook 的觸發程序或動作。

    • 要使用 HTTP Webhook 觸發器,請建立一個邏輯應用程式資源,並設定空白工作流程。
    • 要使用 HTTP Webhook 動作,請從任何最適合你情境的觸發器開始你的工作流程。 範例中使用了 HTTP Webhook 的觸發器。

新增 HTTP Webhook 觸發程序

此內建觸發程序會呼叫目標服務上的訂閱端點並使用目標服務註冊回呼 URL。 工作流程接著會等候目標服務將 HTTP POST 要求傳送至回呼 URL。 發生此事件時,觸發程序會引發並將要求中的資料傳遞至工作流程。

  1. 在 Azure 入口網站,打開你的 Logic 應用程式資源。 在設計工具中,開啟您的空白工作流程。

  2. 請依 照一般步驟 ,將名為 HTTP Webhook 的觸發器加入你的工作流程。

    這個例子將觸發器重新命名為 , Run HTTP Webhook trigger 作為更具描述性的名稱。 範例後來也加入了 HTTP Webhook 動作。 兩個名字必須是唯一的。

  3. 對於 HTTP Webhook 觸發參數,請提供訂閱與取消訂閱呼叫的值:

    參數 必要 描述
    註冊方法 是的 訂閱目標端點的方法。
    訂閱 URI 是的 訂閱目標端點時使用的網址。
    訂閱本文 否 要包含在訂閱要求中的訊息本文。 此範例包含用以唯一識別訂閱者的回撥 URL,這也是您的工作流程。透過使用listCallbackUrl()運算式函數來擷取觸發程序的回撥 URL。
    取消訂閱本文 否 任何可包含在退訂申請中的訊息內容。 你可以使用 listCallbackUrl() 表達式函式 來取得你的動作的回調 URL。 然而,觸發器也會自動包含並傳送標頭 x-ms-client-tracking-id 和 x-ms-workflow-operation-name,目標服務可利用這些標頭唯一識別用戶。
  4. 若要新增其他觸發參數,請開啟 進階參數 清單。

    例如,要使用 Unsubscribe 方法 和 Unsubscribe URI 參數,請從 進階參數 清單中加入它們。

    以下範例展示了一個觸發器,包含訂閱與取消訂閱的方法、URI 及訊息主體:

    截圖顯示了 HTTP Webhook 觸發參數的工作流程。

  5. 如果你需要使用認證,請從進階參數清單中新增「訂閱認證」和「取消訂閱認證」參數。

    如需 HTTP Webhook 可用驗證類型的詳細資訊,請參閱 將驗證新增至輸出呼叫。

  6. 加入你情境需要的其他行動。

  7. 當您完成時,請儲存您的工作流程。 在設計工具的工具列上,選取 [儲存]。

儲存工作流程會呼叫目標服務上的訂閱端點,並註冊回呼 URL。 你的工作流程會等待目標服務向回調 URL 發送 HTTP POST 請求。 當此事件發生時,觸發器會觸發並將請求中的任何資料傳給工作流程。 如果此作業成功完成,觸發程序會從端點取消訂閱,您的工作流程會繼續進行下一個動作。

新增 HTTP Webhook 工作

此內建東做呼叫會呼叫目標服務上的訂閱端點並使用目標服務註冊回呼 URL。 你的工作流程會暫停,等待目標服務向回撥 URL 發送 HTTP POST 請求。 當此事件發生時,動作會將請求中的任何資料傳給工作流程。 如果作業成功完成,動作會從端點取消訂閱,您的工作流程會繼續進行下一個動作。

  1. 在 Azure 入口網站,打開你的 Logic 應用程式資源。 在設計工具中,開啟您的工作流程。

  2. 請依 照一般步驟 將名為 HTTP Webhook 的動作加入你的工作流程。

    此範例將動作 為 Run HTTP Webhook action ,作為更具描述性的名稱。 如果你的工作流程也使用 HTTP Webhook 觸發器,兩個名稱必須是唯一的。

  3. 對於 HTTP Webhook 動作參數,請提供用於訂閱與取消訂閱呼叫的值:

    參數 必要 描述
    註冊方法 是的 訂閱目標端點的方法。
    訂閱 URI 是的 訂閱目標端點時使用的網址。
    訂閱本文 否 要包含在訂閱要求中的訊息本文。 此範例包含用以唯一識別訂閱者的回撥 URL,這也是您的工作流程。透過使用listCallbackUrl()運算式函數來擷取動作的回撥 URL。
    取消訂閱本文 否 任何可包含在退訂申請中的訊息內容。 你可以使用 listCallbackUrl() 表達式函式 來取得你的動作的回調 URL。 然而,該動作也會自動包含並傳送標頭x-ms-client-tracking-id和x-ms-workflow-operation-name,目標服務可利用這些標頭來唯一識別訂閱者。
  4. 若要新增其他動作參數,請開啟 進階參數 清單。

    例如,要使用 Unsubscribe 方法 和 Unsubscribe URI 參數,請從 進階參數 清單中加入它們。

    以下範例展示了一個動作,其中包含用於訂閱和取消訂閱方法的方法、URI 和訊息主體:

    顯示具有 HTTP Webhook 動作參數的標準工作流程的螢幕擷取畫面。

  5. 如果你需要使用認證,請從進階參數清單中新增「訂閱認證」和「取消訂閱認證」參數。

    如需 HTTP Webhook 可用驗證類型的詳細資訊,請參閱 將驗證新增至輸出呼叫。

  6. 加入你情境需要的其他行動。

  7. 當您完成時,請儲存您的工作流程。 在設計工具的工具列上,選取 [儲存]。

此動作執行時,工作流程會呼叫目標服務上的訂閱端點,並註冊回呼 URL。 你的工作流程會暫停並等待目標服務向回調 URL 發送 HTTP POST 請求。 當此事件發生時,動作會將請求中的任何資料傳給工作流程。 如果作業成功完成,動作會從端點取消訂閱,您的工作流程會繼續進行下一個動作。

連接器技術參考

欲了解更多關於 HTTP Webhook 觸發與動作參數的資訊,請參閱 HTTP Webhook 參數。 觸發和動作的參數相同。

共享存取簽章(SAS)令牌到期

HTTP Webhook 觸發或動作的回調 URL 會由 List Callback URL - REST API 方法自動產生。 預設情況下,回調網址中的 SAS 標記沒有基於時間的有效期限。 回調網址在整個工作流程執行期間內都保持有效。

逾時限制

下表描述了基於邏輯應用程式主機選項的 HTTP Webhook 動作的逾時限制:

主機托管選項 工作流程類型 Duration
使用量 Stateful 最長可達90天。
標準 Stateful 最長可達30天。
標準 無狀態 5分鐘
(固定限制)

當以下事件發生時, HTTP Webhook 動作的回調 URL 將失效:

  • 你取消工作流程。
  • 你刪除或停用工作流程或邏輯應用程式資源。
  • 你可以輪換工作流程的存取鍵。
  • 工作流程會逾時。

關於其他 HTTP 限制,請參見 Azure Logic Apps 中的 HTTP 限制。

更改超時限制

若要使用 Azure 入口網站變更具狀態工作流程中 HTTP Webhook 動作的限制,請參閱「用於輸出 HTTP 要求的逾時時長資料表」。 或者,在動作的 JSON 定義中,加入 limit.timeout 物件,並將值設定為你想要的長度,例如:

{
   "actions": {
      "Run_HTTP_Webhook_action": {
         "type": "HttpWebhook",
         "inputs": {
            "subscribe": {
               "method": "POST",
               "uri": "https://<external-service>.com/subscribe",
               "body": {
                  "callbackUrl": "@{listCallBackUrl()}"
               }
            },
            "unsubscribe": {}
         },
         "limit": {
            "timeout": "PT1H"
         }
      }
   }
}

觸發程序和動作輸出

以下表格提供有關 HTTP Webhook 觸發程序或動作所回傳輸出的更多資訊:

JSON 名稱 類型 描述
headers JSON 物件 來自要求的標頭。
body JSON 物件 包含要求本文內容的物件。
status code 整數 (int) 請求中的狀態代碼。
狀態碼 描述
200 [確定]
202 已接受
400 不正確的要求
401 未經授權
403 禁止
404 找不到
500 內部伺服器錯誤。 發生未知錯誤。

使用次要存取金鑰產生回撥 URL

邏輯應用程式工作流程有兩個存取金鑰:主要和次要。 預設情況下,Azure Logic Apps 會使用主鍵來產生 HTTP webhook 觸發器的回調 URL。

若要改用次要密鑰來產生回呼 URL,請遵循下列步驟:

  1. 如果你在工作流程設計器裡,請切換到程式碼檢視。

  2. 在觸發程式定義中 HttpWebhook ,尋找 accessKeyType 參數。

  3. 輸入該詞 Secondary 作為參數值。

  4. 儲存您的變更。

下列範例顯示 Webhook 觸發程序定義,並將 accessKeyType 參數設定為 Secondary:

{
  "type": "HttpWebhook",
  "inputs": {
    "subscribe": {
      "method": "POST",
      "uri": "<subscription-URL>",
      "body": "@listCallbackUrl()"
    },
    "accessKeyType": "Secondary"
  },
  "runAfter": {}
}