以下是我在使用dialogflow CX 时遇到的错误的详细信息
我的机器人程序被设计为从起始页转到不同的流,从每个流转到其他任何流,然后返回开始流。
最近,我注意到,如果我们在同一会话中调用一个流超过3次,我们第四次会出现以下错误:
检测到超过10个嵌套流转换
当我们转到任意3个流,并且在执行第4个任务时发生相同的错误时,也会发生这种情况。
我遇到了同样的问题,经过一番研究,我找到了一个解决办法。问题是,通过从一个流程到另一个流程;关闭";他们和dialogflow发现自己处于10个层次的嵌套对话中:为了解决这个问题,你需要在每次去其他地方时关闭这些流。
默认情况下,Dialogflow将尝试坚持对话流,直到对话流结束。如果在对话中,你转到另一个流程,它会跟随页面直到流程结束,然后回到最后一个访问的流程,继续进行,直到它也完成了那个流程,依此类推,直到和";结束会话";。
这允许你建立复杂的对话,偏离";主路径";但是当你有多个";主路径";。
我最初把我的机器人设计成和你的一样,但也出现了同样的错误,所以我不得不改变策略。我做了如下:
- 创建了一个">主流";其中路由组转到所有其他流程和一些管理页面(跟进某些问题、入职、脏话处理等(。这个流是固定的,这意味着当你在一个给定的页面上时,你实际上不能去流中的其他地方,只能通过路由组到达其他流。如果用户说再见,我将结束会话,仅此而已
- 将所有其他流更改为转到结束流页面,而不是转到";主流";。这样可以防止对话流遇到您提到的错误。每个流现在都有自己的页面和对话,但当任务完成时,而不是有一条通往";主流";你有一条通往";端流";。这允许dialogflow关闭您正在使用但没有的流,正如您发布的那样
检测到超过10个嵌套流转换
所以现在,每次对话开始时:
- 你进入主流
- 然后根据你告诉机器人的内容,你转到另一个流程(处理该意图(
- 当你到达流的尽头时(也许你已经已完成并订购或请求协助(,有一条路线到";端流";页面(内置(
- 这会让您回到您访问过的最后一个流(在我们的案例中是"主流"(
- 从这里开始,你处理另一个意图,以此类推,直到你转到一个页面";结束会话";机器人关闭
你唯一需要测试的是,你不能从其他流跳到其他流,但每个流只能从主流访问(这将避免被困在对话中(。