IVR Script in lua

I've created an ivr script in lua. In this script goto statement is not working. Please someone tell me what is the problem in this code. If I erase ::chandu:: and elseif (digits == "0") then goto chandu then it is running fine. but adding goto statement call is not connecting or I can say script is not running.

                 .

i = 0 j = 0

while (session:ready() == true) do
session:setAutoHangup(false);

repeat ::chandu::

 digits = session:playAndGetDigits(1, 3, 3, 3000, "#", "/var/sipxdata/mediaserver/data/ivrscript/sampleLua/prompts/coral.wav", "/var/sipxdata/mediaserver/data/ivrscript/sampleLua/prompts/coral.wav", "\\d+"); 
    if (digits == "1")  then

        repeat

             digits = session:playAndGetDigits(1, 3, 3, 3000, "#", "/var/sipxdata/mediaserver/data/ivrscript/sampleLua/prompts/SPG_greet_long.wav","/var/sipxdata/mediaserver/data/ivrscript/sampleLua/prompts/SPG_greet_long.wav", "\\d+");
            if (digits == "1")  then
               language = "de"
               session:execute("set","transfer_ringback=$${us-ring}");
               session:execute("bridge","sofia/coraltele.com/[email protected]");
               session:hangup();


            elseif (digits == "2")  then
                language = "de"
                session:execute("set","transfer_ringback=$${us-ring}");
                session:execute("bridge","sofia/coraltele.com/[email protected]");
                session:hangup();

            elseif (digits == "9") then
                i = i + 1

            elseif (digits == "0") then

                goto chandu


            else
                language = "de"
                session:execute("set","transfer_ringback=$${us-ring}");
                session:execute("bridge","sofia/coraltele.com/[email protected]");
                session:hangup();

            end
                   until i == 3


    elseif(digits == "0") then

        j = j + 1

    else
        language = "de"
        session:execute("set","transfer_ringback=$${us-ring}");
        session:execute("bridge","sofia/coraltele.com/[email protected]");
        session:hangup();
    end
until j == 2

 language = "de"
 session:execute("set","transfer_ringback=$${us-ring}");
 session:execute("bridge","sofia/coraltele.com/[email protected]");
 session:hangup();  

end

Upvotes: 1

Views: 618

Answers (1)

Finally I've created a script having completely working now.

i = 0 j = 0

while (session:ready() == true) do

session:setAutoHangup(false);

repeat

digits = session:playAndGetDigits(1, 3, 3, 3000, "#", "/var/sipxdata/mediaserver/data/ivrscript/sampleLua/prompts/coral.wav", "shout://translate.google.com/translate_tts?tl=en&q=This+option+is+not+valid", "\d+");

if (digits == "1")  then

    repeat 

    digits = session:playAndGetDigits(1, 3, 3, 3000, "#", "/var/sipxdata/mediaserver/data/ivrscript/sampleLua/prompts/corporate_greet_long.wav","shout://translate.google.com/translate_tts?tl=en&q=This+option+is+not+valid", "\\d+");
    if (digits == "1")  then
    language = "de"
    session:execute("set","transfer_ringback=$${us-ring}");
    session:execute("bridge","sofia/coraltele.com/[email protected]");
    session:hangup();
    destroy(0);

  elseif (digits == "2")  then
    language = "de"
    session:execute("set","transfer_ringback=$${us-ring}");
    session:execute("bridge","sofia/coraltele.com/[email protected]");
    session:hangup();
    destroy(0);

  elseif (digits == "9") then

     i = i + 1


  elseif(digits == "0") then

    i = 0
    j = 0
    break

  else
    language = "de"
    session:execute("set","transfer_ringback=$${us-ring}");
    session:execute("bridge","sofia/coraltele.com/[email protected]");
    session:hangup();
    destroy(0);       --Destroys the session and releases resources. 
                      --This is done for you when your script ends, 
                      --but if your script contains an infinite loop 
                      --you can use this to terminate the session.
  end

  until i == 3






