首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

VXML按键识别有关问题

2012-12-14 
求助VXML按键识别问题大家好!我写的VXML脚本有个小问题:就是用户按键输入两个三位数(0~999)作为两个加数,

求助VXML按键识别问题
大家好!
    我写的VXML脚本有个小问题:就是用户按键输入两个三位数(0~999)作为两个加数,系统将两数之和算出并播报出来。但问题就在输入数上,我的开始提示语中是“您只要根据系统提示输入两个三位以内的数,系统将立即将结果报出来。星号键返回。请按键输入你想要计算的两个数字,从0到999,#号键结束”。
一开始我接收用户按键的语句是
<field name="key" type="digits?length=3;terminate_key=*#;max_time=10000;mask_key=#">                 但这种写法的结果是:用户输入不足三位数,如“99#”,系统就能执行assign,使得num1=99,并等待用户输入第二个数;但当用户在输入三位后加#,如“456#”,系统会得到num1=456,而将num2=#,并执行加法运算。(num1是第一位加数,num2是第二位加数,用两个form写的)
如果将length=4,显然可以接收4位数,就是当用户不按#号键时,如“4561”,这个和开始的提示语有点矛盾。
后来在脚本中加入红色字体部分,用绿色字体检测:
                   <field name="key" type="digits?length=3;terminate_key=*#;max_time=10000;mask_key=#">
                   
                   <filled>
                           <if cond="key.substr(key.length-1,1)=='#'">
                                   <assign name="key" expr="key.substr(0,key.length-1)"/>     
                                     <!--去除末位#号键-->
                           </if>
                            <assign name="num1" expr="parseInt(key,10)"/>                   
                            <prompt> 您输入的是 <value expr="num1"/> </prompt>
                   </filled>
            </field>
    可是,系统反应不稳定——问题暴露的比原有的脚本还要明显,有时候还是播放转义后的#号键——“1QNAN…”,有时候是静音,输入没反应。
    我将这个接收输入的脚本拿出来,现在这个功能脚本如下:
<?xml version="1.0" encoding="utf-8" ?>
<vxml version="2.0" >

<var name="num1" expr=""/>

<form id="Frist">
            <block>
                   <prompt> 请按键输入数 </prompt>
            </block>
            
            <field name="key" type="digits?length=3;terminate_key=*#;max_time=10000;mask_key=#">
                  
                   <filled>


                            <if cond="key.substr(key.length-1,1)=='#'">
                                  <assign name="key" expr="key.substr(0,key.length-1)"/>
                                  <clear namelist="key"/> 
                                  <prompt> 请输入第二个数 </prompt>
                            </if>
                            <assign name="num1" expr="parseInt(key,10)"/>                   
                            <prompt> 您输入的是 <value expr="num1"/> </prompt>
                   </filled>
            </field>
            
            <block>
                   <goto next="#Frist"/>   <!--为方便多次测试-->
            </block>
</form>

</vxml>

     这个脚本的问题是:输入“123#”,系统播报“您输入的是1QNAN” 
 麻烦哪位高手能够指点一二。谢谢!
[解决办法]
up
[解决办法]
期待高手指点
[解决办法]
这个问题我根据同步的解析器,将问题解决,就是将接收按键的field中的mask_key去除,在其下脚本中手工添加对#号键的处理。但出现另外一个问题:对于第二个数的输入形如“123#”的#号键,系统不能做同样的处理。我将问题定位在第二个按键后的block中,用prompt的bargein属性设置。所以现在是可以的。
不过,还是要感谢各位网友的关注。
[解决办法]
有日志吗
[解决办法]
如何使用VXML、在哪个软件平台下编写?期待高手回答~~

热点排行