Reputation: 19
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
Reputation: 19
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