如何让对话流接受所需实体的任何输入



所以我正在尝试创建一个对话流代理,作为一种面试官。

例如,有一次,代理商问"你有任何餐饮服务经验吗?

我创建了实体"以前的职位"、"以前的雇主"和"持续时间",并根据需要标记它们。使用自动扩展并提供足够的示例用户输入,代理可以毫无问题地将以前从未见过的东西分配给这些实体(例如,"是的,我在 X 公司担任 X 年"或"是的,我在 X 公司担任 X 年"(。

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

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

那么,有没有办法让所需实体接受任何输入的提示?

如果您可以提出一个没有多个答案的问题,那就更好了。您应该以这样的方式表达它,使用户在设计您的意图时以所需的方式自动回答。你

提出问题的方式是:"你有任何餐饮服务经验吗?
它的答案大多是"是"或"否"。

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

此外,在最初的父意图中,继续收集相同的实体,但不将它们标记为required。这样,您将自动捕获用户响应,例如"是的,我在X公司担任X年了X"。

现在,如果用户只说"是",您将具有捕获实体的后续意图,如果信息是在父实体中预先提供的,则可以将后续意图的上下文生命周期设置为"0",以便不调用YES跟进。

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

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

对话流设计-对话
一般最佳实践

相关内容