快速业务通道

在Java Web 开发框架中创建VoiceXML页面 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
看似已经足够,但您依然需要告知浏览器您正在向它发送 XML。切记,浏览 器用于 HTML,某些浏览器可能无法顺利接收 XML。您可设置内容类型,也可设置内容的长度 ,只要再次使用 HttpServletResponse 对象即可:

// Let the browser know that XML is coming     out = res.getOutputStream();     res.setContentType("text/xml");     res.setContentLength((int)vxml.length());

清单 5 展示了添加到前文介绍的 清单 3 给出的 servlet 中的所有代码。

清单 5. 完整且准备好载入 VXML 文件的 VoiceXMLServlet

package com.ibm.vxml; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import javax.servlet.*; import javax.servlet.http.*; public class VoiceXMLServlet extends HttpServlet {   private static final String VXML_FILENAME =    "simple-voice_recog.xml";   public void doGet(HttpServletRequest req, HttpServletResponse res)    throws ServletException, IOException {    String vxmlDir = getServletContext().getInitParameter("vxml-dir");    BufferedInputStream bis = null;    ServletOutputStream out = null;    try {     // Load the VXML file     File vxml = new File(vxmlDir + "/" + VXML_FILENAME);     FileInputStream fis = new FileInputStream(vxml);     bis = new BufferedInputStream(fis);     // Let the browser know that XML is coming     out = res.getOutputStream();     res.setContentType("text/xml");     res.setContentLength((int)vxml.length());     // Output the VXML file     int readBytes = 0;     while ((readBytes = bis.read()) != -1) {      // output the VXML      out.write(readBytes);     }    } finally {     if (out != null) out.close();     if (bis != null) bis.close();    }   } }

在Java Web 开发框架中创建VoiceXML页面(7)

时间:2011-04-16 IBM Brett McLaughlin

测试 servlet 载入的 VoiceXML

完成上述更改后编译您的 servlet,若需要请重启 servlet 引擎。浏览 servlet,您应 看到如 图 4 所示的输出结果。成功!

图 4. VoiceXML servlet 输出 VXML

在Java Web 开发框架中创建VoiceXML页面 - 编程入门网

若您未得到类似输出,确定您的文件是否位于您希望的位置,并确保没有任何权限问题。 您还要检查 servlet 引擎的日志或请求系统管理员的帮助。

现在就准备好将电话号码映射到您的 servlet 了。重新回到 Voxeo.com 的 Application Mnager,添加一个新应用程序(可能会看到之前您使用过的应用程序)。确保选中 VoiceXML 2.0,然后输入新应用程序的名称和 servlet 的 URL。Voxeo 将创建应用程序并为其分配一 个电话号码。

拨入这个新号码,您应听到 清单 2 中的 VXML 给出的提示。祝贺您!您已经编写好了一 个输出 VXML 的 Java servlet 的代码,还在其中挂接了一个电话号码。

部分可选的附加项

您可能希望向 servlet 代码中添加一些小附加项。它们都不是必需的,但都会给现有的 版本增加一些健壮性和文档。

首先,您可能想允许用户通过 POST 请求访问 VXML。这可能在用户单击表单上的一个按 钮时发生,该表单将对 VoiceXMLServlet 作出一个 POST 请求。在 servlet 中处理这一操 作非常简单,只要编写一个委托已有 doGet() 方法的 doPost() 即可,如下所示:

public void doPost(HttpServletRequest req, HttpServletResponse res)    throws S

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号