0

是否可以为那些未在我的应用程序中训练的话语添加后备意图?

我在我的应用程序中添加了很多话语,但是如果用户说了什么并且与任何话语都不匹配,那么我希望它回退并告诉用户我无法为你找到任何东西。

现在我有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

我不确定出了什么问题,但如果这个解决方案很好,那么如何解决这个错误,否则请给我真正问题的解决方案。

4

3 回答 3

0

有几点需要探索:

  1. “用户可能会命令“ABCDRIKHLFJ”“:您应该训练 Bixby 处理预期的话语,而不是训练它处理意外输入。如果用户提供了意外的输入,Bixby 将请求它需要的输入。
  2. 您的胶囊可能试图做太多事情。根据 GetNews、GetWeather、GetRecepie 和 GetInformation 相互交互的性质,您的胶囊可能只是试图服务于太多用例。这会导致 Bixby 错误地理解话语的内容并将话语信息路由到错误的操作。我建议您仔细阅读此处找到的培训原则,因为它们解释了为确保 Bixby 能够准确理解话语并将正确的信息路由到您的胶囊中的正确操作所需的内容。
于 2019-03-12T19:20:03.747 回答
0

看起来你正在用各种各样的服务、食谱、新闻、天气和一般搜索来超载你的胶囊。Bixby 胶囊应该有简洁的目标。您可以将您的胶囊分成 3 个不同的胶囊、食谱、新闻、天气,最好不要创建一个通用的“搜索”胶囊。Bixby 平台的工作是“捕捉”任何未处理的话语并执行回退操作。

希望这可以帮助。

于 2019-03-10T00:32:16.913 回答
0

虽然我同意另一张海报说你可能试图对单个应用程序做太多事情,但我想回答你关于后备意图的问题,因为我有同样的意图。

为了处理未知的输入,我所做的是创建一系列与丢失的输入相匹配的对话框。下面是其中之一。

dialog (Elicitation) {  match: type  template("I didn't understand what type you were trying to say..") }

于 2019-07-31T05:15:07.000 回答