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@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@freeswitch.org http://www.freeswitchsolutions.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
Official FreeSWITCH Sites http://www.freeswitch.org http://wiki.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org