外观
流程脚本 chat 节点
chat 节点在节点内部执行持续 ASR、无状态 Chat SSE、分句 TTS 和插话取消,退出后按 handle 回到主流程。
json
{
"id": "chat-sales",
"type": "chat",
"data": {
"opening_prompt": "您好 {customer_name},您可以直接告诉我需求。",
"chat_profile": "general-assistant",
"branches": [{ "key": "done", "desc": "诉求已解决或用户明确结束" }],
"max_turns": 6,
"silence_prompt": "抱歉,我没有听清,请再说一次。",
"error_prompt": "抱歉,系统暂时无法继续对话。",
"save_as": "chat_result"
}
}每个语义分支以及固定的 timeout、error 都必须有同名 sourceHandle 连线;语义分支不能使用这两个保留 key。chat_profile 必须来自 /api/chat/capabilities。
save_as 会注册 .status、.exitKey、.turnCount、.summary、.lastUserText、.lastAssistantText、.confidence 和 .reason 模板变量。完整对话只进入 transcript;同一通电话的 chat 节点共享由 callflow-esl 截断维护的历史。
节点内持续 ASR 固定使用 bargeInTrigger: "vad":只有非空 partial / final transcript 才会停止当前 TTS、取消旧 SSE 并进入新一轮。空 speech-start、纯空白 partial 或只有 VAD flags 的事件不会打断分句播放。每个 TTS chunk 会记录序号、 字符数、完成状态、interruptedBy 和 stopReason,诊断日志不额外复制回复正文。