1

When I run the JavaScript and VXML codes separately they are working fine. But when I try to call JavaScript function through the VXML code it is not working. Please find the VXML code below. Please help me to solve the issue.

<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>
user3044707
  • 71
  • 1
  • 5
  • Be more specific about what you are seeing. Is the VoiceXML browser throwing an exception? Are you not getting the results you expect? Is it not finding the audio file? – Kevin Junghans Dec 13 '13 at 13:13

1 Answers1

1

"block" element makes anonymous scope. Because your variable couldn't reach your "field" element. Perhaps you have two solution.

  1. Remove "block" element outer "script" element.
  2. Move "script" element to outer "form" element.
Bladean Mericle
  • 524
  • 2
  • 13