Compartir a través de

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

适用于:Azure 逻辑应用(消耗 + 标准)

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

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

  • HTTP Webhook 触发器在运行工作流之前等待事件从 Azure 事件中心 到达。
  • 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 触发器参数,提供订阅和取消订阅调用的值:

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

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

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

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

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

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

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

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

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

添加 HTTP Webhook 操作

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

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

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

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

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

    参数 Required Description
    订阅方法 Yes 用于订阅目标终结点的方法。
    订阅 URI Yes 用于订阅目标终结点的 URL。
    订阅正文 No 要包含在订阅请求中的任何消息正文。 此示例包含唯一标识订阅服务器的回调 URL,即工作流,方法是使用 listCallbackUrl() 表达式函数 检索操作的回调 URL。
    取消订阅正文 No 包含在退订请求中的任何消息正文。 可以使用 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列出回调 URL 的 REST API 方法 自动生成。 默认情况下,回调 URL 中的 SAS 令牌没有基于时间的到期时间。 回调 URL 在工作流运行持续时间内保持有效。

超时限制

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

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

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

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

有关其他 HTTP 限制,请参阅 Azure 逻辑应用 中的 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 名称 类型 Description
headers JSON 对象 请求中的标头。
body JSON 对象 具有来自请求的正文内容的对象。
status code int 请求中的状态代码。
状态代码 Description
200 OK
202 Accepted
400 错误的请求
401 Unauthorized
403 Forbidden
404 未找到
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": {}
}