2016-12-12 35 views
0

我想获取用户输入(国家代码+电话号码),以便稍后使用传输元素进行调用。VXML使用输入传输

我的问题满足在传输元素,它只是挂断电话。我不知道如何调试它们。我使用NEXMO作为提供者。我事先搜索并尝试了很多东西,包括单独测试每个函数(哪些工作正常!)。

<?xml version="1.0" encoding="UTF-8"?> 
<vxml version="2.1"> 
    <property name="inputmodes" value="dtmf" /> 
    <form id="get_mobile_number"> 
     <field name="mobileno" type="digits?minlength=7;maxlength=13"> 
     <prompt> 
      <prosody rate="slow"> please enter your 7 to 13 digit mobile number !</prosody> 
     </prompt> 
     <!--INVALID--> 
     <nomatch count="1"> 
      <prompt> 
       <prosody rate="slow"> Is that a number? Please try again. </prosody> 
      </prompt> 
      <reprompt/> 
     </nomatch> 
     <!--TIMEOUT--> 
     <noinput count="1"> 
      <prompt>Again, please enter your 7 to 13 digit mobile number !</prompt> 
      <reprompt/> 
     </noinput> 
     <catch event="noinput nomatch" count="3"> 
      <prompt>Please try again later. Good bye.</prompt> 
      <exit/> 
     </catch> 
     <filled> 
      <goto next="#call_number"/> 
     </filled> 
     </field> 
    </form> 

    <form id="call_number"> 
     <transfer name="result" destexpr="'tel:+'+ mobileno" bridge="true"> 
     <prompt>Please wait while we transfer you.</prompt> 
     <grammar xml:lang="en-US" root = "TOPLEVEL" mode="voice"> 
      <rule id="TOPLEVEL" scope="public"> 
       <one-of> 
        <item> disconnect </item> 
       </one-of> 
      </rule> 
     </grammar> 
     </transfer> 
     <filled> 
     <if cond="result == 'busy'"> 
      <prompt>Sorry, they're busy.</prompt> 
      <elseif cond="result == 'noanswer'" /> 
      <prompt>Sorry, they didn't answer.</prompt> 
      <else /> 
      <prompt> 
       You spoke for <value expr="result$.duration" /> seconds. 
      </prompt> 
     </if> 
     <if cond="result$.inputmode == 'voice'"> 
      You ended the call by saying,<value expr="result$.utterance" />. 
     </if> 
     </filled> 
    </form> 
</vxml> 

有没有人知道它有什么问题?

回答

0

从表面上看,逻辑似乎是正确的。

为了进行调试,我建议只运行表格call_number(不含表格get_mobile_number),并以“call_number”形式放入实际的号码而不是+ mobileno。然后你会知道电话是否确实正在通话。

如果它仍然没有通过,那么您可能需要按照提供者预期的正确格式工作(它可能不是VXML错误)。

或者,您可以检查IVR日志并查看正在拨打什么号码(以及是否可以识别其中的任何明显错误)