我是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>
我没有想法,非常感谢您的帮助
答案 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>