如何在语法不正确的情况下保存用户输入而没有回退意图?

时间:2019-11-03 14:43:14

标签: dialogflow dialogflow-fulfillment

我正在制作一个投诉系统,在该系统中,在问了一些连续问题之后,我要求用户输入他的投诉。现在,用户可以输入任何类型的句子,无论有无语法错误。我想存储该投诉语句,无论语法错误如何。我在这里面临2个问题:

问题 (1)当语法错误的句子出现时,它转到回退意图,而不是我随意图附加的Webhook。 (2)如果该投诉句子中包含一些其他意图的训练词(例如WelcomeIntent的“ Hello”),那么无论我为确保它保留在该意图中而设置的上下文值,它都会转到该意图。

到目前为止我尝试过的事情 (1)我尝试了跟进意图,并将所有意图保持在父母的水平。没有观察到这种差异。 (2)我删除了默认的“备用”意图,并为投诉意图创建了一个自定义“备用”意图,并为其附加了Webhook。因此,现在,当用户在投诉意图中编写了错误的语法时,它将转到与其关联的“后备”并在那里激活Webhook。但这不是一个好的解决方案,因为问题2仍然存在。

1 个答案:

答案 0 :(得分:0)

您在正确的轨道上。为了捕获非结构化的响应,您将需要依靠后备意图。但是,要实现所需的功能,您将需要利用Contexts

Dialogflow将排除具有与当前活动上下文不同的传入上下文的Intent。没有传入上下文的意图将始终进行评估,但只有在具有有效活动传入上下文的任何意图之后才进行评估。

我假设您正在使用成就感来捕获对话中的所有信息。我会这样构造您的Intent:

  • 具有未设置任何上下文的后备意图(类似于默认值)。您可能想要也可能不想要实现它。
  • 让所有“顺序”问题共享相同的传入上下文(我们将其称为question-context仅供参考),并确保您在每个传出上下文中(或继续设置)此上下文的寿命(或保持重置)在针对他们的实现中)。
  • 当您要他们的投诉时,请清除此上下文(将其寿命设置为0)并设置其他上下文(将其称为complaint-context)。
  • 使用complaint-context作为传入上下文创建另一个后备意图。为此设置实现,它将发送捕获的文本。