Webhook 事件推送

在控制台「站点设置 → Webhook」或 REST API POST /tenant/sites/:siteID/webhooks 创建订阅:填写接收 URL、勾选事件、选择渠道。

支持的事件(7 类)

事件说明
content.publish内容发布
content.update内容更新(修改上线时推送)
content.delete内容删除
form.submit表单提交
comment.created新评论
publish.complete站点发布完成
publish.failed站点发布失败
推送时机以上线为准:已上线内容的编辑会先进入「待发布修改」,此时不推 content.update,提升上线(手动发布或自动发布)时才推一次,因此下游收到的始终已经是线上内容,不会同步到半成品。需要提前感知「有修改待发布」请读 GET /tenant/sites/:siteID/publish-preflight 的 pending_drafts。

渠道与消息格式

渠道 custom 推送原始 JSON;wecom / dingtalk / feishu 直接适配企业微信 / 钉钉 / 飞书群机器人格式,填机器人地址即用。

custom 渠道消息体结构:

{
  "event": "publish.complete",
  "timestamp": "2026-08-26T10:00:00+08:00",
  "site_id": 1,
  "site_name": "我的站点",
  "data": { "message": "已发布 32 个页面,版本 v7", "pages": 32, "version": 7 }
}

签名校验(防伪造)

创建订阅时设置签名密钥后,每次推送附带请求头:

服务端用同一密钥对请求体计算 HMAC-SHA256 并与签名头比对,不一致应拒绝。

重试策略

目标不可达或返回非 2xx 时,按 1 分钟 / 5 分钟 / 30 分钟重试 3 次;投递记录可在控制台「Webhook → 推送日志」查看,也可用 POST .../webhooks/:id/test 发送测试消息。