我创建了一个Intent,它输出带有给定参数名称的上下文,例如$myParam
。此Intent的目标是捕获较长的数字序列。我知道有一个@sys.number-sequence
实体,但是我使用的是意大利语语言,因此这种实体不可用。只有@sys.number
,但是我期望用户输入的数字超出其范围。
在这些限制下,我选择@sys.any
作为参数$myParam
的实体。
问题
当用户在真实设备中输入数字时,助手可能会在它们之间添加一些空格(当用户说出它们时)。
当助手获取序列111 222
时,便触发了Intent,一切正常。
但是,当助手获取序列111222
(请注意缺少空格)时,它将不起作用。
我原以为@sys.any
实体会捕获所有输入,但看起来并非如此。
您知道如何处理此案吗?
我的目标是即使助手捕获到数字序列,也要在序列之间,之前或之后没有空格时触发意图。
图片:
答案 0 :(得分:1)
最近几天我遇到了这个问题,这确实很烦人。突然,由于某种我不知道的原因,Assistant的@sys.any
实体不再为捕获数字而工作。
我的用例几乎与您的用例相同,我有一个父Intent,请用户输入代码(10到15位数字),并创建了一个后续Intent以处理用户的输入。我使用的是与英语不同的语言,并且系统提供的用于捕获长号的仅实体是@sys.any
。
但是它停止工作了!我到处寻找一种方法,以某种方式迫使助手输入特定的意图,因为不仅现在不触发跟进意图,而且也不触发后备意图。助手仅保留父项意图,然后崩溃。
我花了几个小时没有发现有用的东西之后,我尝试了这个对我有用的技巧。
创建意图时,默认情况下,其优先级为 Normal 。我希望使用持有用户输入的实体类型@sys.any
的参数来触发后续意图的优先级为 High ,从而解决了我的问题。现在它可以像以前一样正常工作。
答案 1 :(得分:0)
通常不应使用@sys.any
实体来覆盖短语中的所有内容。对于这种情况,您应该能够使用后备意图,然后处理用户的全部输入。