2011-09-21 99 views
0

对于一个特定的项目,我试图编写一个voicexml文件来播放一些音频文件。我没有关于播放文件的问题。但我需要一些指导来播放文件夹中的多个文件。我知道我必须使用ecmascript和标签来做到这一点。但我无法弄清楚如何访问文件夹来播放特定的wav文件。如何使用VoiceXML播放文件夹中的多个文件?

这里是我的代码播放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进行播放。

我会很高兴的任何建议。

回答

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> 
相关问题