在 VXML 中,有没有一种方法可以在不清除 nomatch/noinput 计数器的情况下从已填充的块中重新输入字段?

In VXML is there a way to re-enter a field from a filled block without clearing the nomatch/noinput counters?

我有一个 VXML 表单的问题,基本上我有一个带有初始提示的字段,并且有一组 noinput nomatch 块使用计数器根据 noinput/nomatch 事件的数量播放不同的提示已被抛出。

我需要报告每次尝试,以便将 ASR 置信度设置得非常低,并在填充的元素中检查置信度水平,然后我想接受,如果置信度低或置信度处于边缘则重新提示, 播放确认提示。我遇到的问题是,在填充块中,我正在执行一个操作来检查置信度,如果太低,我会执行以下操作(字段名称是集合):

<clear namelist="collection"/>
<throw event="nomatch"/>

问题是这会清除 nomatch/noinput 个计数器,但我需要保留这些计数器。如果我删除清除标记,则会触发 nomatch 事件,但由于该字段仍为 'filled',因此它不接受输入。

有没有一种方法可以在不清除计数器的情况下从已填充的块中重新输入字段,或者有没有一种方法可以通过 ECMA 脚本访问计数器以再次设置它们或类似的东西?我能否只清除 "collection" 字段中的某些值,以便填充的元素不会立即重新输入但保留计数器?

干杯

我找到了这个问题的答案——简单的解决方案是将 nomatch noinput 事件处理程序从集合字段范围移到文档范围——这意味着当我在集合字段上调用 ​​clear 时,noinput 和 nomatch计数器未清除

这不是问题,这是标准: https://www.w3.org/TR/voicexml20/#dml5.3.3

"In addition, if the variable name corresponds to a form item, then the form item's prompt counter and event counters are reset."

您可以使用变量添加自己的计数器。在进程块中递增并使用或属性 "cond" 测试值以获取提示。