VXML数字语法不包括所有零

时间:2013-01-30 17:04:30

标签: grammar vxml

我正在寻找一种方法来构建一个VXML语法,它需要输入一定数量的数字,但也要求输入不是全零。

此用例是银行编号。例如,我想强制输入(语音或DTMF,无关紧要)9位数作为路由号码,但要求并非所有数字都为零。 (暂时忽略模数检查,我在这里不关心)。

鉴于<one-of><item>的语法结构,我可以通过枚举所有可能性(例如本问题末尾的规则)来看到这一点。但是,这看起来很荒谬。有没有更好的方式我还没有遇到过?任何帮助将不胜感激。

<rule>
    <one-of>
        <item>
            <item repeat="1">
                <item>1</item>
                <item>2</item>
                <item>3</item>
                <item>4</item>
                <item>5</item>
                <item>6</item>
                <item>7</item>
                <item>8</item>
                <item>9</item>
            </item>
            <item repeat="8">
                <item>0</item>
                <item>1</item>
                <item>2</item>
                <item>3</item>
                <item>4</item>
                <item>5</item>
                <item>6</item>
                <item>7</item>
                <item>8</item>
                <item>9</item>
            </item>
        </item>
        <item>
            <item repeat="1">
                <item>0</item>
                <item>1</item>
                <item>2</item>
                <item>3</item>
                <item>4</item>
                <item>5</item>
                <item>6</item>
                <item>7</item>
                <item>8</item>
                <item>9</item>
            </item>
            <item repeat="1">
                <item>1</item>
                <item>2</item>
                <item>3</item>
                <item>4</item>
                <item>5</item>
                <item>6</item>
                <item>7</item>
                <item>8</item>
                <item>9</item>
            </item>
            <item repeat="7">
                <item>0</item>
                <item>1</item>
                <item>2</item>
                <item>3</item>
                <item>4</item>
                <item>5</item>
                <item>6</item>
                <item>7</item>
                <item>8</item>
                <item>9</item>
            </item>
        </item>
        <item>
            <item repeat="2">
                <item>0</item>
                <item>1</item>
                <item>2</item>
                <item>3</item>
                <item>4</item>
                <item>5</item>
                <item>6</item>
                <item>7</item>
                <item>8</item>
                <item>9</item>
            </item>
            <item repeat="1">
                <item>1</item>
                <item>2</item>
                <item>3</item>
                <item>4</item>
                <item>5</item>
                <item>6</item>
                <item>7</item>
                <item>8</item>
                <item>9</item>
            </item>
            <item repeat="6">
                <item>0</item>
                <item>1</item>
                <item>2</item>
                <item>3</item>
                <item>4</item>
                <item>5</item>
                <item>6</item>
                <item>7</item>
                <item>8</item>
                <item>9</item>
            </item>
        </item>
                    etc....
    </one-of>
</rule>

1 个答案:

答案 0 :(得分:1)

这样的事情

<rule id="zero">
  <oneof>
    <item>0</item>
  </oneof>
</rule>

<rule id="nonzero">
  <oneof>
    <item>1</item>
    <item>2</item>
    <item>3</item>
    <item>4</item>
    <item>5</item>
    <item>6</item>
    <item>7</item>
    <item>8</item>
    <item>9</item>
  </oneof>
</rule>

<rule id="alldigits">
  <oneof>
    <item>
      <ruleref uri="#zero"/>
    </item>
    <item>
      <ruleref uri="#nonzero"/>
    </item>
  </oneof>
</rule>

<rule id="account-num">
  <oneof>
    <item>
      <item repeat="7">
       <ruleref uri="#alldigits"/>
      </item>
      <item repeat="1">
         <ruleref uri="#nonzero"/>
      </item>
    </item>
  </oneof>
</rule>

规则account-number指定至少一个数字不能为零。