是否可以为那些未在我的应用程序中训练的话语添加后备意图?
我在我的应用程序中添加了很多话语,但是如果用户说了什么并且与任何话语都不匹配,那么我希望它回退并告诉用户我无法为你找到任何东西。
现在我有4个意图:
GetNews
GetWeather
GetRecepie
GetInformation
现在,对于 GetNews 意图,我有话语“Get me sports news”,对于 GetRecepie,我有“I want Chinese recepie”。我已经为所有意图添加了尽可能多的话语,但我遇到了一个话语,即“获取我的邻居新闻”,现在我没有任何 newsType,例如邻居,但如果 newsType 是,我的代码中有句柄undefined 然后显示一般新闻。但是当我命令这句话时,它就落入了 GetRecepie 的意图。我的所有 4 个意图的话语都以不同的单词开头,没有什么是相互匹配的,那么为什么它会落入 GetRecepie 而不是 GetNews 呢?
这种情况的解决方案是什么?有什么办法可以让我回退一些东西,这样如果有任何话语被混淆,那么它应该去回退吗?或者有没有其他解决方案?
这与正常的话语无关,但用户可能会命令“ABCDRIKHLFJ”,然后如何处理......现在一切都落入GetRecepie。
对于一个解决方案,我创建了一个动作文件名 LetItFallback,在验证 GetRecepie 时,我重新计划它并将目标传递给后备动作。
action (GetRecepie) {
type(Search)
collect{
input (receipeID) {
type (ReceipeChoiceResult)
min (Optional)
validate{
if(not exists(receipeID.name)){
replan{
intent{
goal{LetItFallBack}
}
}
}
}
}
}
output (RecepieResult)
}
但我在模拟器中遇到错误
Unable to attach plan from 1.0.1-myAppID.api.GetRecepie#1.0.1-myAppID.api.RecepieResultreplan intent
我不确定出了什么问题,但如果这个解决方案很好,那么如何解决这个错误,否则请给我真正问题的解决方案。