防止从 NL 训练中直接选择

Prevent direct selection from NL training

我在 NL 训练中匹配了 selection-of 中的概念,因此当我语音输入选项时它现在可以接受输入并显示结果。但这样做的缺点是它会直接显示结果,即使我不在 selection 页面中。有什么办法可以防止这种情况发生吗?我的方法是将 NL 的目标与 selection 选项的概念相匹配, 提示 概念

[更新] 想在用户制作 selection 之前先向用户显示菜单。当我运行执行一个操作

时可以显示菜单

where playNews> getNews> getMenu(一个 select 离子输入视图)

action (getNews) {
    type (Constructor)
    description (__DESCRIPTION__)
    collect {
        input (whatuserwant){
            type (userWantToHear)
            min (Required) max (One)
            default-init{
                intent{
                    goal: getMenu
                }
            }
            default-select{
                with-rule{
                    select-first
                }
            }

        }
    }
    output (newsAudio)
}

为了允许语音输入 selection,我添加了概念训练

因此它能够从菜单中 select selection,但是它也将接受 selection 和 运行 即使我还没有出现在菜单中。 是否可以摆脱这个? 或者这是 Bixby 的行为吗?

更新:我会删除 default-select 并将 prompt-behavior (AlwaysElicitation) 添加到输入中。 Read more in our DOC.

您可能还想检查 this example in GitHub 以了解如何从操作的其他输入构建输入视图 selection。这个例子是 QuizIt 如何处理 selection 部分的简化版本。您可能还想检查训练以了解 Bixby 如何采取不同的操作 with/without 顶级 "A" 训练示例。

输入提示应该像您期望的那样简单易行:显示一个包含消息的列表,然后用户可以点击或语音 select,并能够继续操作。

以下是一些您可能会觉得有用的附加信息:

  1. Bixby 平台会在输入缺失时尝试匹配结构的每个 属性,因此将 属性 标记为 visibility (Private) 以防止出现这种情况。您还可以使用 prompt-behavior (AlwaysSelection) 强制输入 selection。
  2. 在 prompt/continuation 训练的情况下,Bixby 会将其视为顶级训练,没有其他训练适合。例如,一个简单的测验胶囊将构建一个默认测验,顶级话语 "A" 将被视为将第一个问题回答为 A。为防止这种情况,只需添加 "A" 的训练示例并匹配它到你想要的动作。 Bixby 会知道使用这个顶级训练而不是提示训练。