以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 XML在语音技术中的应用 』   (http://bbs.xml.org.cn/list.asp?boardid=47)
----  請問vxml 流程控制問題?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=47&rootid=&id=40361)


--  作者:superintel
--  发布时间:11/22/2006 2:57:00 AM

--  請問vxml 流程控制問題?
我有一個問題.
就是 vxml 可不可以做到 讓使用者語音輸輸入,辨識內容直接存到變數後送出?
(我現在的這個例子, vxml都會判斷 使用者語音輸入的結果,是不是1234,2363,5346
,只要不是這3個之ㄧ,就無法跳到下一部.)
--  作者:zhu_ruixian
--  发布时间:11/22/2006 9:13:00 AM

--  
vxml 可不可以做到 讓使用者語音輸輸入,辨識內容直接存到變數後送出?

可以讓使用者語音輸輸入,辨識內容直接送到下一个页面。判断什么的逻辑可以用java来写。

我現在的這個例子, vxml都會判斷 使用者語音輸入的結果,是不是1234,2363,5346
,只要不是這3個之ㄧ,就無法跳到下一部.)    

你可以把vxml中的判斷逻辑去掉,不管识别出什么,一律跳转到下一个页面。然后用java处理相应的逻辑判断。


--  作者:superintel
--  发布时间:11/22/2006 2:09:00 PM

--  
<?xml version="1.0" encoding="GB2312"?>

<!DOCTYPE vxml PUBLIC "-//W3C//DTD VOICEXML 2.0//EN" "vxml20-1115.dtd">
<vxml xmlns="http://www.w3.org/2001/vxml" version="2.0" xml:lang="zh-CN">

 <!--Call Flow Model-->

 <!--Begin Call Flow-->
 <property name="universals" value="help cancel" />
 <property name="audiomaxage" value="1" />

 <var name="mode" expr="'speech'" />
 <var name="previousResult" />

 <var name="P00030" />
 <form id="P00030">
  <field name="fP00030">
   <option value="1234">1234</option>

   <prompt cond="mode == 'speech'" bargein="true">
    <audio src="./flow%20audio/P00030s.wav">test</audio>
   </prompt>
   <prompt cond="mode == 'dtmf'" bargein="true">
    <audio src="./flow%20audio/P00030d.wav">test</audio>
   </prompt>
   <filled>
    <assign name="P00030" expr="fP00030" />
    <assign name="previousResult" expr="fP00030" />

    <if cond="fP00030 == '1234'">
     <goto next="#Z00010" />
    </if>
   </filled>
  </field>
 </form>


 <form id="Z00010">
  <block>
   <audio src="./flow%20audio/Z00010s.wav">Good Bye</audio>
  </block>
 </form>


 <!--End Call Flow-->

</vxml>


--  作者:superintel
--  发布时间:11/22/2006 2:14:00 PM

--  
你好,已上市vxml源碼,不過我把條件判斷拿掉,該程序還是只能識別1234而已.似乎問題在
<option value="1234">1234</option>,不過我要的辨識範圍是1000~9999,如果手動
輸入好像太沒效率.
我有試過內含jsp代碼
<%
       for(int i=1234;i<3000;i++)
       out.println("<item>"+String.valueOf(i)+"</item>");                       
%>

但是範圍太大就不行(如:1000~9999)  小範圍是ok的.


--  作者:zhu_ruixian
--  发布时间:11/22/2006 2:41:00 PM

--  
ASR的范围可能有个限制,不能太大。你要识别的是数字,可能有更简单的方法。
--  作者:superintel
--  发布时间:11/22/2006 9:45:00 PM

--  
終於解決了
原來在<field> tag 做個限制即可,我都想的太複雜了.

<field name="T1" type="digits?length=4" modal="true">

加上這行,都解決了!!


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms