以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML在语音技术中的应用 』   (http://bbs.xml.org.cn/list.asp?boardid=47)
----  關於vxml (VoiceXML)與 jsp參數傳遞的問題.  (http://bbs.xml.org.cn/dispbbs.asp?boardid=47&rootid=&id=40173)


--  作者:superintel
--  发布时间:11/19/2006 11:41:00 AM

--  關於vxml (VoiceXML)與 jsp參數傳遞的問題.

<?xml version="1.0" encoding="gb2312"?>
<%@ page contentType="text/x-vxml" language="java"%>
<%@ page import="java.net.*,java.util.*,java.io.*" %>
<vxml xmlns="http://www.w3.org/2001/vxml" version="2.0" xml:lang="zh-cn">
  <form id="Test">
        <field name="T1">
            <grammar version="1.0" mode="voice"
                     type="application/srgs+xml"
                     root="snackfood">
                <rule id="snackfood" scope="public">
                   <one-of>
                      <item>1234</item>
                      <item>2363</item>
                      <item>5346</item>
                      <item>2609</item>
                   </one-of>
                </rule>
            </grammar>
            <prompt>please enter the stock number</prompt>
         </field>

        <filled>
            <prompt>
             <% out.println(NMTOKEN);
                String result="";
         String r="";
         String num="2363";
         String price="";
         num=request.getParameter("T1");
         if (request.getHeader("HTTP_X_FORWARDED_FOR") == null)
         {
              System.out.println( request.getRemoteAddr());
           } else
           {
             System.out.println(request.getHeader("HTTP_X_FORWARDED_FOR"));
                 }
                 try
          {
           URL url = new URL("http://localhost:8080/vx.jsp?T1=1234");
             URLConnection conn = url.openConnection();
             conn.setDoInput(true);
             BufferedReader in = new BufferedReader(
             new InputStreamReader(conn.getInputStream()));
             String line;
         while ((line = in.readLine()) != null)  
         {
          price+="    ";
          price+=line;
         }in.close();
             }catch(Exception ex){}
             out.println(price);
             %>
            </prompt>
        </filled>
        </form>
</vxml>



[此贴子已经被zhu_ruixian于2006-12-17 17:22:22编辑过]

--  作者:superintel
--  发布时间:11/19/2006 11:45:00 AM

--  
上面的code,可以正常執行,但是他的參數是固定的(t1=1234),我想把t1的參數改為vxml
傳入.

在  URL url = new URL("http://localhost:8080/vx.jsp?T1=1234");
這行, 1234 要怎嚜變更成vxml(VoiceXML)所傳入的參數?

[此贴子已经被zhu_ruixian于2006-12-17 17:22:37编辑过]

--  作者:zhu_ruixian
--  发布时间:11/19/2006 1:11:00 PM

--  
这是一个很简单的java编程问题。解释如下:
String myurl="http://localhost:8080/vx.jsp";
//你可以在此处对myrul做任何修改,然后用修改后的myurl,来构造url 变量。
//示例:
myurl+="?T1=1234";
myurl+="&SecondParam=Param";
URL url = new URL(myurl);
//此时myurl的值应该是"http://localhost:8080/vx.jsp?T1=1234&SecondParam=Param"


上面获得prompt内容的方法我感觉太复杂了。


--  作者:superintel
--  发布时间:11/20/2006 11:13:00 PM

--  
不過問題是我要從vxml裡語音辨識出參數值(如:1234),再把1234傳給1.jsp,用上述的方法,不知道如何套用上去?

--  作者:zhu_ruixian
--  发布时间:11/21/2006 11:43:00 AM

--  
vxml裡語音辨識出參數值,可以用

<assign name="Param1 " expr="你的参数值1"/>
<assign name="Param2 " expr="你的参数值2"/>

<submit next="received.jsp" namelist=Param1 Param2/>

然后在下一个页面就可以用
request.getParam(Param1);
request.getParam(Param2);
接收了。java-》vxml(VoiceXML)很容易。直接从vxml(VoiceXML)-》java不好传,多加个页面,应该可以解决。


[此贴子已经被作者于2006-12-17 17:22:55编辑过]

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

--  
太感謝了,我多加了一個頁面就解決了了,但我還有另一個問題.
就是 vxml(VoiceXML) 可不可以做到 讓使用者語音輸輸入,辨識內容直接存到變數後送出?
(我這個例子, vxml(VoiceXML)都會判斷 使用者語音輸入的結果,是不是 1234,2363,5346,2609,只要
不是這4個之ㄧ,就無法跳到下一部.)


[此贴子已经被zhu_ruixian于2006-12-17 17:23:11编辑过]

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