vxml:需要内嵌语法的帮助

时间:2010-06-23 16:11:08

标签: grammar voice-recognition vxml voicexml

我正在查看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

1 个答案:

答案 0 :(得分:1)

您没有提到正在使用的平台。由于您使用的是内联GSL,我对平台的第一个猜测是TellMe或NVP,但我认为还有其他人支持内联GSL。

在任何情况下,请确保您没有收到编译错误。我见过几个平台只是忽略了没有编译的语法。这些片段看起来是正确的,但鉴于您没有使用标准语法(SRGS),我猜这是一个较旧的实现,实现越旧,您通常会看到更多的怪癖和警告。

通常,我没有看到语法的VoiceXML部分有任何错误来解释行为。虽然它与您的症状无关,但由于缺少语法和定义的退出(您依赖于默认的捕获处理程序),您的目标表单可能会在某些平台上导致问题。要仅播放信息,字段部分应为块。请注意,如果块只播放音频并退出链接语法可能会或可能不会处于活动状态(规范意味着它们是,但必须平台在处理和排队音频之间切换并执行识别。识别和连续切换进出活跃的语法很少见......