是否有可能为那些未在我的应用程序中训练的话语添加回退意图?
我已经为我的应用程序添加了大量的话语,但是如果用户说出来并且与任何话语不匹配,那么我希望它回退并告诉用户我无法为您找到任何内容。
现在我有4个意图:
GetNews 的GetWeather GetRecepie 获取信息
现在我有GetNews意图的“给我体育新闻”的话语,我有GetRecepie的“我想要中国接收”。我已尽可能多地为所有意图添加了话语,但我遇到了一个“让我来邻居新闻”的话语,现在我没有任何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
我不确定有什么问题,但如果这个解决方案没问题,那么如何解决这个错误,请给我解决真正的问题。
有几点需要探讨:
看起来你的胶囊超载了各种各样的服务,食谱,新闻,天气和一般搜索。 Bixby胶囊应该有简洁的目标。您可以将胶囊分成3个不同的胶囊,配方,新闻,天气,最好不要创建一个通用的“搜索”胶囊。 Bixby平台的工作是“捕获”任何未处理的话语并执行后备操作。
希望这可以帮助。
虽然我同意另一张海报说你可能会尝试使用单个应用程序做太多,但我想回答你关于后备意图的问题,因为我有同样的问题。
为了处理未知输入,我所做的是创建一系列与缺失的输入相匹配的对话框。下面是其中之一。
dialog (Elicitation) {
match: type
template("I didn't understand what type you were trying to say..")
}