📄 使用perl创建voicexml应用程序 - fanqiang_com.htm
字号:
<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></VXML><SPAN
lang=EN-US></vxml></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>}</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD
class=a14>尽管这一段脚本并没有什么实际的用处,但可以考虑一下我们在这一段脚本中完成的任务。在短短的没有几行的脚本中,我们从远程的网站上取出了所需要的资源,并提取出我们关心的内容,并使这些信息可以从全世界的任一部电话上接听。</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>创建动态的VoiceXML应用</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>尽管上面的例子揭示出通过电话提供互联网网站内容和服务的可能性,但用户和VoiceXML应用之间的“对话”还太缺乏交互性。幸运的是,VoiceXML也提供了一些专门用来接收用户输入的元素。另外,象HTML表格那样,VoiceXML表格也可以用来接收通过标准的HTTP
GET和POST方法向服务器传送的数据。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD
class=a14>在下面的例子中,通过创建一个很小的讲述“神奇的oracle”故事的应用程序,我们根据使用POST方法输入的数据创建了一个动态的VoiceXML文档。为了使程序简单明了,我们将把程序分为二部分:一个纯文本的包含获取用户输入表格的VoiceXML文档和动态的、由CGI创建的对这些问题的回答进行规格化的文档。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD
class=a14>首先,我们来创建这个表格。在表格的开始处是一个问候语,只有用户在第一次连接时才会听到它。</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><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN><form
id="greeting"></SPAN><BLOCK></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><AUDIO><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN><block></SPAN></TD></TR>
<TR>
<TD class=a14><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN><audio></SPAN></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>Thank you for calling the mystic
oracle!</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="#main_query" /><SPAN
lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN><goto
next="#main_query"/></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>然后,我们将开始设计主表格。这个表格只包含一个名字为query_type的字段,它的用途是获取用户的问题。我们需要特别注意grammar元素,它使VoiceXML应用开发人员能够精确地确定给定字段能够接收什么类型的输入。例如,在我们的例子中,如果用户的问题中含有“career”、“job”、“boss”、“coworker”或“department”等词汇,query_type字段的值勤将被设置为“career”。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><FIELD name="query_type"><SPAN
lang=EN-US><SPAN style="mso-spacerun: yes">
</SPAN><form
id="main_query"></SPAN></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><GRAMMAR name="qtype"
type="application/x-gsl"><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN><field
name="query_type"></SPAN></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><![CDATA[</td><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN><grammar type="application/x-gsl"
name="qtype"></SPAN></TD>
<TR>
<TD class=a14><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN><![CDATA[</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>[romance love sex boyfriend girlfriend]
{<QUERY_TYPE ?romance?>}</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>[career job boss coworker department]
{<QUERY_TYPE ?career?>}</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>[family husband wife mother father son
daughter] {<QUERY_TYPE ?family?>}</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>]</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>]]></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14></GRAMMAR><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN></grammar></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>prompt元素通知VoiceXML网关向用户朗读一段文字,并等待响应。在本例中,如果用户提问的问题中包含上面一段脚本中的grammar元素中定义的词汇之一,应用程序就会向用户表示感谢,并使用POST方法把信息提交给应用程序的CGI部分。submit元素的namelist属性允许我们指定准备提交当前文档中的哪个字段或变量。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><PROMPT><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN><prompt></SPAN></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>Clear your mind and concentrate on your
question. <BREAK /></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>You may ask your question
now.</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14></PROMPT><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN></prompt></SPAN></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><FILLED><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN><filled></SPAN></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN><audio>thank
you.</audio></SPAN></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><SUBMIT
next="http://mysite.tld/cgi-bin/mystic_response.cgi" td
<><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN><submit
next="http://mysite.tld/cgi-bin/mystic_response.cgi"</SPAN></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>method="POST"</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD
class=a14>namelist="query_type"/></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14></FILLED><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN></filled></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>下面的代码是一个错误陷阱结构,可以使oracle应用有一个更合理的界面。如果用户所问的问题中不包含上面的grammar元素中所包含的词汇,nomatch标记中所包含的文本就会被朗读出来。reprompt元素使VoiceXML浏览器返回到所在模块的开始,并重新朗读前面的提示。如果用户没有提问问题,系统将根据每个noinput的count属性定义的顺序每次朗读一个noinput元素。如果三次提示后用户仍然没有提问问题,应用程序将挂断与用户的连接。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><NOMATCH><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
</SPAN><nomatch></SPAN></TD></TR></TBODY></TABLE>
<TABLE width="100%">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -