首页 > 解决方案 > 如何让 Dialogflow 接受所需实体的任何输入

问题描述

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

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

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

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

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

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

标签: dialogflow-es

解决方案


如果你能问一个没有多重答案的问题会更好。您应该以这样一种方式来表达它,使用户根据您的意图以所需的方式自动回答。

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

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

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

现在,如果用户只说“是”,您将有后续意图来捕获实体,如果信息是在父实体中预先提供的,您可以将后续意图的上下文生命周期设置为“0”这样YES就不会调用后续操作。

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

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

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


推荐阅读