0

我在以下情况下遇到问题:我的 vxml 有以下代码段:

<block> 
<script src="myscript.es"/> 
<audio> <value expr="temp()"/> </audio> 
<exit/> 
</block> 

myscript.es:

function temp(){ 
var delay = new String("abc <break time='2000ms'/> pqr"); 
return delay; 
} 

评估的表达式不被视为标记,而是如下所示:添加 <break time='2000ms'/> bbb

有没有办法从 ecmascript 表达式动态生成标签?

4

1 回答 1

2

您的示例至少有几个问题。首先,值标记中使用的表达式的结果不应返回中断元素,仅返回您希望文本转语音引擎语音回复的项目。你需要做这样的事情来在两个值之间插入一个中断。

<form id="F1"> 
  <var name="Color1" expr="'red'"/> 
  <var name="Color2" expr="'blue'"/> 
  <block> 
    <prompt> 
       My favorite colors are  
       <value expr="Color1"/>
       <break time="2000ms"/>
       <value expr="Color2"/>
    </prompt> 
  </block> 
</form>

而且您不能在 VoiceXML 中使用 ECMA 脚本生成标签。要动态生成标签,您必须使用您喜欢的 Web 技术,例如 ASP.NET、JSP 或 PHP 作为示例。

如果您是 VoiceXML 的新手并且熟悉 ASP.NET MVC,那么您可以使用一个名为VoiceModel的开源项目来生成动态 VoiceXML,而无需了解 VoiceXML 语法。

于 2013-04-24T15:54:21.073 回答