如何用语音训练时间选择器?

How do I train time-picker with voice?

[bixby] 如果用户 select 显示屏幕上的时间,我的 Bixby 胶囊可以正常工作,但如果他们尝试 select 通过语音输入,则无法正常工作。在本示例中,我遵循了为 "duration" 提供的培训,但它似乎不适用于 enter link description here "time"

结构(就寝时间){ 描述(描述) 角色 (time.Time) }

动作(准备用户数据){ 说明("Prepare user data") 类型(搜索) 搜集 { // 保留它以检索任何以前存储的 UserData 计算输入(previousUserData){ 类型(用户数据) 最小(必填) 最大(一个) 计算{ 意图{ 目标:获取用户数据 } } }

    input (username) {
        type (UserName)
        min (Required) max (One)
    }

    input (wakeuptime) {
        type (WakeupTime)
        min (Required) max (One)
    }

    input (bedtime) {
        type (BedTime)
        min (Required) max (One)
    }

    input (message) {
        type (Message)
        min (Required) max (One)
    }
}
output (UserData)

}

这次训练是"not learned",当我调用话语时,它一直在问我

[![唤醒训练 []4][5]

[5]: https://i.stack.imgur.com/YQvlg.jpgenter 代码在这里

没有实际的胶囊代码,我只能推测。

首先,概念应该是 viv.time.DateTimeExpression 以便更好地使用自然语言,例如“今晚 9 点”。您可以阅读有关 viv.time.DateTimeExpression here 的更多信息。

其次,话语 "bedtime" 不是时间的预期 NL 输入。它应该更具体,例如“晚上 9 点”或“本周三上午 8 点”或“明天晚上 8 点”。

第三个话题更像是一个单挑。如果对 viv.time.DateTimeExpression 使用“9PM Wednesday”等语句,您可能会得到超过 1 个 return 的值。这是令人困惑但可以理解的,因为它可能是已经过去的星期三或即将到来的星期三。所以开发人员应该考虑到这一点,并在建模或 JS 中处理这种情况。

我花了一些时间做了一个样品胶囊。除了以下两个问题外,这并不难做到:

  1. 目标必须是用户定义的概念,因此不能是viv.time.Time。 必须是 MyTime,它是 viv.time.Time 的滚动。
  2. NL“晚上 9 点”必须被视为 viv.time.DateTimeExpression,因此它需要一个额外的步骤到 MyTime(作用于 viv.time.Time)

请看附件截图。对于可以测试的完整胶囊,可以download it