Как воспроизвести несколько файлов в папке с VoiceXML? - PullRequest
0 голосов
/ 21 сентября 2011

Для конкретного проекта я пытаюсь написать файл voicexml для воспроизведения некоторых аудиофайлов. У меня нет проблем с воспроизведением файла. Но мне нужно несколько направлений для воспроизведения нескольких файлов в папке. Я знаю, что для этого нужно использовать ecmascript и tag. Но я не могу понять, как получить доступ к папке для воспроизведения определенных файлов 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.

  • / предоставлен / музыка / a.wav
  • / предоставлен / музыка / b.wav
  • / предоставлен / музыка / c.wav

Как я могу воспроизвести их все, не вызывая их один за другим, потому что любой может настроить этот wav-файл. Все, что мне нужно, чтобы отсканировать папку и воспроизвести их с помощью VoiceXML.

Буду признателен за любое предложение.

1 Ответ

0 голосов
/ 03 октября 2011

Сначала 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 называется subdialog.

<?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>
...