Webhook 概述
Webhook 概述
示例应用程序
如果您想为 Frame.io Webhook 构建自己的消费者,请随时获取并扩展我们在 GitHub 上的示例应用程序。
前言
Webhook 提供了一种方式,可以将 Frame.io 内部发生的事件转化为通知,这些通知可以发送到外部系统进行处理、作为 API 回调,并最终实现工作流自动化。
设置
Webhook 可以在我们开发者网站的 Webhook 区域进行配置。Webhook 需要以下信息:
- 名称 — 仅在开发者网站上显示。
- URL — 事件的传送目标位置。
- 团队 — 此 Webhook 将添加到哪个团队。
- 事件 — 哪个或哪些事件应该触发该 Webhook。
支持的事件
单个 Webhook 可以订阅以下任意数量的事件:
项目
资产
资产版本化
当 asset.versioned 事件触发时,您将收到一个包含已版本化资产 ID 的有效载荷,而不是版本堆栈本身。因此,如果您期望能够将该 id 传递给另一个函数,并认为它是版本堆栈的 id,那么您必须先查找并追踪那个特定的“主”资源。
资产标签更新
当通过公共 API 对 /v2/assets/:id 端点发起 PUT 调用来更改状态标签时,asset.label.updated 事件不会触发 (BES-408)。但是,当使用任何原生 Frame.io 应用程序和集成(Web、iOS、Premiere、After Effects、FCPX 等)更新状态标签时,该事件会触发。
评论
审阅链接
协作者
团队成员
负载
Frame.io 会向指定的 Webhook 端点传递一个 JSON 负载。以下是 asset.created 事件的负载示例:
所有负载都包含一个 type 字段,用于指示发生的事件类型,以及一个 resource 对象。resource 对象指定了与此事件相关的资源的 type 和 id。在上述 asset.created 事件示例中,这将是新创建资产的 id。此外,负载还包含 user 和 team 对象。它们分别引用了触发该事件的用户,以及该资源所属的团队上下文。除了直接的用户和团队上下文之外,我们不会包含有关订阅资源的任何其他信息。如果您的应用程序需要其他信息或上下文,我们建议使用我们的 HTTP API 发起后续请求。
重试
如果在向您的服务传递 Webhook 时发生错误(非 200 状态代码响应)或超时,负载将被重试三次,总共会进行四次传递尝试。
安全性
默认情况下,所有 Webhoo 都会提供一个签名密钥。此项不可配置。此密钥可用于验证请求是否来自 Frame.io。
验证 Webhook 签名
为了保护集成免受中间人攻击和重放攻击,验证 Webhook 签名至关重要。验证可确保 Webhook 负载确实由 Frame.io 发送,并且负载内容在传输过程中未被修改。
POST 请求中包含以下标头:
请按照以下步骤验证签名:
- 从 HTTP 标头中提取签名
- 通过组合版本、传递时间和请求体:
v0:timestamp:body来创建一个用于签名的消息 - 使用您的签名密钥计算 HMAC SHA256 签名。注意:提供的签名以
v0=为前缀。目前 Frame.io 只有这一种用于请求签名的版本。请确保在您计算出的签名前也加上此前缀。 - 比较!