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

时间:2018-07-24 18:04:30

标签: actions-on-google dialogflow

我正在使用Api.Ai创建一个机器人。我的回答有30个意图。我希望对话框流程在用户每次问“您是否满意答案”时都向用户询问一个后续问题。基本上,对用户提出的每个问题进行跟进,机器人将回答并回答跟进问题。

场景:

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

1 个答案:

答案 0 :(得分:0)

没有webhook,它会很杂乱,可能会不时地调用后续意图,或触发不需要的意图。最好针对您想要的每种意图进行“是/否”跟进,或者使用webhook并以编程方式进行处理。

不过,如果您只想使用Dialogflow进行操作,则可以这样操作:

  1. 为“是”创建一个单独的新意图,为“否”创建一个单独的意图,并将所有各自的同义词放入用户说来进行培训。
  2. 将输入上下文“ are-you-satisfied”(或您选择的其他内容)添加到“是”和“否”意图中。输入的上下文中不得放置其他上下文。
  3. 在您要问“您是否对答案满意吗?”的意图中,将输出上下文添加为“ are-you-satisfied”,其寿命为2或3。
  4. 根据用例的要求,将其他上下文保留在输出上下文中。

发生这种情况是,您将有2个意图具有输入上下文“ are-you-satisfied”,并用YES或NO调用。这样就不会有后续行动的意图。每当输入上下文出现在输出上下文中并且说是或否时,这两者将作为后续操作。

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

更新 如果您使用的是Webhook,则可以这样操作:

  1. 您可以使用helpersask.for.permission.confirmation”并检查
    if (confirmationGranted) { ... }在单个意图的webhook处理程序方法中。


  2. 如上所述创建两个“是/否”意图,将如上所述的输入上下文和输出上下文分别放置到各自的意图中。
  3. 为YES和NO创建两个Webhook处理程序函数。
  4. 当这些意图被触发时,检查活动上下文是什么,然后像

    那样继续进行

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

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

我的选择是采用辅助方法,或者分别具有“是”或“否”的跟踪意图。