VXML dtmf语法,具有未知的位数和特定的终止字符

时间:2014-10-03 03:15:57

标签: grammar dtmf vxml voicexml

我是VXML的新手,并尝试构建一个内联dtmf语法,允许返回1到5之间以数字6结尾的任何数字序列。

因此,以下所有三个序列都应该导致填充:

1123236,236,55555555552342346

我尝试过这样的语法:

<grammar mode="dtmf">
  <rule>
    <item>
      <item repeat"0-">1|2|3|4|5<item>6</item>
    </item>
  </rule>
</grammar>

也是如此:

<grammar mode="dtmf">
  <rule>
    <item repeat"0-">1|2|3|4|5</item>
    <item>6</item>
  </rule>
</grammar>

我没有想法,非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

以下是您可以使用的语法:

<grammar mode="dtmf" version="1.0" root="oneToFiveSequence">

    <rule id="onetofive">
        <one-of>    
            <item>1</item>
            <item>2</item>
            <item>3</item>
            <item>4</item>
            <item>5</item>
        </one-of>   
    </rule>

    <rule id="oneToFiveSequence" scope="public" >
        <one-of>    
            <item repeat="0-">
                <ruleref uri="#onetofive"/>
            </item>     
        </one-of>   
    </rule>
</grammar>

要使用数字“6”停止识别,请在VXML表单中设置属性:

<property name="termchar" value="6" />

在处理“填充”事件时的表单中,您将知道序列以“6”结束,因此如果需要,您可以将其附加到数据中。

评论中要求的等效单一规则语法

 <grammar mode="dtmf" version="1.0" root="oneToFiveSequence">
    <rule id="oneToFiveSequence" scope="public" >
        <one-of>    
            <item repeat="0-">      
                <one-of>                
                    <item>1</item>          
                    <item>2</item>          
                    <item>3</item>          
                    <item>4</item>          
                    <item>5</item>          
                </one-of>               
            </item>                 
        </one-of>   
    </rule>
</grammar>

这两种变体都使用Holly Connects Voice Platform进行测试

这是一款可用于快速测试的应用。

<?xml version="1.0" encoding="utf-8"?>
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml">
  <property name="inputmodes" value="dtmf"/>
  <form id="welcome">
    <field name="option">
      <property name="termchar" value="6"/>
      <grammar mode="dtmf" version="1.0" root="oneToFiveSequence">
          <rule id="oneToFiveSequence" scope="public" >
        <one-of>                
            <item repeat="0-">      
          <one-of>                      
              <item>1</item>                
              <item>2</item>                
              <item>3</item>                
              <item>4</item>                
              <item>5</item>                
          </one-of>                     
            </item>                 
        </one-of>               
          </rule>           
      </grammar>        
        <prompt>Enter digits</prompt>
      <filled>          
        <log> You entered <value expr="option"/></log>
      </filled>         
    </field>    
  </form>
</vxml>