elseif (digits == "2")  then


  repeat 



  digits = session:playAndGetDigits(1, 3, 3, 3000, "#", "/var/sipxdata/mediaserver/data/ivrscript/sampleLua/prompts/support_greet_long.wav","shout://translate.google.com/translate_tts?tl=en&q=This+option+is+not+valid", "\\d+");
  if (digits == "1")  then
    language = "de"
    session:execute("set","transfer_ringback=$${us-ring}");
    session:execute("bridge","sofia/coraltele.com/[email protected]");
    session:hangup();
    destroy(0);

  elseif (digits == "2")  then
    language = "de"
    session:execute("set","transfer_ringback=$${us-ring}");
    session:execute("bridge","sofia/coraltele.com/[email protected]");
    session:hangup();
    destroy(0);


  elseif(digits == "9") then
   i = i + 1



  elseif(digits == "0") then

    i = 0
    j = 0
    break


  else
    language = "de"
    session:execute("set","transfer_ringback=$${us-ring}");
    session:execute("bridge","sofia/coraltele.com/[email protected]");
    session:hangup();
    destroy(0);
  end

 until i == 3





elseif (digits == "3")  then

    repeat 


   digits = session:playAndGetDigits(1, 3, 3, 3000, "#", "/var/sipxdata/mediaserver/data/ivrscript/sampleLua/prompts/SPG_greet_long.wav","shout://translate.google.com/translate_tts?tl=en&q=This+option+is+not+valid", "\\d+");
  if (digits == "1")  then
    language = "de"
    session:execute("set","transfer_ringback=$${us-ring}");
    session:execute("bridge","sofia/coraltele.com/[email protected]");
    session:hangup();
    destroy(0);

  elseif (digits == "2")  then
    language = "de"
    session:execute("set","transfer_ringback=$${us-ring}");
    session:execute("bridge","sofia/coraltele.com/[email protected]");
    session:hangup();
    destroy(0);

   elseif (digits == "9") then

      i = i + 1


   elseif(digits == "0") then

    i = 0
    j = 0
    break

   else
    language = "de"
    session:execute("set","transfer_ringback=$${us-ring}");
    session:execute("bridge","sofia/coraltele.com/[email protected]");
    session:hangup();
    destroy(0);
  end

   until i == 3




elseif (digits == "4")  then


  repeat 


   digits = session:playAndGetDigits(1, 3, 3, 3000, "#", "/var/sipxdata/mediaserver/data/ivrscript/sampleLua/prompts/SPG_greet_long.wav","shout://translate.google.com/translate_tts?tl=en&q=This+option+is+not+valid", "\\d+");
  if (digits == "1")  then
    language = "de"
    session:execute("set","transfer_ringback=$${us-ring}");
    session:execute("bridge","sofia/coraltele.com/[email protected]");
    session:hangup();
    destroy(0);

  elseif (digits == "2")  then
    language = "de"
    session:execute("set","transfer_ringback=$${us-ring}");
    session:execute("bridge","sofia/coraltele.com/[email protected]");
    session:hangup();
    destroy(0);


  elseif (digits == "9") then

    i = i + 1


  elseif(digits == "0") then

    i = 0
    j = 0
    break

  else
    language = "de"
    session:execute("set","transfer_ringback=$${us-ring}");
    session:execute("bridge","sofia/coraltele.com/[email protected]");
    session:hangup();
    destroy(0);

  end

  until i == 3


elseif (digits == "5")  then

  repeat 


   digits = session:playAndGetDigits(1, 3, 3, 3000, "#", "/var/sipxdata/mediaserver/data/ivrscript/sampleLua/prompts/SPG_greet_long.wav","shout://translate.google.com/translate_tts?tl=en&q=This+option+is+not+valid", "\\d+");

  if (digits == "1")  then
    language = "de"
    session:execute("set","transfer_ringback=$${us-ring}");
    session:execute("bridge","sofia/coraltele.com/[email protected]");
    session:hangup();
    destroy(0);

  elseif (digits == "2")  then
     language = "de"
     session:execute("set","transfer_ringback=$${us-ring}");
     session:execute("bridge","sofia/coraltele.com/[email protected]");
     session:hangup();
     destroy(0);

  elseif (digits == "9") then

     i = i + 1


  elseif(digits == "0") then

    i = 0
    j = 0
    break

  else
     language = "de"
     session:execute("set","transfer_ringback=$${us-ring}");
     session:execute("bridge","sofia/coraltele.com/[email protected]");
     session:hangup();
     destroy(0);

  end

  until i == 3

elseif(digits == "0") then

     j = j + 1

else
    language = "de"
    session:execute("set","transfer_ringback=$${us-ring}");
    session:execute("bridge","sofia/coraltele.com/[email protected]");
    session:hangup();
    destroy(0);
end
until j == 2

end

Upvotes: 0

Related Questions