VoiceXML 语法输入序列
VoiceXML Grammar Input sequence
我需要允许来电者输入他们的 ID。它有 7 个字符长,是字母和数字的混合体,但它有一个结构。
示例:
F0G0000
- 第一个字符始终是字母。
- 第二个字符始终是数字。
- 第三个可以是一个字母或数字。
- 最后 4 个字符始终是数字。
我可以对语法做些什么,让它根据上面的结构在字母和数字之间切换吗?
绝对:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<grammar xmlns="http://www.w3.org/2001/06/grammar" xml:lang="en" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd" version="1.0" mode="voice" tag-format="semantics/1.0" root="main">
<rule scope="public" id="main">
<!-- a letter -->
<ruleref uri="#letter" /><tag>out = rules.latest</tag>
<!-- a digit -->
<ruleref uri="#digit" /><tag>out += rules.latest</tag>
<!-- a letter or a digit -->
<one-of>
<item><ruleref uri="#letter" /></item>
<item><ruleref uri="#digit" /></item>
</one-of>
<tag>out += rules.latest</tag>
<!-- 4 digits -->
<item repeat="4">
<ruleref uri="#digit" />
<tag>out += rules.latest</tag>
</item>
</rule>
<rule scope="private" id="letter">
<one-of>
<item>a</item>
<item>b</item>
<item>c</item>
<item>d</item>
<item>e</item>
<item>f</item>
<item>g</item>
<item>h</item>
<item>i</item>
<item>j</item>
<item>k</item>
<item>l</item>
<item>m</item>
<item>n</item>
<item>o</item>
<item>p</item>
<item>q</item>
<item>r</item>
<item>s</item>
<item>t</item>
<item>u</item>
<item>v</item>
<item>w</item>
<item>x</item>
<item>y</item>
<item>z</item>
</one-of>
</rule>
<rule scope="private" id="digit">
<one-of>
<item>
<one-of>
<item>zero</item>
<item>oh</item>
</one-of>
<tag>out="0"</tag>
</item>
<item> one
<tag>out = 1;</tag>
</item>
<item> two
<tag>out = 2;</tag>
</item>
<item> three
<tag>out = 3;</tag>
</item>
<item> four
<tag>out = 4;</tag>
</item>
<item> five
<tag>out = 5;</tag>
</item>
<item> six
<tag>out = 6;</tag>
</item>
<item> seven
<tag>out = 7;</tag>
</item>
<item> eight
<tag>out = 8;</tag>
</item>
<item> nine
<tag>out = 9;</tag>
</item>
</one-of>
</rule>
</grammar>
免责声明:我还没有测试过。
我需要允许来电者输入他们的 ID。它有 7 个字符长,是字母和数字的混合体,但它有一个结构。
示例: F0G0000
- 第一个字符始终是字母。
- 第二个字符始终是数字。
- 第三个可以是一个字母或数字。
- 最后 4 个字符始终是数字。
我可以对语法做些什么,让它根据上面的结构在字母和数字之间切换吗?
绝对:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<grammar xmlns="http://www.w3.org/2001/06/grammar" xml:lang="en" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd" version="1.0" mode="voice" tag-format="semantics/1.0" root="main">
<rule scope="public" id="main">
<!-- a letter -->
<ruleref uri="#letter" /><tag>out = rules.latest</tag>
<!-- a digit -->
<ruleref uri="#digit" /><tag>out += rules.latest</tag>
<!-- a letter or a digit -->
<one-of>
<item><ruleref uri="#letter" /></item>
<item><ruleref uri="#digit" /></item>
</one-of>
<tag>out += rules.latest</tag>
<!-- 4 digits -->
<item repeat="4">
<ruleref uri="#digit" />
<tag>out += rules.latest</tag>
</item>
</rule>
<rule scope="private" id="letter">
<one-of>
<item>a</item>
<item>b</item>
<item>c</item>
<item>d</item>
<item>e</item>
<item>f</item>
<item>g</item>
<item>h</item>
<item>i</item>
<item>j</item>
<item>k</item>
<item>l</item>
<item>m</item>
<item>n</item>
<item>o</item>
<item>p</item>
<item>q</item>
<item>r</item>
<item>s</item>
<item>t</item>
<item>u</item>
<item>v</item>
<item>w</item>
<item>x</item>
<item>y</item>
<item>z</item>
</one-of>
</rule>
<rule scope="private" id="digit">
<one-of>
<item>
<one-of>
<item>zero</item>
<item>oh</item>
</one-of>
<tag>out="0"</tag>
</item>
<item> one
<tag>out = 1;</tag>
</item>
<item> two
<tag>out = 2;</tag>
</item>
<item> three
<tag>out = 3;</tag>
</item>
<item> four
<tag>out = 4;</tag>
</item>
<item> five
<tag>out = 5;</tag>
</item>
<item> six
<tag>out = 6;</tag>
</item>
<item> seven
<tag>out = 7;</tag>
</item>
<item> eight
<tag>out = 8;</tag>
</item>
<item> nine
<tag>out = 9;</tag>
</item>
</one-of>
</rule>
</grammar>
免责声明:我还没有测试过。