Lua creating multiple session's
Hello List, Im trying to do dial multiple destination through lua, on a single incoming call. I do know that i could do a simple session:execute("bridge", "dst1,dst2,dst3") but I need to do it in individual session, for processing I need to do in a later version of the lua script. I loop through the destinations that needs to be called, creating a new session for each destination, and storing that in an array. Firstly, it seems as freeswitch.Session doesn't reply right away, but waits for early-media. Thats ok though, but makes dialling mobile devices a rather long wait. The problem is, that when I do the second freeswitch.Session, it seems to hold up further lua processing, until the last created call is answered. Is this how its supposed to work. Heres my current code: local legs = {} for key, dev in pairs(dstDevices) do freeswitch.consoleLog("info", "Lets call " .. dev.username .. " with tech " .. dev.devicetech .. "\n") if dev.devicetech == "1" then freeswitch.consoleLog("info", "calling " .. dev.username .. " on uasbc\n") legs[key] = freeswitch.Session("sofia/gateway/uasbc01/" .. dev.username); freeswitch.consoleLog("info", "called " .. dev.username .. " on uasbc\n") elseif dev.devicetech == "2" then freeswitch.consoleLog("info", "calling " .. dev.username .. " on ccsbc, mvno\n") legs[key] = freeswitch.Session("{origination_caller_id_name=+xxxxxxxx,origination_calle r_id_number=+xxxxxxxxx}sofia/gateway/ccsbc01/+xx" .. string.match(dev.username, "^mvno_(.+)")) freeswitch.consoleLog("info", "called " .. dev.username .. " on ccsbc, mvno\n") end End freeswitch.consoleLog("info", "Enter loop now\n") It doesn't reach the last consoleLog until the last call is answered. Venlig hilsen/kind regards Jon Leren Schøpzinsky
Yes the constructor is blocking until the session has media or is concluded to have failed to setup (whichever comes first) If you need to do things async you can either use ESL from a remote process. You can also write your app in C so you have more control and ability to do that type of thing. On Thu, May 23, 2013 at 6:36 AM, Jon Schøpzinsky <jos@firstcom.dk> wrote:
Hello List,
Im trying to do dial multiple destination through lua, on a single incoming call.
I do know that i could do a simple session:execute("bridge", "dst1,dst2,dst3") but I need to do it in individual session, for processing I need to do in a later version of the lua script.
I loop through the destinations that needs to be called, creating a new session for each destination, and storing that in an array. Firstly, it seems as freeswitch.Session doesn't reply right away, but waits for early-media. Thats ok though, but makes dialling mobile devices a rather long wait.
The problem is, that when I do the second freeswitch.Session, it seems to hold up further lua processing, until the last created call is answered. Is this how its supposed to work.
Heres my current code:
local legs = {}
for key, dev in pairs(dstDevices) do freeswitch.consoleLog("info", "Lets call " .. dev.username .. " with tech " .. dev.devicetech .. "\n") if dev.devicetech == "1" then freeswitch.consoleLog("info", "calling " .. dev.username .. " on uasbc\n") legs[key] = freeswitch.Session("sofia/gateway/uasbc01/" .. dev.username); freeswitch.consoleLog("info", "called " .. dev.username .. " on uasbc\n") elseif dev.devicetech == "2" then freeswitch.consoleLog("info", "calling " .. dev.username .. " on ccsbc, mvno\n") legs[key] = freeswitch.Session("{origination_caller_id_name=+xxxxxxxx,origination_calle r_id_number=+xxxxxxxxx}sofia/gateway/ccsbc01/+xx" .. string.match(dev.username, "^mvno_(.+)")) freeswitch.consoleLog("info", "called " .. dev.username .. " on ccsbc, mvno\n") end End
freeswitch.consoleLog("info", "Enter loop now\n")
It doesn't reach the last consoleLog until the last call is answered.
Venlig hilsen/kind regards
Jon Leren Schøpzinsky
_________________________________________________________________________ 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
-- Anthony Minessale II FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch FreeSWITCH Developer Conference sip:888@conference.freeswitch.org googletalk:conf+888@conference.freeswitch.org pstn:+19193869900
participants (2)
-
Anthony Minessale
-
Jon Schøpzinsky