我正在尝试在google对话流中开发一个聊天聊天,用户偏离了原始对话流(CF),但最终回到了在中间的原始位置。
机器人程序的响应为粗体例如:原CF:嗨->我能帮你什么忙吗->我想去旅行->好的,我建议去欧洲。你会感兴趣吗->是的->好的,这是的价格
偏离CF:嗨->我能帮你什么吗->我想去旅行->好的,我建议去欧洲。你会感兴趣吗->也许->欧洲有很多美丽的目的地你可以去。你感兴趣吗->是的->好吧,这是价格
我发现实现这一点的唯一方法是制定一个新的意图并制定后续行动,这使这变得非常多余。我不得不完全发展出两种不同的意图。有没有什么方法可以让我只为偏离的CF制定一个意图,并将其加入到最初的意图中?
一个简单的解决方案是制定许多后续意图,但这是一个永远不会结束的过程
这是我想建议的另一种方法:
- 列出在发生以下情况时要处理的重要意图偏差
- 当达到目的时,将其保存到某个数据库(或缓存)中,比如说
unfinished_intent
- 在每个请求或每2-3个请求中,检查
unfinished_intent
,如果它包含一些意向名称,则提示输入 - 完成您的意图后,删除
unfinished_intent
这只是一个想法,如何实现取决于您
我建议这样做是因为它是通用的,可以涵盖所有情况。
希望能有所帮助。
请记住,用户可以随时更改对话的方向。因此,使用一长串的后续意图是个坏主意。即使使用短链也是个坏主意。后续行动的意图应该局限于相当狭窄的情况,在大多数情况下,它们既不明智也不必要。
相反,要跟踪您所拥有的关于用户的信息,以及您仍然需要作为上下文一部分的信息。如果你正在进行旁敲侧击,或者提出了建议,也要跟踪,因为用户可能会对此提出问题。建立许多顶级意向,代表用户在说什么,而不是你在谈话中的位置或你计划如何回答。
另请参阅思考声音:设计对话,而不是基于StackOverflow上这个答案的代码。