在 Azure 逻辑应用中使用 HTTP Webhook 订阅并等待事件以运行工作流

适用范围:Azure 逻辑应用(消耗型 + 标准型)

可以使用HTTP Webhook触发器或操作(订阅服务终结点、等待特定事件并在工作流中运行特定操作),而不是使用触发器(定期检查或轮询服务终结点或调用该终结点的操作)。

下面是基于 Webhook 的工作流的一些示例:

  • 在触发工作流运行之前,等待来自 Azure 事件中心的某个事件抵达。
  • 在继续运行工作流之前等待批准。

本指南演示如何使用 HTTP Webhook 触发器和 HTTP Webhook 作,以便工作流可以在服务终结点接收和响应事件。

Webhook 的工作原理

Webhook 触发器基于事件,它不依赖于定期检查或轮询新数据或事件的操作。 在将 Webhook 触发器添加到空工作流并保存工作流后,或者在重新启用禁用的逻辑应用资源后,Webhook 触发器会通过将回叫 URL 注册到指定的服务终结点来订阅该终结点。 然后触发器会等待该服务终结点调用 URL,这将触发触发器并启动工作流。 与请求触发器类似,Webhook 触发器会立即触发。

除非手动执行以下操作,否则 Webhook 触发器也会保持对服务终结点的订阅状态:

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

与 Webhook 触发器类似,Webhook动作也是事件驱动的。 在将 Webhook 操作添加到现有工作流并保存工作流后,或者在重新启用禁用的逻辑应用资源后,Webhook 操作会通过将回叫 URL 注册到指定的服务终结点来订阅该终结点。 当工作流运行时,Webhook 操作会暂停工作流,在工作流恢复运行之前,会等待该服务终结点调用该 URL。 出现以下情况时,Webhook 操作会从服务终结点取消订阅:

  • Webhook 操作成功完成。
  • 工作流运行在等待响应时已取消。
  • 在工作流运行超时之前。
  • 更改被 Webhook 触发器用作输入的任何 Webhook 操作参数值。

例如,Office 365 Outlook 连接器的发送审批电子邮件操作是遵循此模式的 Webhook 操作示例。 可以使用 Webhook 操作将此模式扩展到任何服务中。

有关详细信息,请参阅以下文档:

