📄 使用perl创建voicexml应用程序 - fanqiang_com.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0064)http://fanqiang.chinaunix.net/program/html/2002-01-29/2287.shtml -->
<HTML><HEAD><TITLE>使用Perl创建VoiceXML应用程序 - fanqiang.com</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>BODY {
FONT: 12pt 宋体
}
TH {
FONT: 12pt 宋体
}
INPUT {
FONT: 12pt 宋体
}
SELECT {
FONT: 12pt 宋体
}
TEXTAREA {
FONT: 12pt 宋体
}
SELECT {
FONT: 12pt 宋体
}
checkbox {
FONT: 12pt 宋体
}
A:link {
COLOR: #e6a306; TEXT-DECORATION: underline
}
A:visited {
COLOR: #e6a306; TEXT-DECORATION: underline
}
A:hover {
COLOR: #ffff00; TEXT-DECORATION: underline
}
BODY {
FONT-SIZE: 12pt; FONT-FAMILY: "宋体", "serif"
}
TD {
FONT-SIZE: 12pt; FONT-FAMILY: "宋体", "serif"
}
P {
FONT-SIZE: 9pt; LINE-HEIGHT: 150%
}
</STYLE>
<META content="MSHTML 6.00.2800.1505" name=GENERATOR></HEAD>
<BODY text=#ffffff bgColor=#000000 leftMargin=0
background="使用Perl创建VoiceXML应用程序 - fanqiang_com.files/bline.gif" topMargin=5
onload=setTailPosition() marginwidth="0" marginheight="5">
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width=750 border=0>
<TBODY>
<TR>
<TD height=45>
<P align=center><IMG alt="[ 永远的UNIX::UNIX技术资料的宝库 ]"
src="使用Perl创建VoiceXML应用程序 - fanqiang_com.files/title.gif"> </P></TD></TR>
<TR>
<TR>
<TD vAlign=bottom align=left height=40><SMALL><A
href="http://fanqiang.chinaunix.net/">首页</A> > 编程技术 > <A
href="http://fanqiang.chinaunix.net/program/html/index.shtml">HTML/JS/XML</A>
> 正文</SMALL></TD></TR>
<TR>
<TD width="100%" bgColor=#d09f0d colSpan=5 height=2><IMG height=1
src="使用Perl创建VoiceXML应用程序 - fanqiang_com.files/c.gif"
width=1></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=750 border=0>
<TBODY>
<TR>
<TD vAlign=top align=middle><BR>
<TABLE cellSpacing=0 cellPadding=0 width="90%" align=center border=0>
<TBODY>
<TR>
<TH class=f24>
<H1>使用Perl创建VoiceXML应用程序</H1></TH></TR>
<TR>
<TD align=middle height=20><FONT
color=#999999><SMALL>本文出自:http://www.computerworld.com.cn 作者: 刘彦青
(2002-01-29 20:54:06)</SMALL></FONT></TD></TR>
<TR>
<TD><BR>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-0052768304011480";
google_alternate_color = "000000";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_channel ="5959447789";
google_color_border = "000000";
google_color_bg = "666666";
google_color_link = "FFFFFF";
google_color_url = "FF9900";
google_color_text = "CCCCCC";
//--></SCRIPT>
<SCRIPT src="使用Perl创建VoiceXML应用程序 - fanqiang_com.files/show_ads.js"
type=text/javascript>
</SCRIPT>
</TD></TR>
<TR>
<TD height=15></TD></TR>
<TR>
<TD class=l17><FONT class=f14 id=zoom><FONT color=#cccccc><!-- 正文begin --><!--HTML_BEGIN-->
<TABLE width=728 align=center>
<TBODY>
<TR>
<TD vAlign=top width=600>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><B>简介</B></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD
class=a14>VoiceXML是一种用来创建可以通过电话访问的内容的基于XML的编程语言,这样的内容不仅仅是具有互联网访问功能的移动电话可以访问,普通的电话也照样可以访问这些内容。HTML使用图形用户界面访问网站的内容,而VoiceXML则通过语音界面访问内容,其中的语音和拨号盘代替了传统的显示器、键盘和鼠标。对VoiceXML及其工作原理进行详细的介绍不在本文的范围之内,有关这方面的知识请参与相关资料。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><B>一个简单的例子</B></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD
class=a14>为了说明通过电话访问现有的互联网内容是如何简单,我们将使用Perl建立一个简单的CGI脚本文件,获取一个包含CPAN最近上传内容的文件,然后将文件转换为VoiceXML,以便用户能够通过VoiceXML网关在电话上访问这些内容。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>use strict;</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>use XML::XPath;</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>use LWP::UserAgent;</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>加载必要的模块后,在脚本程序的开始,我们创建新的HTTP::Request和
LWP::UserAgent对象,然后调用LWP::UserAgent的simple_request方法为RSS文件请求远程服务器。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>my $news_url =
'http://search.cpan.org/recent.rdf';</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>my $request = HTTP::Request->new('GET',
$news_url);</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>my $ua =
LWP::UserAgent->new();</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>my $response =
$ua->simple_request($request);</TD></TR></TBODY></TABLE>
<TABLE width=518>
<TBODY>
<TR>
<TD class=a14 width=510>发出请求后,我们将开始输出VoiceXML。首先创建vxml
root元素和包含一个block元素的表格。在block元素中放入一个audio元素,告诉用户在RSS文件处理过程期间需要耐心地等待,然后用一个goto元素告诉VoiceXML浏览器跳到当前文档中标有headlines的小节。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>print qq*</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><?xml version="1.0"?></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><VXML><SPAN
lang=EN-US><vxml></SPAN></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><BLOCK><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN><form
id="greeting"></SPAN></TD></TR>
<TR>
<TD class=a14><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN><block></SPAN></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><AUDIO><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN><audio></SPAN></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>Please wait while I process the c pan news
feed.</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14></AUDIO><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN></audio></SPAN></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><GOTO next="#headlines" /><SPAN
lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN><goto
next="#headlines"/></SPAN></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14></BLOCK><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN></block></SPAN></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14></FORM><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN></form></SPAN></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>*;</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD
class=a14>然后我们将对response对象进行测试,确保我们已经收到了远程的RSS文件。如果已经收到了远程文件,则创建一个新的XML::XPath实例,并将response对象的内容小节传送给它进行解析。如果在请求文件或在解析返回的内容时出现错误,则将出错的信息存储在$error中以供以后分析用。尽管封装对XML::XPath最初调用的eval块增加了一些系统开销,但在解析过程出现错误时,它能够使我们很“体面地”退出程序,如果没有它,解析出现错误将使脚本意外地结束。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>my ($error, $xp);</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -