VoiceXML(VXML)是一种类似于HTML的标记语言。不同之处在于VXML将由一个电话浏览器解析而非Web浏览器解析。现在就让我们来认识它。
人工合成的语音或音频文件提供了应用程序和用户之间的接口,用户可以通过对电话浏览器说话或是摁下电话上的按钮作出回应。
为了能够将VXML“页面”呈现给用户,你必须使用VXML网关将VXML转化为电话可播放的语音。在本文中,我将会演示如何才能使用BeVocal(http://www.bevocal.com/)创建一个VXML version 2.0解决方案,从而生成一个可以连接到数据库并根据用户输入将一条消息进行回放的网关。
我选择BeVocal的理由在于它是一个很好且免费的开发平台。我可以借助它连接到远程的URL从而为用户提供VXML文件。这对于处理用户输入以及在数据库服务器中查询数据是必需的。使用BeVocal需要注册,但相对获得这一所需的语音应用开发功能而言,我认为这笔费用是很少的。
在我的解决方案中,我希望提示用户输入PIN以及passcode。一旦用户的PIN和passcode都得到验证,我将使用这些数据从企业数据库中为用户查询事件信息。所查询的事件信息将被回读给用户。
事件信息被存放在数据库中的两张不同的表格中:一张是用户信息表格,另一张是事件表格。用户信息表格包括了PIN以及passcode信息,以及用户的名字。事件表格则包含了事件信息:pin,passcode,event (type),event_title,data和time。其中pin and passcode结合起来将用来指定唯一用户。Event具有某种event类型:meeting(会议)、reminder(提醒)等等。event_title则是对event的简短描述。Date和time都是字符变量域,存放着易于解析的文本到语音(text-to-speech即TTS)数据。
列表A给出了我是如何提示用户输入PIN的代码。
列表A
<?xml version="1.0"?>
<!DOCTYPE vxml PUBLIC "-//BeVocal Inc//VoiceXML 2.0//EN"
"http://cafe.bevocal.com/libraries/dtd/vxml2-0-bevocal.dtd">
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
<form id="login">
<field name="pin" type="digits?length=4">
<prompt>
Please enter or say your pin.
</prompt>
<filled>
<submit next="http://someurl/get_passcode.php" method="post"
namelist="pin"/>
</filled>
<noinput>
I'm sorry, I didn't hear you. Please try again.
<reprompt/>
</noinput>
</field>
</form>
</vxml>