我在dialogflow中创建了一个披萨机器人。情况就像..
机器人说:嗨,你想要什么。
用户说:我要披萨。
如果用户说I want watermelon
或I love pizza
,那么dialogflow应该以错误消息响应并再次询问相同的问题。在收到用户的有效回复后,机器人应提示第二个类似
Bot说:您想要哪种披萨。
用户说:我要蘑菇(任何)披萨。
如果用户提供了诸如I want icecream
或I want good pizza
之类的垃圾数据,那么bot必须再次以错误进行响应,并应该问同样的问题。我已经用意图训练了机器人,但是问题是验证用户输入。
我如何才能在dialogflow中实现它?
培训数据和输出概览
答案 0 :(得分:0)
如果您已经创建了不同的训练短语,则无效的短语通常会触发回退意图。如果您仅使用@sys.any
作为参数类型,那么它将用任何东西填充它,因此您应该定义更窄的实体类型。
在您提供的示例Intent中,您有许多训练短语,但是Dialogflow将这些训练短语用作指南,而不是必须匹配的绝对字符串。根据您的训练,似乎应该匹配诸如“我想要。+披萨”之类的短语,因此NLU模型可能会这样读取。
为精确缩小所需范围,您可能希望创建一个实体类型来处理比萨饼口味。这将有助于缩小NLU模型如何解释用户的意见。这也使您可以更轻松地了解他们要的比萨饼类型,因为您可以检查参数,而不必再次解析整个字符串。
在后备意图中如何处理此问题取决于系统其余部分的工作方式。最简单的方法是使用“实现”网络挂钩来确定您所处问题的状态,然后重复问题或提供其他指导。
还请记住,对话可能会如下所示:
机器人说:嗨,你想要什么。
用户说:我要蘑菇披萨。
他们跳过了您的一个问题(在这种情况下,这不是必需的)。这对于会话式用户界面来说是正常的,因此您需要为此做好准备。
答案 1 :(得分:0)
比萨的类型(例如蘑菇,鸡肉等)应为自定义实体。
然后,您应按自己的意愿定义培训短语,但要确保已标记实体,并且还要为用户的响应添加模板:
您需要在此处注意以下三点:
最后的建议是在设计交互和响应时付出更多的努力。用“您想要什么”向用户打招呼并不是最好的体验。另外,您尝试使用这种方法将其强制进入一条特定的路径,但这并不是对话式应用程序应采用的方式。您可以找到有关此here的更多信息。 更好的体验是与用户打招呼,说明他们可以使用您的应用做什么,并让他们知道他们的选择。 示例 : -嗨,欢迎使用Pizza App!我在这里是为了帮助您为您找到最理想的披萨[注意:在这里,您需要添加您的机器人可以执行的其他任何操作,例如跟踪订单]!我们最受欢迎的比萨饼是蘑菇,鸡肉和玛格丽塔?您知道您想要的还是需要帮助?