在 Azure 逻辑应用中使用 HTTP Webhook 创建和运行基于事件的自动化工作流

借助 Azure 逻辑应用和内置 HTTP Webhook 连接器,可以创建订阅服务终结点,等待特定事件以及基于这些事件运行(而不是定期检查或轮询该终结点)的自动化任务和工作流。

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

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

本文介绍如何使用 Webhook 触发器和 Webhook 操作,以便逻辑应用可以接收和响应服务终结点上的事件。

Webhook 的工作原理

Webhook 触发器基于事件,它不依赖于定期检查或轮询新项。 保存以 Webhook 触发器开头的逻辑应用,或者将逻辑应用从已禁用状态更改为已启用状态时,Webhook 触发器会通过将一个回调 URL 注册到指定服务终结点,来订阅该终结点。 然后,该触发器将等待该服务终结点调用该 URL,从而开始运行逻辑应用。 与请求触发器类似,发生指定的事件时,会立即激发逻辑应用。 如果你删除触发器并保存逻辑应用,或者将逻辑应用从已启用状态更改为已禁用状态,则 Webhook 触发器将从服务终结点取消订阅。

Webhook 操作也基于事件,它会通过将一个回调 URL 注册到指定服务终结点,来订阅该终结点。 Webhook 操作将暂停逻辑应用的工作流,在逻辑应用恢复运行之前,会等待该服务终结点调用该 URL。 在以下情况下,Webhook 操作将从服务终结点取消订阅:

  • 当 Webhook 操作成功完成时
  • 如果逻辑应用运行在等待响应时已取消
  • 在逻辑应用超时之前

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

有关详细信息,请参阅以下主题:

有关发往逻辑应用的入站调用(例如传输层安全性(TLS,以前称为安全套接字层 (SSL))或 Azure Active Directory 开放式身份验证 (Azure AD OAuth))的加密、安全性和授权的信息,请参阅保护访问和数据 - 对基于请求的触发器的入站调用的访问

先决条件

添加 HTTP Webhook 触发器

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

  1. 登录到 Azure 门户。 在逻辑应用设计器中打开空白逻辑应用。

  2. 在设计器上的搜索框中,输入 http webhook 作为筛选器。 在“触发器”列表中选择“HTTP Webhook”触发器。

    Select HTTP Webhook trigger

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

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

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

    Enter HTTP Webhook trigger parameters

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

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

  4. 若要添加其他触发器属性,请打开“添加新参数”列表。

    Add more trigger properties

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

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

  6. 完成后,请记得保存逻辑应用。 在设计器工具栏上选择“保存”。

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

添加 HTTP Webhook 操作

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

  1. 登录到 Azure 门户。 在逻辑应用设计器中打开逻辑应用。

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

  2. 在要添加 HTTP Webhook 操作的步骤下,选择“新建步骤”。

    若要在步骤之间添加操作,请将鼠标指针移到步骤之间的箭头上。 选择出现的加号 (+),然后选择“添加操作”。

  3. 在设计器上的搜索框中,输入 http webhook 作为筛选器。 在“操作”列表中选择“HTTP Webhook”操作。

    Select HTTP Webhook action

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

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

    在此示例中,操作包括执行订阅和取消订阅操作时要使用的方法、URI 和消息正文。

    Enter HTTP Webhook action parameters

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

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

  5. 若要添加其他操作属性,请打开“添加新参数”列表。

    Add more action properties

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

  6. 完成后,请记得保存逻辑应用。 在设计器工具栏上选择“保存”。

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

触发器和操作输出

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

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

连接器参考

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

后续步骤