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

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

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

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

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

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

本指南介绍了如何使用 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),以前称为安全套接字层 (SSL))或 Microsoft Entra ID 开放式身份验证 (Microsoft Entra ID OAuth)的加密、安全性和授权的信息,请参阅保护访问和数据 - 对基于请求的触发器的入站调用的访问

连接器技术参考

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

先决条件

  • Azure 帐户和订阅。 如果没有 Azure 订阅,请注册一个免费 Azure 帐户

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

  • 要在其中等待目标终结点上发生特定事件的标准或消耗逻辑应用工作流。 要开始使用 HTTP Webhook 触发器,请使用空白工作流创建逻辑应用。 要使用 HTTP Webhook 操作,请使用所需的任意触发器启动工作流。 此示例的第一步是使用 HTTP 触发器。

添加 HTTP Webhook 触发器

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

  1. Azure 门户中,打开设计器中的标准逻辑应用和空白工作流。

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

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

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

    properties 必选 说明
    订阅 - 方法 订阅目标终结点时使用的方法
    订阅 - URI 用于订阅目标终结点的 URL
    订阅 - 正文 要包含在订阅请求中的任何消息正文。 此示例包括使用 @listCallbackUrl() 表达式来检索逻辑应用的回调 URL,该 URL 唯一标识订阅方(即逻辑应用)。
    取消订阅 - 方法 取消订阅目标终结点时使用的方法
    取消订阅 - URI 用于取消订阅目标终结点的 URL
    取消订阅 - 文本 要包含在取消订阅请求中的可选消息正文

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

    注意

    对于取消订阅 - 方法取消订阅 - URI属性,打开高级参数列表以将其添加到操作。

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

    Screenshot shows Standard workflow with HTTP Webhook trigger parameters.

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

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

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

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

添加 HTTP Webhook 操作

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

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

  1. Azure 门户中,打开设计器中的标准逻辑应用和工作流。

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

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

  3. 提供要对订阅和取消订阅调用使用的 HTTP Webhook 操作参数(类似于 HTTP Webhook 触发器参数)值。

    properties 必选 说明
    订阅 - 方法 订阅目标终结点时使用的方法
    订阅 - URI 用于订阅目标终结点的 URL
    订阅 - 正文 要包含在订阅请求中的任何消息正文。 此示例包括使用 @listCallbackUrl() 表达式来检索逻辑应用的回调 URL,该 URL 唯一标识订阅方(即逻辑应用)。
    取消订阅 - 方法 取消订阅目标终结点时使用的方法
    取消订阅 - URI 用于取消订阅目标终结点的 URL
    取消订阅 - 文本 要包含在取消订阅请求中的可选消息正文

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

    注意

    对于取消订阅 - 方法取消订阅 - URI属性,打开高级参数列表以将其添加到操作。

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

    Screenshot shows Standard workflow with HTTP Webhook action parameters.

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

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

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

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

触发器和操作输出

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

属性名称 类型​​ 说明
headers object 请求中的标头
body object 包含请求中正文内容的对象
状态代码 int 请求中的状态代码
状态代码 说明
200 确定
202 已接受
400 错误的请求
401 未授权
403 禁止
404 未找到
500 内部服务器错误。 发生未知错误。

后续步骤