有关对逻辑应用的入站调用(例如传输层安全性(TLS)或 Microsoft Entra ID 开放身份验证的加密、安全性和授权的信息,请参阅 访问对基于请求的触发器的入站调用

连接器技术参考

有关触发器和操作参数的详细信息,请参阅HTTP Webhook 参数

Prerequisites

  • Azure 帐户和订阅。 如果没有 Azure 订阅,请注册试用版 Azure 订阅

  • 适当支持工作流中 Webhook 触发器工作流中 Webhook 操作 Webhook 订阅和取消订阅模式的已部署终结点或 API 的 URL。

  • 要在其中等待目标终结点上发生特定事件的标准或消耗逻辑应用工作流。

    若要从 HTTP Webhook 触发器开始,请使用空白工作流创建逻辑应用。

    若要使用 HTTP Webhook 操作,请使用所需的任何触发器启动工作流。 此示例使用 HTTP 触发器作为第一步。

添加 HTTP Webhook 触发器

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

  1. Azure 门户中,打开你的标准逻辑应用资源。

  2. 在资源边栏菜单中的 “工作流”下,选择“ 工作流”,然后选择空白工作流。

  3. 在工作流边栏菜单中的 “工具”下,选择设计器以打开工作流。

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

    此示例将触发器重命名为HTTP Webhook 触发器,使步骤的名称更具描述性。 此外,该示例稍后会添加 HTTP Webhook 操作,因此,两个名称必须唯一。

  5. 提供要对订阅和取消订阅调用使用的 HTTP Webhook 触发器参数值。

    Property Required Description
    Subscribe Method Yes 订阅目标终结点时使用的方法
    Subscribe URI Yes 用于订阅目标终结点的 URL
    Subscribe Body No 要包含在订阅请求中的任何消息正文。 此示例包括使用 @listCallbackUrl() 表达式来检索逻辑应用的回调 URL,该 URL 唯一标识订阅方(即逻辑应用)。
    Unsubscribe Body No 要包含在取消订阅请求中的可选消息正文

    注意:此属性不支持使用 listCallbackUrl() 函数。 但是,触发器会自动包括并发送标头、x-ms-client-tracking-idx-ms-workflow-operation-name,目标服务可以使用这些标头来唯一标识订阅方。
    Unsubscribe Method No 取消订阅目标终结点时使用的方法
    Unsubscribe URI No 用于取消订阅目标终结点的 URL

    Note

    对于取消订阅方法取消订阅 URI属性,请打开高级参数列表,将它们添加到您的操作中。

    例如,以下触发器包括执行订阅和取消订阅操作时要使用的方法、URI 和消息正文。

    屏幕截图显示使用 HTTP Webhook 触发器参数的标准工作流。

    如果需要使用身份验证,可以添加 “订阅身份验证 ”和 “取消订阅身份验证 ”属性。 有关可用于 HTTP Webhook 的身份验证类型的详细信息,请参阅 向出站调用添加身份验证

  6. 继续使用触发器激发时运行的操作生成工作流。

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

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

添加 HTTP Webhook 操作

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

  1. Azure 门户中,打开你的标准逻辑应用资源。

  2. 在资源边栏菜单中的 “工作流”下,选择“ 工作流”,然后选择工作流。

  3. 在工作流边栏菜单中的 “工具”下,选择设计器以打开工作流。

    此示例的第一步是使用HTTP Webhook触发器。

  4. 按照添加操作的常规步骤,将 HTTP Webhook 操作添加到工作流。

    此示例将操作重命名为HTTP Webhook 操作,使步骤的名称更具描述性。

  5. 提供用于订阅和取消订阅调用的 HTTP Webhook 动作参数的值,这些参数类似于 HTTP Webhook 触发器参数

    Property Required Description
    Subscribe Method Yes 订阅目标终结点时使用的方法
    Subscribe URI Yes 用于订阅目标终结点的 URL
    Subscribe Body No 要包含在订阅请求中的任何消息正文。 此示例包括使用 @listCallbackUrl() 表达式来检索逻辑应用的回调 URL,该 URL 唯一标识订阅方(即逻辑应用)。
    Unsubscribe Body No 要包含在取消订阅请求中的可选消息正文

    注意:此属性不支持使用 listCallbackUrl() 函数。 但是,操作会自动包括并发送标头、x-ms-client-tracking-idx-ms-workflow-operation-name,目标服务可以使用这些标头来唯一标识订阅方。
    Unsubscribe Method No 取消订阅目标终结点时使用的方法
    Unsubscribe URI No 用于取消订阅目标终结点的 URL

    Note

    对于取消订阅方法取消订阅 URI属性,请打开高级参数列表,将它们添加到您的操作中。

    例如,以下操作包括执行订阅和取消订阅操作时要使用的方法、URI 和消息正文。

    屏幕截图显示使用 HTTP Webhook 操作参数的标准工作流。

  6. 要添加其他操作属性,请打开“高级参数”列表。

    例如,如果需要使用身份验证,可以添加 “订阅身份验证 ”和 “取消订阅身份验证 ”属性。 有关可用于 HTTP Webhook 的身份验证类型的详细信息,请参阅 向出站调用添加身份验证

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

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

触发器和操作输出

下面是有关 HTTP Webhook 触发器或动作的输出的详细信息,该触发器或动作返回以下信息:

Property name 类型 Description
headers 对象 请求中的标头
body 对象 包含请求中正文内容的对象
状态代码 int 请求中的状态代码
Status code Description
200 OK
202 Accepted
400 Bad request
401 Unauthorized
403 Forbidden
404 Not Found
500 内部服务器错误。 发生未知错误。

使用辅助访问密钥生成回叫 URL

逻辑应用工作流具有两个访问密钥:主密钥和辅助密钥。 默认情况下,Azure 逻辑应用使用主键为 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": {}
}