Watson Assistant中如何实现偏离对话的条件式返回?
解决方案:Watson Assistant 偏离对话后的分支跳转需求
当然可以实现这个需求!不管是用可视化编辑器还是手动修改对话JSON,都能搞定这个场景。核心思路是利用上下文变量记录对话位置,再结合偏离对话节点的分支逻辑来控制跳转。
具体实现步骤
1. 记录当前对话节点的上下文变量
在每个需要支持“返回”的关键对话节点中,添加一个上下文变量(比如last_valid_node),用来存储当前节点的名称或ID。这样后续要返回时,就能精准定位到之前的位置。
- 可视化编辑器操作:在节点的「上下文」面板中添加键值对:
last_valid_node→ 节点名称(比如“订单查询节点”) - JSON编辑方式:在对应节点的
context字段中添加:
"context": { "last_valid_node": "订单查询节点" }
2. 自定义偏离对话(Off-topic)的回复逻辑
默认的偏离对话节点只会提示用户“我不太理解”,你需要修改这个节点的回复,引导用户选择是否切换话题:
你是不是想聊别的内容?请回复Yes或No。
3. 添加分支节点处理用户回复
在偏离对话节点下添加两个子节点,分别匹配用户的“Yes”和“No”回复:
- 当用户回复“Yes”:创建一个普通节点,直接处理新话题即可,无需跳转回原流程。比如回复“好的,那我们聊聊别的吧!”,然后进入新的对话分支。
- 当用户回复“No”:创建一个节点,设置跳转逻辑回到
last_valid_node记录的位置:- 可视化编辑器:在节点的「下一步」中选择「跳转到特定节点」,然后输入
{{last_valid_node}}(引用上下文变量) - JSON编辑方式:在该节点的
next字段中添加跳转指令:
- 可视化编辑器:在节点的「下一步」中选择「跳转到特定节点」,然后输入
"next": { "jump_to": { "node": "{{last_valid_node}}" } }
完整JSON示例片段
这里给你一个简化的对话节点JSON示例,方便你参考:
{ "dialog_nodes": [ // 示例原对话节点:订单查询 { "type": "standard", "title": "订单查询节点", "output": { "generic": [ { "response_type": "text", "text": "请问你要查询哪个订单的状态?" } ] }, "context": { "last_valid_node": "订单查询节点" }, "conditions": "#订单查询" }, // 偏离对话处理节点 { "type": "off_topic", "title": "偏离对话处理", "output": { "generic": [ { "response_type": "text", "text": "你是不是想切换话题?请回复Yes或No。" } ] }, "children": [ // 匹配Yes的分支 { "type": "standard", "title": "确认切换话题", "conditions": "@Yes", "output": { "generic": [ { "response_type": "text", "text": "好的,那我们聊聊别的吧!" } ] } }, // 匹配No的分支,跳转回原节点 { "type": "standard", "title": "返回原对话", "conditions": "@No", "next": { "jump_to": { "node": "{{last_valid_node}}" } }, "output": { "generic": [ { "response_type": "text", "text": "好的,我们回到之前的话题。" } ] } } ] } ] }
注意事项
- 确保每个需要支持返回的节点都更新了
last_valid_node变量,避免跳转错误。 - 如果你的对话中有大量节点,可以考虑用节点ID代替名称,ID在Watson Assistant的节点详情中可以找到,更稳定不易出错。
内容的提问来源于stack exchange,提问作者A H
相关产品推荐
相关产品推荐

