让voiceXML读取服务器返回的结果
make voiceXML to read the result returned by the server
我是语音新手XML,我想知道如何在 post 之后由服务器读取值 return。我希望 voiceXML 读取服务器的响应。 According to voiceXML documentation,我理解结果应该在XML。
这是我的node.js/express.js接收结果的代码:
app.post("/getData", function (req, res) {
console.log(JSON.stringify(req.body));
res.header('Content-Type','text/xml').send('<?xml version="1.0" ?> <vxml version="2.0"> <block> <prompt> The time in Milwaukee is 10 </prompt> </block> </vxml>');
});
这是显示我已成功接收 posted 内容的屏幕截图:
这是显示我已成功发送 XML 结果的屏幕截图:
这是我的声音XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE vxml PUBLIC "-//BeVocal Inc//VoiceXML 2.0//EN" "http://cafe.bevocal.com/libraries/dtd/vxml2-0-bevocal.dtd">
<vxml xmlns="http://www.w3.org/2001/vxml" xmlns:bevocal="http://www.bevocal.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">
<form scope="dialog">
<field name="name" modal="false">
<grammar src="grammars.grammar#Names"/>
<prompt>Whats your name?</prompt>
<filled>
<prompt>Hello <value expr="name"/>
</prompt>
</filled>
</field>
<field name="city" modal="false">
<grammar src="grammars.grammar#Cities"/>
<prompt>What city are you from?</prompt>
<filled>
<prompt>You are from <value expr="city"/>
</prompt>
</filled>
</field>
<field name="country" modal="false">
<grammar src="grammars.grammar#Countries"/>
<prompt>What country are you from?</prompt>
<filled>
<prompt>You are from <value expr="country"/>
</prompt>
</filled>
</field>
<field name="cityTime">
<prompt>
What city would you like the time for?
</prompt>
<grammar type="application/x-nuance-gsl">
[denver (san francisco) ]
</grammar>
</field>
<field name="formatTime">
<prompt>
Twelve hour or twenty four hour clock?
</prompt>
<grammar type="application/x-nuance-gsl">
[[twelve (twenty four)] ?hour]
</grammar>
</field>
<block>
<submit next="http://65.29.170.122/getData" method="post" namelist="name city country cityTime formatTime" />
</block>
</form>
</vxml>
有两种方法可用:
首先,在收集您的输入后提交表单,响应应该是播放您的数据的新 VoiceXML 文档。
其次,如果您的浏览器支持(大多数支持),您可以使用 Data 元素从 VoiceXML 表单中发出请求。响应需要为 XML。 VoiceXML 提供了一种遍历结果 DOM 以获取数据的方法。
至于说出数据,大多数浏览器都支持在提示中使用 SSML 的 say-as 元素。对于大多数专业应用程序,通常的方法是构建一个 javascript 库到 assemble 并播放一组录音以播放时间。
在文件中添加 php 代码,添加 xml 脚本并在任何你想要的地方回显服务器响应。这样,语音服务器获得的最终 XML 实际上也有 php 代码,但这无关紧要,因为它会忽略 php 只采用介于两者之间的 xml 标签你会回应结果。例如:
<?php
$appointmentTime = $_REQUEST['appointment_time'];
?>
<Response>
<Play> <?php echo $appointmentTime ?> </Play>
</Response>
我是语音新手XML,我想知道如何在 post 之后由服务器读取值 return。我希望 voiceXML 读取服务器的响应。 According to voiceXML documentation,我理解结果应该在XML。
这是我的node.js/express.js接收结果的代码:
app.post("/getData", function (req, res) {
console.log(JSON.stringify(req.body));
res.header('Content-Type','text/xml').send('<?xml version="1.0" ?> <vxml version="2.0"> <block> <prompt> The time in Milwaukee is 10 </prompt> </block> </vxml>');
});
这是显示我已成功接收 posted 内容的屏幕截图:
这是显示我已成功发送 XML 结果的屏幕截图:
这是我的声音XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE vxml PUBLIC "-//BeVocal Inc//VoiceXML 2.0//EN" "http://cafe.bevocal.com/libraries/dtd/vxml2-0-bevocal.dtd">
<vxml xmlns="http://www.w3.org/2001/vxml" xmlns:bevocal="http://www.bevocal.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">
<form scope="dialog">
<field name="name" modal="false">
<grammar src="grammars.grammar#Names"/>
<prompt>Whats your name?</prompt>
<filled>
<prompt>Hello <value expr="name"/>
</prompt>
</filled>
</field>
<field name="city" modal="false">
<grammar src="grammars.grammar#Cities"/>
<prompt>What city are you from?</prompt>
<filled>
<prompt>You are from <value expr="city"/>
</prompt>
</filled>
</field>
<field name="country" modal="false">
<grammar src="grammars.grammar#Countries"/>
<prompt>What country are you from?</prompt>
<filled>
<prompt>You are from <value expr="country"/>
</prompt>
</filled>
</field>
<field name="cityTime">
<prompt>
What city would you like the time for?
</prompt>
<grammar type="application/x-nuance-gsl">
[denver (san francisco) ]
</grammar>
</field>
<field name="formatTime">
<prompt>
Twelve hour or twenty four hour clock?
</prompt>
<grammar type="application/x-nuance-gsl">
[[twelve (twenty four)] ?hour]
</grammar>
</field>
<block>
<submit next="http://65.29.170.122/getData" method="post" namelist="name city country cityTime formatTime" />
</block>
</form>
</vxml>
有两种方法可用: 首先,在收集您的输入后提交表单,响应应该是播放您的数据的新 VoiceXML 文档。
其次,如果您的浏览器支持(大多数支持),您可以使用 Data 元素从 VoiceXML 表单中发出请求。响应需要为 XML。 VoiceXML 提供了一种遍历结果 DOM 以获取数据的方法。
至于说出数据,大多数浏览器都支持在提示中使用 SSML 的 say-as 元素。对于大多数专业应用程序,通常的方法是构建一个 javascript 库到 assemble 并播放一组录音以播放时间。
在文件中添加 php 代码,添加 xml 脚本并在任何你想要的地方回显服务器响应。这样,语音服务器获得的最终 XML 实际上也有 php 代码,但这无关紧要,因为它会忽略 php 只采用介于两者之间的 xml 标签你会回应结果。例如:
<?php
$appointmentTime = $_REQUEST['appointment_time'];
?>
<Response>
<Play> <?php echo $appointmentTime ?> </Play>
</Response>