我正在查看vxml.org中的一些示例vxml脚本。当我调用脚本时,提示会播放,但它根本不会提取任何输入。当我说话时它回答“没有输入”。我可能会遗漏一些表示用户输入的标签。这是来自网站的示例脚本:
<?xml version="1.0" encoding="UTF-8"?>
<vxml version = "2.1">
<link next="#MainMenu">
<grammar type="text/gsl">[main back begin]</grammar>
</link>
<form id="MainMenu">
<block>
<prompt bargein="false">
This is the Hello World Main Menu.
</prompt>
</block>
<field name="MeatOrPlant">
<prompt>
Are you a "Carnivore" or "Vegetarian".
</prompt>
<grammar type="text/gsl">
<![CDATA[[
[vegetarian plant veggie] {<MeatOrPlant "plant">}
[meat carnivore flesh animal] {<MeatOrPlant "meat">}
]]]>
</grammar>
<noinput>
<prompt>
I did not hear anything. Please try again.
</prompt>
<reprompt/>
</noinput>
<nomatch>
<prompt>
I did not recognize that lifestyle choice. Please try again.
</prompt>
<reprompt/>
</nomatch>
</field>
<filled>
<if cond="MeatOrPlant == 'meat'">
<goto next="#Meat"/>
<elseif cond="MeatOrPlant == 'plant'"/>
<goto next="#Plant"/>
</if>
</filled>
</form>
<form id="Meat">
<field name="BackToMain">
<prompt>
PETA is coming for you, be afraid.
If you wish to try again, please say Main.
</prompt>
</field>
<filled>
<!-- no way this will get hit -->
</filled>
</form>
<form id="Plant">
<field name="BackToMain">
<prompt>
Protein is the spawn of the devil.
If you wish to try again, please say "Main".
</prompt>
</field>
<filled>
<!-- no way this will get hit -->
</filled>
</form>
</vxml>
有人有线索吗? TIA
答案 0 :(得分:1)
您没有提到正在使用的平台。由于您使用的是内联GSL,我对平台的第一个猜测是TellMe或NVP,但我认为还有其他人支持内联GSL。
在任何情况下,请确保您没有收到编译错误。我见过几个平台只是忽略了没有编译的语法。这些片段看起来是正确的,但鉴于您没有使用标准语法(SRGS),我猜这是一个较旧的实现,实现越旧,您通常会看到更多的怪癖和警告。
通常,我没有看到语法的VoiceXML部分有任何错误来解释行为。虽然它与您的症状无关,但由于缺少语法和定义的退出(您依赖于默认的捕获处理程序),您的目标表单可能会在某些平台上导致问题。要仅播放信息,字段部分应为块。请注意,如果块只播放音频并退出链接语法可能会或可能不会处于活动状态(规范意味着它们是,但必须平台在处理和排队音频之间切换并执行识别。识别和连续切换进出活跃的语法很少见......