在API.AI中,如何在没有webhook的情况下为每个Intent触发相同的后续事件



我正在使用Api.Ai创建一个机器人。我有一组30个意图和响应。我希望每当用户问"你对答案满意吗"时,Dialog flow都会问用户一个后续问题。基本上,对于用户提出的每个问题,机器人都会给出答案和后续问题。

场景:

User: What is the Maternity insurance plan? (No action here)
Bot: Reply with some Response from Text Response.
Bot: Are you satisfied with the answer?
User: YES/NO

如果没有webhook,它会很混乱,可能会不时调用后续意图或触发不需要的意图。最好对你想要的每一个意图都进行YES/NO跟进,或者使用webhook并以编程方式处理它

不过,如果你只想使用Dialogflow,那么你可以这样做:

  1. 为"是"创建一个单独的新意图,为"否"创建单独的意图,并将所有相应的同义词放入User Says中进行培训
  2. 在YES意向和NO意向中添加输入上下文"are-you-satisfied"(或您选择的其他内容(。输入上下文中不应放置其他上下文
  3. 在询问"你对答案满意吗?"的意图中,添加一个输出上下文作为"are-you-satisfied",其寿命为2或3
  4. 根据用例的要求,将其他上下文保留在输出上下文中

这样,您将有两个输入上下文为"are-you-satisfied"的意图,并用YES或NO调用。因此不会有后续意图。当输入上下文出现在输出上下文中并且说是或否时,这两个将充当后续操作。

但正如我之前所说,当有其他活动的上下文在说"是"或"否"后准备启动时,可能会变得混乱。在这种情况下,它可能基于活动上下文触发不同的意图,并且可能不被用户喜欢。

UPDATE如果您正在使用webhook,您可以这样做:

  1. 您可以使用助手"ask.for.permission.confirmation"并检查
    个人意图的webhook处理程序方法中的if (confirmationGranted) { ... }


  2. 如上所述创建两个YES/NO意图,将输入上下文和输出上下文分别放入各自的意图中
  3. 为YES和NO创建两个webhook处理程序函数
  4. 当这些意图被触发时,检查活动上下文是什么,并像一样相应地进行

    switch (activeContext){ case context1: .... case context2: .... }

  5. 您可能需要操纵上下文的寿命,以免在之后触发错误的意图

我的选择是使用辅助方法,或者单独使用YES或NO的后续意图。

最新更新