代码之家  ›  专栏  ›  技术社区  ›  Charlie

vxml在队列中提示时转到新文档

  •  1
  • Charlie  · 技术社区  · 7 年前

    我有2个vxml文档,如下所示:

    <vxml xmlns="http://www.w3.org/2001/vxml" version="2.0">
    
      <catch event="error.badfetch">
        <prompt> Error in fetching document. end of test</prompt>
        <exit />
      </catch>
    
      <catch event="error.connection.baddestination">
        <prompt> Error 600. End of test</prompt>
        <exit />
      </catch>
    
      <form id="main_menu">
    
        <property name="confidencelevel" value="0.1" />
    
        <field name="menu_choice" type="digits?maxlength=1">
          <prompt>
            <break time="1s" />
            Enter a number
          </prompt>
    
          <filled>
            <prompt>
              <break time="1.5s" />
              This is not Google voice
              <break time="2s" />
            </prompt>
            <goto next="doc2.vxml" />
          </filled>
        </field>
    
      </form>
    </vxml>
    

    <?xml version="1.0" ?>
    
    <vxml xmlns="http://www.w3.org/2001/vxml" version="2.0">
    
      <form id="main">
        <property name="ttsengine" expr="'google-tts'" />
    
        <block>
          <log>Google TTS test</log>
        </block>
        <field name="menu_choice" type="digits?maxlength=1">
          <prompt>This is Google voice</prompt>
    
          <filled>
            <goto next="doc1.vxml" />
          </filled>
        </field>
      </form>
    </vxml>
    

    我的问题是:

    1 回复  |  直到 7 年前
        1
  •  1
  •   gawi    7 年前

    据我所知 VoiceXML specification

    我的期望是,VoiceXML解释器应该将第一个提示与生成相同输出的所有相关内容一起排队,就像在排队的地方播放一样,包括影响生成的输出的任何非标准属性,如 ttsengine 财产。不幸的是,VoiceXML标准并不承认 步骤。只是 排队 ,未指定生成提示时的实际时刻。这个 audiofetchhint 属性会影响VoiceXML平台实际获取音频文件的时间,但对于语音合成没有等价物。

    如果你加一个 fetchaudio goto 冲洗 (因此 生成 )在第一份文件上。请注意,如果您希望在第二个问题中启用barge-in的情况下播放此提示,则这不一定是正确的解决方法。

    当处于转换状态时,各种提示将排队,或者 <prompt> 要素

    • 当解释器到达等待状态时 播放提示,解释器监听匹配的输入 主动语法之一,或
    • 资源(如文档)的 在这种情况下,提示在 获取音频 被玩到 完成,然后,如果确实需要获取资源 (即,它在缓存中不是未过期的) 获取音频 正在播放 转换状态,在获取期间不接受任何输入。
        2
  •  0
  •   Max CodeSmith    7 年前

    您需要将控件返回给用户,以便在转到下一个文档之前刷新提示缓冲区。

    要使上述工作添加一个简单的菜单前转到。

    例如:

    menu collect digits 
    play digits voice one
    menu press 1 to hear the same in another voice
    goto voice two
    play digits voice two
    
    推荐文章