技术干货
260404_火山播客网关_HTTP约定
小年糕 ·
一、百炼 → Java(HTTP POST)
URL(开发机默认,导入百炼后请改为公网/内网可达地址):
http://127.0.0.1:9802/service/bailian-podcast/v1/dialogue
Headers
Content-Type: application/jsonX-Bailian-Podcast-Secret:与后端volc.podcast.bailian-webhook-secret(或环境变量BAILIAN_PODCAST_WEBHOOK_SECRET)完全一致。
推荐做法(非裸奔)
- 本地或部署环境设置环境变量
BAILIAN_PODCAST_WEBHOOK_SECRET为足够长的随机串(勿提交仓库)。 - 在
template.yml的 API 节点中,将请求头X-Bailian-Podcast-Secret的占位值改为同一串(或在百炼控制台编辑该节点时填入;导入模板后务必改掉REPLACE_ME_SAME_AS_BAILIAN_PODCAST_WEBHOOK_SECRET)。 - 后端
bailian-webhook-secret非空时,未带或带错 Secret 的请求会返回 401 / 未授权。
Body(与脚本 api_request_body 一致,由 json.dumps 生成)
event_id: number(整型;无则 0)event_title: stringaction: 固定3dialogue_script: string(大模型双人对话全文)
Response(建议百炼 API 节点透传给后端工作流)
status:"OK"/"FAILED"event_id: numberaudio_url: string(网关转存后的业务 OSS URL)duration_seconds: number(可空;优先来自火山PodcastRoundEnd,兜底按文本估算)message: string(失败时可选)
仅本机调试:可将后端 bailian-webhook-secret 留空,此时不校验 Secret(勿用于公网)。
二、Java → 火山(WebSocket v3)
实现类:VolcPodcastAction3Synthesizer(action=3、input_info.return_audio_url=true,解析 PodcastEnd.meta_info.audio_url)。
鉴权(勿写入仓库,用环境变量):
VOLC_PODCAST_APP_ID→ 控制台 APP IDVOLC_PODCAST_ACCESS_KEY→ Access Token(请求头X-Api-Access-Key)
application.yml 中 volc.podcast.enabled=true 时:注册合成 Bean;EventPodcastServiceImpl 在原有 TTS 之前优先走火山播客。
三、音频持久化(OSS)
火山 PodcastEnd 返回的 audio_url 为临时可下载地址,默认由服务端 HTTP 拉取 MP3 → 写入业务阿里云 OSS,再:
- 写入
TPublishInfo.ai_podcast_audio_url的,以及 /service/bailian-podcast/v1/dialogue返回的audio_url
均为 本桶持久 HTTPS 路径(与现有 TTS 上传规则一致)。若 URL 已是本桶 OSS 公网地址则跳过重复上传。
配置:volc.podcast.persist-to-oss(默认 true);本地仅验证火山链路时可设 false,得到临时链(勿用于生产落库)。
四、后端其它
调用百炼工作流入参同时包含 dynamics_list(与画布「素材清洗」脚本一致)。
五、联调
- 启动
yt-daily-management-service,设置BAILIAN_PODCAST_WEBHOOK_SECRET与火山相关环境变量,volc.podcast.enabled=true。 curl带-H "X-Bailian-Podcast-Secret: <你的值>"直打/service/bailian-podcast/v1/dialogue,再接通百炼 API 节点。- WebSocket 帧若解析失败,对照官方
volc_speech_java_sdk校准SamiPodcastV3Codec中的事件号。
评论 (1)
火山播客网关
发表评论