如何使Dialogflow接受所需实体的任何输入

时间:2018-09-12 00:25:34

标签: dialogflow

因此,我正在尝试创建一个对话流代理程序,该代理程序可用作一种访问员。

例如,代理商有时会询问“您有餐饮服务经验吗?”

我创建了实体“先前职位”,“先前雇主”和“持续时间”,并根据需要对其进行了标记。使用自动扩展并提供足够的示例用户输入,代理可以轻松地将以前从未见过的事物分配给这些实体(例如,“是的,我曾在X公司担任X职X年”或“是, X年以来,我在X公司担任过X”。

但是,当用户没有提供所有必需的实体时,我会遇到提示问题,我认为这很普遍,例如,用户可能会简单地回答“是”。如果用户不提供这些实体之一,则提示将询问“您的职位是什么”和/或“您在哪里工作”和/或“您在那里工作了多长时间”。但是,即使选中了“自动扩展”,系统也不会接受与我提供的示例实体之一不匹配的任何用户输入(“ Taco Bell”,“ 4年”,“ cook”,“ etc” ),然后不断重复该问题。当然,我无法预测所有可能的反应。

我知道还有其他方法可以解决此问题(例如,提示用户在原始问题中输入三个类别或将其分解为多个意图),但是我真的想找到一种方法来解决此特定问题可能是为了减少笨拙的聊天机器人。

那么,有什么方法可以获取要求的实体接受任何输入的提示?

1 个答案:

答案 0 :(得分:0)

最好问一个没有多个答案的问题。您应该以这样一种方式措辞:使用户在设计您的意图时以所需的方式自动回答。

您提出问题的方式:“您有任何餐饮服务经验吗?”
答案大多是肯定或否。

因此,我建议您放置两个跟踪意图来捕获YESNO,并在YES跟踪意图中捕获其他必需的实体。在这里,您应将其标记为required

另外,在原始父项意图中,请继续收集相同的实体,但不要将它们标记为required。这样,您将自动捕获用户响应,例如“是的,我在X公司工作了X年X”。

现在,如果用户仅说“是”,则您将具有跟踪意图以捕获实体,并且如果信息是在父实体中预先提供的,则可以将跟踪意图的上下文寿命设置为“ 0”,因此不会调用YES跟踪。

您将需要使用上下文和多种意图来捕获所有场景。

请看以下链接,以了解如何设计对话并遵循最佳实践。这些几乎可以应用于每个聊天机器人应用。

Dialogflow Design-Conversation
General Best Practice