29 lines
1.0 KiB
Python
29 lines
1.0 KiB
Python
"""
|
||
对话 TTS 音频 URL 下发到客户端。
|
||
|
||
与回忆录章节图片一致:私有桶下不能把「直链」当公开可读 URL 使用,应对 COS object key
|
||
生成预签名下载地址后再交给 App(参见 `normalize_image_assets_for_api` 中的 `get_download_url`)。
|
||
|
||
持久化(DB / Redis)仍保存 upload 返回的 canonical URL,仅在 API 响应与 WS 实时下发时做 presign。
|
||
"""
|
||
|
||
from __future__ import annotations
|
||
|
||
from app.core.cos_url_keys import presign_tts_urls_for_playback
|
||
from app.ports.storage import ObjectStorage
|
||
|
||
|
||
def apply_presigned_tts_urls_to_messages(
|
||
messages: list[dict],
|
||
storage: ObjectStorage | None,
|
||
) -> None:
|
||
"""就地改写助手消息的 `ttsAudioUrls` 为预签名 URL;无 storage 时不变。"""
|
||
if not storage:
|
||
return
|
||
for m in messages:
|
||
tts = m.get("ttsAudioUrls")
|
||
if not isinstance(tts, list) or not tts:
|
||
continue
|
||
str_urls = [x for x in tts if isinstance(x, str)]
|
||
m["ttsAudioUrls"] = presign_tts_urls_for_playback(str_urls, storage)
|