如何通过DialogFlow ES实现Soul Machines数字人的独白式内容展示?
实现DialogFlow+Soul Machines数字人顺序式独白的方案技巧
用上下文(Contexts)控制Intent触发顺序
- 给每个独白步骤的Intent设置输入上下文:比如第一个Intent完成后,输出
step1_finished上下文;第二个Intent的输入上下文设为step1_finished,以此类推。DialogFlow会自动匹配符合上下文条件的Intent。 - 在Soul Machines侧,监听数字人完成当前语音播放的事件,事件触发后直接向DialogFlow发送空请求(或固定触发词),DialogFlow会根据当前会话的上下文自动触发下一个对应的Intent。
自定义Payload传递触发信号
- 在DialogFlow每个Intent的响应中添加自定义Payload,嵌入下一个Intent的标识信息,示例结构如下:
{ "sm_custom": { "next_intent_id": "monologue_step2", "speech_content": "这是第一步的独白内容..." } } - Soul Machines的前端/服务端逻辑读取Payload中的
next_intent_id,等当前语音播放结束后,主动调用DialogFlow的detectIntent接口,传入指定的Intent标识,直接触发下一个步骤的独白。
会话参数(Session Parameters)追踪进度
- 初始化一个会话参数
current_monologue_step,值设为0。每完成一个Intent,就将参数更新为current_monologue_step + 1。 - 后续Intent设置条件触发规则:比如当
current_monologue_step = 1时,触发第二步的独白Intent。 - 结合Soul Machines的状态管理,在数字人完成当前内容后,根据参数值自动发起下一个Intent的请求,确保流程按序推进。
实用优化技巧
- 给所有独白Intent设置最高触发优先级,避免普通对话Intent打断独白流程。
- 在Soul Machines中临时禁用用户输入(隐藏输入框、屏蔽语音采集),直到整个独白序列完成,防止用户误操作干扰。
- 先在DialogFlow模拟器中单独验证Intent的顺序触发逻辑,确认无误后再和Soul Machines集成,减少联调排查成本。
内容的提问来源于stack exchange,提问作者drymolasses
相关产品推荐
相关产品推荐

