通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure Logic Apps 中使用 HTTP Webhook 基于服务终结点事件运行工作流或操作

适用于:Azure Logic Apps(消耗 + 标准)

如果希望工作流触发器或操作等待事件或数据在运行之前到达目标服务终结点,请使用 HTTP Webhook 触发器或操作,而不是按计划主动检查终结点。 HTTP Webhook 触发器或操作订阅服务终结点,并在运行之前等待新事件或数据。 可以将 Webhook 模式用于长时间运行的任务和异步处理。

以下列表描述了基于 Webhook 的示例工作流:

  • HTTP Webhook 触发器在运行工作流之前等待事件从 Azure Event Hubs 到达。
  • HTTP Webhook 操作等待Office 365 Outlook审批,然后继续工作流中的下一个操作。

本指南介绍如何设置 HTTP Webhook 触发器和 HTTP Webhook 操作,以便工作流可以在服务终结点接收和响应新事件或数据。

Webhook 的工作原理

Webhook 触发器或操作不会轮询或主动检查目标服务终结点上的新事件或数据。 相反,触发器或操作会等待,直到新事件或数据到达服务终结点后才运行。 在工作流中添加 Webhook 触发器或操作并保存工作流后,或在重新启用已禁用的逻辑应用资源后,Webhook 触发器或操作会通过生成并向终结点注册回调 URL订阅服务终结点。 然后,触发器或操作将等待服务终结点调用运行触发器或操作的 URL。 与 请求 触发器一样, HTTP Webhook 触发器会立即触发。

例如,Office 365 Outlook 连接器操作名为 Send 审批电子邮件遵循 webhook 模式,但仅适用于Office 365 Outlook。 可以通过将 HTTP Webhook 触发器或操作与所需的服务终结点结合使用,将 Webhook 模式扩展到任何服务。

Webhook 触发器会一直订阅服务终结点,直到你手动执行以下任一操作:

  • 更改触发器的参数值。
  • 删除触发器,然后保存工作流。
  • 禁用逻辑应用资源。

Webhook 操作会一直订阅服务终结点,除非发生以下任一情况:

  • Webhook 操作成功完成。
  • 在等待响应时取消工作流运行。
  • 工作流超时。
  • 您可以更改用作输入的任何 webhook 触发器的动作参数值。

有关详细信息,请参见:

Prerequisites

添加 HTTP Webhook 触发器

此内置触发器调用目标服务上的订阅终结点,并向目标服务注册回调 URL。 然后,工作流会等待目标服务向回调 URL 发送HTTP POST请求。 发生此事件时,触发器将触发,并会将请求中的任何数据传递给工作流。

  1. Azure 门户中,打开逻辑应用资源。 在设计器中,打开空白工作流。

  2. 按照 常规步骤 将名为 HTTP Webhook 的触发器添加到工作流。

    此示例将触发器 Run HTTP Webhook trigger 重命名为更具描述性的名称。 此示例稍后还会添加 HTTP Webhook 操作。 这两个名称必须是唯一的。

  3. 对于 HTTP Webhook 触发器参数,提供订阅和取消订阅调用的值:

    参数 必选 说明
    订阅方法 用于订阅目标终结点的方法。
    订阅 URI 用于订阅目标终结点的 URL。
    订阅正文 要包含在订阅请求中的任何消息正文。 此示例包含唯一标识订阅者(即你的工作流)的回调 URL,并使用 listCallbackUrl() 表达式函数 检索触发器的回调 URL。
    取消订阅正文 包含在退订请求中的任何消息正文。 可以使用 listCallbackUrl() 表达式函数 检索操作的回调 URL。 但是,触发器还会自动包括和发送标头x-ms-client-tracking-idx-ms-workflow-operation-name,目标服务可以使用这些标头来唯一标识订阅者。
  4. 若要添加其他触发器参数,请打开 “高级参数 ”列表。

    例如,若要使用 “取消订阅方法”“取消订阅 URI ”参数,请从 “高级参数 ”列表中添加它们。

    以下示例显示了一个触发器,其中包含用于订阅和取消订阅方法的方法、URI 和消息正文:

    屏幕截图显示了包含 HTTP Webhook 触发器参数的工作流。

  5. 如果需要使用身份验证,请从“高级参数”列表中添加“订阅身份验证”和“取消订阅身份验证”参数。

    有关可用于 HTTP Webhook 的身份验证类型的详细信息,请参阅 向出站调用添加身份验证

  6. 添加场景所需的任何其他操作。

  7. 完成后,保存工作流。 在设计器工具栏上,选择“保存”

保存工作流将在目标服务上调用订阅终结点并注册回调 URL。 你的工作流将等待目标服务向回调 URL 发送 HTTP POST 请求。 发生此事件时,触发器会触发并将请求中的任何数据传递给工作流。 如果该操作成功完成,则触发器将取消订阅该终结点,工作流继续执行下一步操作。

添加 HTTP Webhook 操作

此内置操作调用目标服务上的订阅终结点,并向目标服务注册回调 URL。 然后,工作流会暂停并等待目标服务向回调 URL 发送 HTTP POST 请求。 发生此事件时,该操作会将请求中的任何数据传递给工作流。 如果该操作成功完成,则操作将取消订阅该终结点,工作流继续执行下一步操作。

  1. Azure 门户中,打开逻辑应用资源。 在设计器中,打开工作流。

  2. 按照 常规步骤 将名为 HTTP Webhook 的操作添加到工作流。

    此示例将操作 Run HTTP Webhook action 重命名为更具描述性的名称。 如果工作流还使用 HTTP Webhook 触发器,则这两个名称必须是唯一的。

  3. 对于 HTTP Webhook 操作参数,请提供用于订阅和取消订阅调用的值:

    参数 必选 说明
    订阅方法 用于订阅目标终结点的方法。
    订阅 URI 用于订阅目标终结点的 URL。
    订阅正文 要包含在订阅请求中的任何消息正文。 此示例包含唯一标识订阅者(即你的工作流)的回调 URL,并使用 listCallbackUrl() 表达式函数 检索操作的回调 URL。
    取消订阅正文 包含在退订请求中的任何消息正文。 可以使用 listCallbackUrl() 表达式函数 检索操作的回调 URL。 但是,该操作还会自动包含并发送标头 x-ms-client-tracking-idx-ms-workflow-operation-name,目标服务可以使用这些标头来唯一标识订阅者。
  4. 若要添加其他操作参数,请打开 “高级参数 ”列表。

    例如,若要使用 “取消订阅方法”“取消订阅 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 方法自动生成。 默认情况下,回调 URL 中的 SAS 令牌没有基于时间的到期时间。 回调 URL 在工作流运行持续时间内保持有效。

超时限制

下表根据逻辑应用托管选项描述了 HTTP Webhook 操作的超时限制:

托管选项 工作流类型 持续时间
消耗 有状态 最多 90 天。
标准 有状态 最多 30 天。
标准 无状态 5 分钟
(固定限制)

发生以下事件时 ,HTTP Webhook 操作的回调 URL 将变为无效:

  • 您取消了工作流。
  • 删除或禁用工作流或逻辑应用资源。
  • 轮换工作流的访问密钥。
  • 工作流超时。

有关其他 HTTP 限制,请参阅 Azure Logic Apps 中的 HTTP 限制。

更改超时限制

若要使用 Azure 门户在有状态工作流中更改 HTTP Webhook 操作的此限制,请参阅出站 HTTP 请求的 Timeout 持续时间表。 或者,在操作的 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 OK
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": {}
}