1

这是我在使用 dialogflow CX 时遇到的错误的详细信息

我的机器人旨在从起始页面转到不同的流程,从每个流程转到其他任何流程并返回到起始流程。

最近,我注意到如果我们在同一会话中调用流超过 3 次,我们会在第 4 次出现以下错误:

检测到超过 10 个嵌套流转换

当我们转到任何 3 个流程并且在执行第 4 个任务时发生相同的错误时,也会发生这种情况。

4

1 回答 1

1

我遇到了同样的问题,经过一番研究,我找到了解决方法。问题是,通过从一个流到另一个流,您并没有“关闭”它们,并且对话流发现自己处于 10 级嵌套对话中:要解决它,您每次去其他任何地方都需要关闭流。

默认情况下,Dialogflow 将尝试坚持对话流,直到它到达 end。如果在对话中,您转到另一个流程,它会跟随页面直到流程结束,然后返回上次访问的流程并继续进行,直到它也完成该流程,依此类推,直到“结束会话”。

这使您可以建立与“主要路径”有偏差的复杂对话,但当您有多个“主要路径”时更难处理。

我最初将我的机器人设计成和你的一样,但遇到了同样的错误,所以我不得不改变策略。我做了如下:

  1. 创建了一个“主要流程”,其中包含通往所有其他流程的路线组和一些管理页面(某些问题的跟进、入职、亵渎处理等)。此流程是静止的,这意味着当您在给定页面中时,您实际上无法前往流程中的其他任何地方,只能通过路线组到达其他流程。如果用户说再见,我会结束会话,仅此而已。
  2. 将所有其他流程更改为转到结束流程页面而不是转到“主要流程”。这可以防止 dialogflow 遇到您提到的错误。每个流程现在都有自己的页面和对话,但是当任务完成而不是让路由转到“主要流程”时,您有一个转到“结束流程”的路由。这允许 dialogflow关闭您正在使用但没有的流程,正如您发布的那样,

检测到超过 10 个嵌套流转换

所以现在,每次对话开始时:

  1. 你去主流;
  2. 然后根据你告诉机器人你去另一个流程(处理那个意图);
  3. 当您到达该流程的末尾时(也许您已经完成并订购或请求了帮助),有一条通往“结束流程”页面(内置)的路线。
  4. 这会将您带回到您访问过的最后一个流程(在我们的例子中是“主要流程”)。
  5. 从这里开始,您处理另一个意图,依此类推,直到您转到“结束会话”页面并且机器人关闭。

唯一需要测试的是不能从其他流跳转到其他流,但是每个流只能从主流访问(这样可以避免卡在对话里面)。

于 2021-04-30T09:21:12.947 回答