2014-10-03 8 views
1

VXML을 처음 사용하고 1에서 5 사이의 임의의 숫자 시퀀스를 허용하는 인라인 dtmf 문법을 작성하려고합니다.알 수없는 자릿수와 특정 종료 문자가있는 VXML dtmf 문법

그래서 다음 순서의 세 가지 모두 채우기 발생한다 : 또한 같은

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

과 :

1,123,236, 236, 55555555552342346

나는 문법과 같이 구현하려고했습니다 그래서 :

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

저는 아이디어가 부족합니다. 당신의 도움이 여기에

+0

달성하고자하는 것이 명확하지 않습니다. 사용자가 한 자리 숫자 "6"을 입력하면 인식기는 응용 프로그램에 1-5 자리의 임의의 순서를 반환해야한다는 것을 의미합니까? – dmitri

+0

인식기는 임의의 숫자를 반환하지 않아야합니다. 사용자가 숫자 6을 입력했음을 감지하자 마자 사용자가 입력 한 모든 유효 (1,2,3,4 및 5) 숫자를 수집하고 응용 프로그램으로 돌아와야합니다. 인식자가 얼마나 많은 숫자를 입력 할 지 모릅니다 6을 입력하자 마자 돌아 가야합니다. –

답변

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> 

두 변종의 요청에 따라이 홀리 넥트 음성 플랫폼 여기

로 테스트하면 빠른 테스트에 사용할 수있는 응용 프로그램입니다.

<?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> 
+0

내 VXML 브라우저 (VoiceGlue v0.14)는 문법에서 여러 규칙을 지원하지 않습니다. 귀하의 대답은 옳았지 만, 나는 그것을 어떻게 시험 할 것인지 모르기 때문에 받아 들인 표식을 지킬 수 있습니다. 아마도 하나의 규칙을 사용하여 동일한 것을 달성하는 방법에 대해 별도의 질문을 제기해야합니다 (즉, ruleref 요소를 사용하지 마십시오). 내가이 질문을 올렸을 때 이것이 브라우저의 한계라는 것을 나는 몰랐다. –

+0

@HendrikBotha 제 편집을 참조하십시오. – dmitri