Skip to main content

Lua Welcome IVR example

About​

Lua script example for IVR, in this example we will to prompt user for digit and transfer to the chosen destination.

This IVR is designed to be easy to use and easy to understand.

Lua is a great easy, readable and embedded scripting language.

Prerequisites​

Configure Dialplan​

Configure extensions in your dialplan to call the script welcome.lua

welcome.xml (freeswitch/conf/dialplan/default/welcome.xml)

<include>
<extension name="welcome_ivr">
<condition field="destination_number" expression="^2910$">
<action application="lua" data="welcome.lua"/>
</condition>
</extension>
</include>

Lua script​

welcome.lua (freeswitch/scripts/welcome.lua)

session:answer();
while (session:ready() == true) do
session:setAutoHangup(false);
session:set_tts_params("flite", "kal");
session:speak("Welcome. Welcome to the VoIp World!. this is a Blind Users Programing Community. powered by Freeswitch, the free / ultimate PBX. thank to toni!");
session:sleep(100);
session:speak("please select an Action.");
session:sleep(100);
session:speak("to call the conference, press 1");
session:sleep(100);
session:speak("to call Freeswitch IVR, press 2");
session:sleep(100);
session:speak("to call Voice Mail, press 3");
session:sleep(100);
session:speak("for Music on hold, press 4");
session:sleep(100);
session:speak("to call me, press 0");
session:sleep(3000);
digits = session:getDigits(1, "", 3000);
if (digits == "1") then
session:execute("transfer","9888");
end
if (digits == "2") then
session:execute("transfer","5000");
end
if (digits == "3") then
session:execute("transfer","4000");
end
if (digits == "4") then
session:execute("transfer","9999");
end
if (digits == "0") then
session:execute("transfer","voipaware@sip.voipuser.org");
end
end

NOTES​

You will need to disable enum by changing 99999XX.xml to 99999XX.xml.noload​

Do not load both mod_flite and mod_cepstral at the same time.​