出现在 <block> 和 <field> 中的 <prompt> 元素有什么区别?

What is the difference between a <prompt> element appearing inside a <block> vs a <field>?

目前的理解:

根据我的理解,<prompt>元素的功能是定义要播放的提示音频,然后是等待用户话语的系统。我的印象来自VoiceXML 2.0 specification for prompts:

Conceptually, prompts are instantaneously queued for play, so interpretation proceeds until the user needs to provide an input. At this point, the prompts are played, and the system waits for user input.

此外,我理解 <block><field> 之间的区别是:

  1. 一个<block>是控制项,是"not for gathering input"
  2. 一个<field>是一个输入项,其值为"gather[ed] from the user"

最后,我知道 <prompt> 可以是 <block><field> 的直接子代。

问题:

  1. 我很确定 <prompt><field> 中收集输入,但是当它在 <block> 中时应该发生什么,因为方块是 control 项?

  2. 如果<block>中的<prompt>不收集输入,只播放音频,你为什么不把提示的文本写成内容在 <block> 内,省略 <prompt>?

没有区别。

1 - 驱动输入过程的是字段,而不是提示。在没有提示的情况下尝试。

2 - 如果您没有使用提示元素的任何其他功能,那没关系。

请注意,在您引用的文字中有一些重要的内容需要意识到。 "prompts are instantaneously queued"提示和类似的元素结构只是将音频排队。是的,如果有延迟,您通常会开始听到它们。但是,回放与元素是分开的。

至于为什么你可能会做一个而不是另一个,它可能只是开发风格或基于流程的逻辑。例如,在回放数据时,具有多个可以跳过以涵盖不同场景的块可能比复杂的 field/prompt 配置更清晰。