想要在数字人视频生成任务完成后,第一时间收到通知并自动触发后续动作——比如把视频发到企业微信、存进云盘,或者直接推流到直播间?那关键一步就是配好百度一镜的Webhook。简单来说,你需要一个能接收HTTP POST请求的服务地址,并且得确保它稳定返回200状态码,否则平台会判定推送失败、停止重试。

确认Webhook接收端已就绪
先保证你有一个能接收HTTP POST请求的服务地址。它可以是内网调试用的RequestBin链接,也可以是部署在公网的Node.js/Python接口,甚至直接填钉钉或企微机器人的Webhook URL。注意:该URL必须支持POST方法,且能稳定响应200状态码,否则百度一镜会判定推送失败并停止重试。
如果你用钉钉机器人,记得提前在群设置里开通自定义机器人,复制那个“Webhook地址”;如果是自建服务,确保路由路径比如/webhook/baidu-yijing已经存在,并且能正确解析JSON体。
进入百度一镜控制台配置推送
登录百度一镜数字人平台 → 点右上角头像 → 进入「账号设置」→ 选择「Webhook管理」标签页。接着点击「新建推送规则」,在「事件类型」下拉框里选「视频生成完成」——注意不是「任务提交成功」或「渲染中」,别选错了。
在「目标URL」栏粘贴你准备好的接收地址;勾选「启用签名验证」——这一步必须开启,否则百度一镜不会发送X-Baidu-Signature和X-Baidu-Timestamp这两个头部字段。然后填写「密钥」:这个密钥由你自行设定,仅用于服务端验签,必须与你后端代码中配置的密钥完全一致。保存时系统会自动生成一个push_id,这个ID会随每次推送一起下发,可以用来做幂等去重。
验证推送是否生效
有两种验证方式。方法一:提交一条测试视频生成任务(比如用最简脚本只说一句“你好”),等它状态变成「已完成」。方法二:在「Webhook管理」页面点击对应规则右侧的「手动触发测试」按钮,平台会立即向你的URL发送一条结构化模拟数据,包含event_type、video_url、task_id、duration_ms等字段。
如果接收端日志里出现了含"event_type":"video_generate_success"的请求,并且响应状态码是200,那就说明通道已经通了。注意:测试请求不携带真实视频文件,只有元数据;正式生成的视频URL是直链,有效期只有7天,请及时下载或转存。
服务端验签与解析(关键步骤)
第一步:从HTTP Header中提取X-Baidu-Timestamp和X-Baidu-Signature两个字段。
第二步:取当前时间戳(毫秒级),与X-Baidu-Timestamp做差值,判断是否超过5分钟——超过则直接拒绝,这是为了防止重放攻击。
第三步:拼接待签名字符串:timestamp={X-Baidu-Timestamp}&body={原始请求体JSON字符串},使用你在控制台填写的密钥,通过HMAC-SHA256算法生成摘要,再Base64编码。
第四步:将生成的签名字符串与X-Baidu-Signature逐字符比对,完全一致之后才能解析video_url并执行业务逻辑。
