0

对于一个特定的项目,我正在尝试编写一个 voicexml 文件来播放一些音频文件。我对播放文件没有任何问题。但我需要一些指导来播放文件夹中的多个文件。我知道我必须使用 ecmascript 和标签来做到这一点。但我不知道如何访问文件夹来播放特定的 wav 文件。

这是我播放 1 个音频文件的代码:

<?xml version="1.0" encoding="UTF-8"?> 
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml" xml:base="file://">
<var name="repeat" expr="session.user.repeat"/>
<form id="loopblock">
    <block>
        <if cond="repeat > 0">
        <prompt>
            <audio src="file://provisioned/music.wav"/>
        </prompt> 
        <assign name="repeat" expr="repeat - 1"/>
        <goto next="#loopblock"/>
        </if>
        <disconnect/>
    </block>
</form>
</vxml>

我有一个包含不同 .wav 文件的文件夹。

  • /provisioned/music/a.wav
  • /provisioned/music/b.wav
  • /provisioned/music/c.wav

因为任何人都可以自定义这个 wav 文件,我如何才能在不一一调用的情况下将它们全部播放。我只需要扫描文件夹并使用 VoiceXML 播放它们。

如有任何建议,我将不胜感激。

4

1 回答 1

0

起初,VoiceXML 无法扫描文件夹。
它需要其他编程语言。

例如(JSP - http://localhost:8080/example/get_audio_list.jsp

<?xml version="1.0" encoding="UTF-8"?>
<%
String audioListCSV = "";
File[] audioList = new File("/provisioned/music/").listFiles();
for (int i = 0; i < audioList.length; ++i) {
    File audio = audioList[i];
    if (audio.isFile()) {
        audioListCSV += "\'file:///" + audio.getAbsolutePath() + "\'";
        if (i + 1 < audioList.length) {
            audioListCSV += ",";
        }
    }
}
%>    
<vxml version="2.1">
    <form>
        <block>
            <var name="audioList" />
            <assign name="audioList" expr="[<%=audioListCSV%>]" />
            <return namelist="audioList" />
        </block>
    </form>
</vxml>

JSP 称为子对话框。

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.1">
    <script>
        var audioList;
    </script>
    <form id="getAudioList">
        <subdialog name="get_audio_list" src="http://localhost:8080/example/get_audio_list.jsp">
            <filled>
                <assign name="audioList" expr="get_audio_list.audioList">
                <goto next="#playAudioList" />
            </filled>
        </subdialog>
    </form>
    <form id="playAudioList">
        <block>
            <prompt bargein="true">
                <foreach item="i" array="audioList">
                    <audio expr="i" />
                </foreach>
            </prompt>
        </block>
        <block>
            <disconnect />
        </block>
    </form>
</vxml>
于 2011-10-03T09:32:45.663 回答