我那会儿正盯着日志发呆。给圣诞老人视频生成器接HeyGen的接口,视频提交上去,返回个ID,然后——没下文了。异步处理的文档写得很清楚,但等webhook通知的那几分钟,总是忍不住怀疑自己的配置是不是又写错了地方。

后来发现,坑全在集成方式上。这篇文章把Spring Boot和Kotlin里的关键对接逻辑拆出来,包括webhook接收那部分——就是那个让我半夜爬起来看日志的东西。

打开网易新闻 查看精彩图片

先说配置这一层。HeyGen给三条关键参数:接口地址、API密钥、webhook验证用的secret。别信那些直接把密钥写死在yaml里的教程。环境变量绕不过去,每次部署换环境都要改代码的话,迟早出事。我用的是configuration properties的方式取值,至少干净一点。

REST客户端的套路更值得说。官方文档示例里header叫"x-api-key",不是常见的"Authorization: Bearer",第一次调用报401的时候我就卡在这儿。Kotlin模块那个bean也得显式注册,jackson序列化用到的,不然后面那些DTO的JsonProperty注解全白写。

视频生成请求的DTO结构挺有意思。type固定写"avatar",avatar_id和voice_id配不同的数字人形象和音色,script就是你要念的文案。这里面分辨率写1080p、比例16:9都是硬编码进去的,跟项目需求绑死了。voice_settings那个子对象我没展开,递归结构还得再拆一层。

webhook才是整套逻辑里最脆弱的一环。HeyGen异步处理完视频之后回调你的服务器,你要验证签名、拿到video_id、再调另一个查询接口去取最终视频地址。验证签名的逻辑如果写反了或者secret配错,等来的不是视频链接,是静默失败——日志里啥都没有的那种。

一个圣诞老人视频生成器,后端全卡在异步通知这条链路上。配置写对了,流程就能跑通;漏一行验证逻辑,就得手动去后台查状态。