[Freeswitch-users] Executing multiple applications in parallel
Brian Wiese
brian.wiese.freeswitch at gmail.com
Sat Jan 26 06:46:08 MSK 2013
JP:
Give this a try:
===== Dialplan Extension =====
<extension name="Wait for Lua">
<condition field="destination_number" expression="^29000$">
<action application="pre_answer"/>
<action application="eval" data="${luarun(wait.lua ${uuid})}"/>
<action application="playback"
data="ivr/ivr-on_hold_indefinitely.wav"/> <!-- Obviously replace with
a sound file containing music or something... -->
<!-- If the Lua script fails or times out (the above sound file
played completely), do something so the user doesn't sit around
forever... -->
<action application="sleep" data="2000"/>
<action application="playback" data="misc/error.wav"/>
<action application="sleep" data="2000"/>
<action application="playback" data="voicemail/vm-goodbye.wav"/>
<action application="hangup"/>
</condition>
</extension>
==========
===== Lua Script (wait.lua) =====
api = freeswitch.API();
uuid = argv[1]; --The UUID of the call.
if uuid == nil then
freeswitch.consoleLog("crit","Fatal Error: A UUID was not passed to
the script!\n");
else
freeswitch.consoleLog("info","Working...\n");
--Do the task here that may take some time...
session = freeswitch.Session(uuid);
freeswitch.consoleLog("info","Transferring call!\n");
session:transfer("lua_done"); --Obviously set this to a dialplan extension...
end
==========
Using this method you can even make the dialplan as one extension (use
extension "29000step2" for session:transfer in the Lua script):
==== Dialplan Single Extension Example =====
<extension name="Wait for Lua">
<condition field="destination_number" expression="^29000(?:step2)?$"/>
<condition field="destination_number" expression="^29000$" break="on-true">
<action application="pre_answer"/>
<action application="eval" data="${luarun(wait.lua ${uuid})}"/>
<action application="playback"
data="ivr/ivr-on_hold_indefinitely.wav"/> <!-- Obviously replace with
a sound file containing music or something... -->
<!-- If the Lua script fails or times out (the above sound file
played completely), do something so the user doesn't sit around
forever... -->
<action application="sleep" data="2000"/>
<action application="playback" data="misc/error.wav"/>
<action application="sleep" data="2000"/>
<action application="playback" data="voicemail/vm-goodbye.wav"/>
<action application="sleep" data="500"/>
<action application="hangup"/>
</condition>
<condition field="destination_number" expression="^29000step2$">
<action application="answer"/>
<action application="sleep" data="500"/>
<action application="playback" data="ivr/ivr-yes_we_have_no_bananas.wav"/>
<action application="sleep" data="500"/>
<action application="hangup"/>
</condition>
</extension>
==========
~Brian
On Thu, Jan 24, 2013 at 7:34 PM, JP <jaykris at gmail.com> wrote:
> I want to do the following...
>
> 1. Play a long music file from a dialplan.
> 2. While the music is playing, I want to launch a Lua script to do some data
> dip.
> 3. Once the data is fetched and Lua exits, I want to interrupt the music and
> continue in the dialplan
>
> How do I do this. Any sample code or pointers would be greatly appreciated.
>
> Thanks
>
> _________________________________________________________________________
> Professional FreeSWITCH Consulting Services:
> consulting at freeswitch.org
> http://www.freeswitchsolutions.com
>
>
>
>
> Official FreeSWITCH Sites
> http://www.freeswitch.org
> http://wiki.freeswitch.org
> http://www.cluecon.com
>
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>
Join us at ClueCon 2011 Aug 9-11, 2011
More information about the FreeSWITCH-users
mailing list