当我单独运行JavaScript和VXML代码时,它们工作正常。但是当我尝试通过VXML代码调用JavaScript函数时,它无法正常工作。请在下面找到VXML代码。请帮我解决这个问题。
<vxml version="2.1">
<form id="selectSong">
<block>
<script>
<![CDATA[
function selectSong()
{
var number = 1;
var currSong = '../songs/buddhist/0001.wav';
var fields = currSong.split('/');
var song = fields[3];
var fields_song = song.split('.');
var num = fields_song[0];
if (number == 1) {
num++;
} else if (number == 2) {
num--;
}
if (num > 9 && num < 99)
{
return "'../songs/buddhist/00" + num + ".wav'";
} else if (num < 9 && num > 0) {
return "'../songs/buddhist/000" + num + ".wav'";
} else if (num > 99 && num > 999) {
return "'../songs/buddhist/0" + num + ".wav'";
} else {
return "'../songs/buddhist/" + num + ".wav'";
}
}
]]>
</script>
</block>
<block>
<prompt>
<audio expr="'../Prompts/Press1.wav'" />
<audio expr="'../Prompts/SelectLangPreference.wav'" />
</prompt>
</block>
<field name="getNum" >
<grammar xml:lang="en-US" root = "MYRULE" mode="dtmf">
<rule id="MYRULE" scope = "public">
<one-of>
<item> 1 </item>
<item> 2 </item>
<item> 3 </item>
<item> 4 </item>
</one-of>
</rule>
</grammar>
<filled namelist="getNum" mode="all">
<if cond="getNum == 1">
<prompt>
<audio expr="selectSong()" />
</prompt>
</if>
</filled>
</field>
</form>
</vxml>
答案 0 :(得分:1)
“block”元素生成anonymous scope。 因为你的变量无法到达你的“field”元素。 也许你有两个解决方案。