有了 Webhook,你自己的系统可以在 EmbodiFlow 里的工作一完成就做出反应,而不用反复轮询。录制处理完成、工作流运行结束、训练任务成功时,EmbodiFlow 会向你运行的地址发送一个带签名的 JSON 请求。你的服务收到后,可以去拉取新数据、启动下一个任务,或者给团队发一条消息。
添加端点
添加和管理端点需要团队所有者或管理员身份。端点通过命令行或 API 创建,之后在控制台里查看它的投递情况。
创建端点
提供一个 HTTPS 地址,以及它要接收的事件类型(用逗号分隔)。加上 --project-id 可以只接收某一个项目的事件。
embodiflow webhook-endpoints create --url https://example.com/hooks --event-types workflow.run.succeeded,training.job.succeeded也可以直接调用 API:
curl -X POST https://api.embodiflow.io/v1/webhook-endpoints \
-H "Authorization: Bearer $EMBODIFLOW_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/hooks","eventTypes":["workflow.run.succeeded"]}'保存签名密钥
响应里包含端点的 signingSecret。它只显示这一次,请马上把它保存到你的服务里。校验每次投递时都要用到它。
在控制台里检查
打开「设置」,在团队设置中选择「Webhook」。选中你的端点,点击「发送测试 ping」,确认你的服务能收到;测试消息的类型是 webhook.endpoint.ping。下方的「投递记录」列出近期的投递,以及它们的状态、尝试次数和失败原因;填写「开始时间」和「结束时间」后点击「应用筛选」,可以查看其他时间段。如果你的服务宕机期间有投递失败,点击「重放」即可重新发送。
事件
事件类型的列表是固定的,可以放心依赖:
| 事件类型 | 发送时机 |
|---|---|
recording.imported | 录制已导入。 |
recording.processed | 录制处理完成。 |
recording.failed | 录制处理失败。 |
version.created | 数据集版本已创建。 |
version.redacted | 数据集版本已遮盖。 |
version.alias_set | 数据集版本设置了别名。 |
export.succeeded、export.failed | 导出结束。 |
workflow.run.succeeded、workflow.run.failed | 工作流运行结束。 |
training.job.succeeded、training.job.failed | 训练任务结束。 |
collection.submission.decided | 采集提交已被接受或驳回。 |
erasure.completed | 擦除请求已完成。 |
一次投递长什么样
所有事件使用同一个信封:id、type、specVersion、occurredAt、tenantId、事件属于某个项目时还有 projectId,以及 resource 和 data。data 有意只携带 ID 和粗略状态,从不携带记录本身。请用这些 ID 和你自己的凭据,从 API 获取需要的内容。