How are you calling this Lua script to begin with? What is the big picture, that is, what is the problem you're solving? Some context might help us give you a better answer. -MC On Tue, Sep 13, 2011 at 5:21 AM, <chrisbware@interfree.it> wrote:
Hi,
thank you for your help, but doesn't work. legA:ready() is true when the first session start and not when the call is answered. So legB is called at the same time.
Any other suggestion?
-----Messaggio originale----- Da: Sergey Scheglov <sid@eltc.ru> Inviato il: 13 Set 2011 - 17:15 A: freeswitch-users@lists.freeswitch.org
? 13 Sep 2011 09:39:33 -0000 chrisbware@interfree.it wrote:
Hi guys,
I've read anything on this argument on Wiki but I can't find a complete answer.
I need to bridge two calls in Lua, waiting the first to be answered. My basic script is:
local GwParams =
"origination_caller_id_number="..gateway..",sip_auth_username="..gateway..",sip_auth_password="..sip_passwd
local slegA =
"[ignore_early_media=false,"..GwParams.."]sofia/external/"..callee.."@"..sip_domain
local slegB =
"[ignore_early_media=true,"..GwParams.."]sofia/external/"..called.."@"..sip_domain
legA = freeswitch.Session(slegA); legB = freeswitch.Session(slegB); freeswitch.bridge(legA, legB);
It works but legA and legB are called at the same time. Using:
while (legA:answered()== false) do end;
between the two session do the job but called parties can't hear audio.
I promise to add a script on wiki if you help me ! :)
Thanks in advance.
-------------------------------------------------------------------------------
Valore legale alle tue mail InterfreePEC - la tua Posta Elettronica Certificata http://pec.interfree.it
-------------------------------------------------------------------------------
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
Try:
legA = freeswitch.Session(slegA); if (legA:ready()) then legB = freeswitch.Session(slegB, legA); freeswitch.bridge(legA, legB); end
----
Scheglov Sergey
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
------------------------------------------------------------------------------- Valore legale alle tue mail InterfreePEC - la tua Posta Elettronica Certificata http://pec.interfree.it
-------------------------------------------------------------------------------
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
Hi Michael, a PHP script connect to Event socket and launch "luarun call.lua <legA number> <legB number> <sip account number> Script call.lua, upload sip account password from a DB and then call A number and B number using the same SIP account, bridging them. What I'd like to do is: - place call to legB number only after legA has answered the call - detect hangupCause on both legs to check if something goes wrong - return SUCCESS or hangup cause to the PHP script Is it science fiction? With Asterisk isn't so hard to do and, since I'm in love with FS, please don't disappoint me :-) Chris B. Il 13/09/2011 18:44, Michael Collins ha scritto:
How are you calling this Lua script to begin with? What is the big picture, that is, what is the problem you're solving? Some context might help us give you a better answer.
-MC
On Tue, Sep 13, 2011 at 5:21 AM, <chrisbware@interfree.it <mailto:chrisbware@interfree.it>> wrote:
Hi,
thank you for your help, but doesn't work. legA:ready() is true when the first session start and not when the call is answered. So legB is called at the same time.
Any other suggestion?
-----Messaggio originale----- Da: Sergey Scheglov <sid@eltc.ru <mailto:sid@eltc.ru>> Inviato il: 13 Set 2011 - 17:15 A: freeswitch-users@lists.freeswitch.org <mailto:freeswitch-users@lists.freeswitch.org>
? 13 Sep 2011 09:39:33 -0000 chrisbware@interfree.it <mailto:chrisbware@interfree.it> wrote:
> > Hi guys, > > I've read anything on this argument on Wiki but I can't find a > complete answer. > > I need to bridge two calls in Lua, waiting the first to be answered. > My basic script is: > > local GwParams = > "origination_caller_id_number="..gateway..",sip_auth_username="..gateway..",sip_auth_password="..sip_passwd > local slegA = > "[ignore_early_media=false,"..GwParams.."]sofia/external/"..callee.."@"..sip_domain > local slegB = > "[ignore_early_media=true,"..GwParams.."]sofia/external/"..called.."@"..sip_domain > > legA = freeswitch.Session(slegA); > legB = freeswitch.Session(slegB); > freeswitch.bridge(legA, legB); > > > It works but legA and legB are called at the same time. Using: > > while (legA:answered()== false) do end; > > between the two session do the job but called parties can't hear > audio. > > I promise to add a script on wiki if you help me ! :) > > Thanks in advance. > > > ------------------------------------------------------------------------------- > Valore legale alle tue mail > InterfreePEC - la tua Posta Elettronica Certificata > http://pec.interfree.it > ------------------------------------------------------------------------------- > > > > FreeSWITCH-users mailing list > FreeSWITCH-users@lists.freeswitch.org <mailto: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 >
Try:
legA = freeswitch.Session(slegA); if (legA:ready()) then legB = freeswitch.Session(slegB, legA); freeswitch.bridge(legA, legB); end
----
Scheglov Sergey
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org <mailto: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
------------------------------------------------------------------------------- Valore legale alle tue mail InterfreePEC - la tua Posta Elettronica Certificata http://pec.interfree.it -------------------------------------------------------------------------------
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org <mailto: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
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
Chris, We're glad you like FS - we like it as well. What you're trying to do is completely possible, but the way you're trying to do it is probably not the best choice. Instead of a local Lua script to control both calls, you are better off using either one of two options: event socket entirely or event socket + dialplan. It depends on the level of control that you need. If you want ultimate control then just use ESL right from PHP (or whichever scripting language you are comfortable with) and create your call legs, watching for the requisite CHANNEL_XXX events. (See http://wiki.freeswitch.org/wiki/Event_List for a nice list.) I suppose you could do it all in Lua but you'd have to keep polling legA channel for the endpoint_disposition variable in a while loop and then break out on various conditions. I'm not at all a fan of that method. With the event socket you listen for the events that are of interest to you and then act on them. Very elegant. -MC On Tue, Sep 13, 2011 at 1:59 PM, Chrisbware <chrisbware@interfree.it> wrote:
** Hi Michael,
a PHP script connect to Event socket and launch "luarun call.lua <legA number> <legB number> <sip account number>
Script call.lua, upload sip account password from a DB and then call A number and B number using the same SIP account, bridging them. What I'd like to do is:
- place call to legB number only after legA has answered the call - detect hangupCause on both legs to check if something goes wrong - return SUCCESS or hangup cause to the PHP script
Is it science fiction? With Asterisk isn't so hard to do and, since I'm in love with FS, please don't disappoint me :-)
Chris B.
Il 13/09/2011 18:44, Michael Collins ha scritto:
How are you calling this Lua script to begin with? What is the big picture, that is, what is the problem you're solving? Some context might help us give you a better answer.
-MC
On Tue, Sep 13, 2011 at 5:21 AM, <chrisbware@interfree.it> wrote:
Hi,
thank you for your help, but doesn't work. legA:ready() is true when the first session start and not when the call is answered. So legB is called at the same time.
Any other suggestion?
-----Messaggio originale----- Da: Sergey Scheglov <sid@eltc.ru> Inviato il: 13 Set 2011 - 17:15 A: freeswitch-users@lists.freeswitch.org
? 13 Sep 2011 09:39:33 -0000 chrisbware@interfree.it wrote:
Hi guys,
I've read anything on this argument on Wiki but I can't find a complete answer.
I need to bridge two calls in Lua, waiting the first to be answered. My basic script is:
local GwParams =
"origination_caller_id_number="..gateway..",sip_auth_username="..gateway..",sip_auth_password="..sip_passwd
local slegA =
"[ignore_early_media=false,"..GwParams.."]sofia/external/"..callee.."@"..sip_domain
local slegB =
"[ignore_early_media=true,"..GwParams.."]sofia/external/"..called.."@"..sip_domain
legA = freeswitch.Session(slegA); legB = freeswitch.Session(slegB); freeswitch.bridge(legA, legB);
It works but legA and legB are called at the same time. Using:
while (legA:answered()== false) do end;
between the two session do the job but called parties can't hear audio.
I promise to add a script on wiki if you help me ! :)
Thanks in advance.
-------------------------------------------------------------------------------
Valore legale alle tue mail InterfreePEC - la tua Posta Elettronica Certificata http://pec.interfree.it
-------------------------------------------------------------------------------
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
Try:
legA = freeswitch.Session(slegA); if (legA:ready()) then legB = freeswitch.Session(slegB, legA); freeswitch.bridge(legA, legB); end
----
Scheglov Sergey
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
------------------------------------------------------------------------------- Valore legale alle tue mail InterfreePEC - la tua Posta Elettronica Certificata http://pec.interfree.it
-------------------------------------------------------------------------------
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
FreeSWITCH-users mailing listFreeSWITCH-users@lists.freeswitch.orghttp://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-usershttp://www.frees...
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
Thank you for your answer: I'll follow your advice. Anyway, IMHO, Lua must be able to manage situations like this. Languages strong integration is a plus of FS that helps programmers to invent new services. Telling them they still have to play with events sounds a bit "old school". Again: it's only my opinon. Keep up the good work! Il 13/09/2011 23:27, Michael Collins ha scritto:
Chris,
We're glad you like FS - we like it as well.
What you're trying to do is completely possible, but the way you're trying to do it is probably not the best choice. Instead of a local Lua script to control both calls, you are better off using either one of two options: event socket entirely or event socket + dialplan. It depends on the level of control that you need. If you want ultimate control then just use ESL right from PHP (or whichever scripting language you are comfortable with) and create your call legs, watching for the requisite CHANNEL_XXX events. (See http://wiki.freeswitch.org/wiki/Event_List for a nice list.)
I suppose you could do it all in Lua but you'd have to keep polling legA channel for the endpoint_disposition variable in a while loop and then break out on various conditions. I'm not at all a fan of that method. With the event socket you listen for the events that are of interest to you and then act on them. Very elegant.
-MC
On Tue, Sep 13, 2011 at 1:59 PM, Chrisbware <chrisbware@interfree.it <mailto:chrisbware@interfree.it>> wrote:
Hi Michael,
a PHP script connect to Event socket and launch "luarun call.lua <legA number> <legB number> <sip account number>
Script call.lua, upload sip account password from a DB and then call A number and B number using the same SIP account, bridging them. What I'd like to do is:
- place call to legB number only after legA has answered the call - detect hangupCause on both legs to check if something goes wrong - return SUCCESS or hangup cause to the PHP script
Is it science fiction? With Asterisk isn't so hard to do and, since I'm in love with FS, please don't disappoint me :-)
Chris B.
Il 13/09/2011 18:44, Michael Collins ha scritto:
How are you calling this Lua script to begin with? What is the big picture, that is, what is the problem you're solving? Some context might help us give you a better answer.
-MC
On Tue, Sep 13, 2011 at 5:21 AM, <chrisbware@interfree.it <mailto:chrisbware@interfree.it>> wrote:
Hi,
thank you for your help, but doesn't work. legA:ready() is true when the first session start and not when the call is answered. So legB is called at the same time.
Any other suggestion?
-----Messaggio originale----- Da: Sergey Scheglov <sid@eltc.ru <mailto:sid@eltc.ru>> Inviato il: 13 Set 2011 - 17:15 A: freeswitch-users@lists.freeswitch.org <mailto:freeswitch-users@lists.freeswitch.org>
? 13 Sep 2011 09:39:33 -0000 chrisbware@interfree.it <mailto:chrisbware@interfree.it> wrote:
> > Hi guys, > > I've read anything on this argument on Wiki but I can't find a > complete answer. > > I need to bridge two calls in Lua, waiting the first to be answered. > My basic script is: > > local GwParams = > "origination_caller_id_number="..gateway..",sip_auth_username="..gateway..",sip_auth_password="..sip_passwd > local slegA = > "[ignore_early_media=false,"..GwParams.."]sofia/external/"..callee.."@"..sip_domain > local slegB = > "[ignore_early_media=true,"..GwParams.."]sofia/external/"..called.."@"..sip_domain > > legA = freeswitch.Session(slegA); > legB = freeswitch.Session(slegB); > freeswitch.bridge(legA, legB); > > > It works but legA and legB are called at the same time. Using: > > while (legA:answered()== false) do end; > > between the two session do the job but called parties can't hear > audio. > > I promise to add a script on wiki if you help me ! :) > > Thanks in advance. > > > ------------------------------------------------------------------------------- > Valore legale alle tue mail > InterfreePEC - la tua Posta Elettronica Certificata > http://pec.interfree.it > ------------------------------------------------------------------------------- > > > > FreeSWITCH-users mailing list > FreeSWITCH-users@lists.freeswitch.org <mailto: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 >
Try:
legA = freeswitch.Session(slegA); if (legA:ready()) then legB = freeswitch.Session(slegB, legA); freeswitch.bridge(legA, legB); end
----
Scheglov Sergey
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org <mailto: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
------------------------------------------------------------------------------- Valore legale alle tue mail InterfreePEC - la tua Posta Elettronica Certificata http://pec.interfree.it -------------------------------------------------------------------------------
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org <mailto: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
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org <mailto: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
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org <mailto: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
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
Well, I didn't say you *couldn't* do it, just that it isn't the best option. For posterity's sake here is a sample of a Lua script that does basically what you want. -- -- cc.lua -- -- call control lua script - can it be done? -- dialA = "sofia/gateway/fs1/9903" dialB = "user/1001" legA = freeswitch.Session(dialA) dispoA = "None" while(legA:ready() and dispoA ~= "ANSWER") do dispoA = legA:getVariable("endpoint_disposition") freeswitch.consoleLog("INFO","Leg A disposition is '" .. dispoA .. "'\n") os.execute("sleep 1") end -- legA while if( not legA:ready() ) then -- oops, lost leg A handle this case freeswitch.consoleLog("NOTICE","It appears that " .. dialA .. " disconnected...\n") else legB = freeswitch.Session(dialB) dispoB = "None" while(legA:ready() and legB:ready() and dispoB ~= "ANSWER") do if ( not legA:ready() ) then -- oops, leg A hung up or got disconnected, handle this case freeswitch.consoleLog("NOTICE","It appears that " .. dialA .. " disconnected...\n") else os.execute("sleep 1") dispoB = legB:getVariable("endpoint_disposition") freeswitch.consoleLog("NOTICE","Leg B disposition is '" .. dispoB .. "'\n") end -- inner if legA ready end -- legB while if ( legA:ready() and legB:ready() ) then freeswitch.bridge(legA,legB) else -- oops, one of the above legs hung up, handle this case freeswitch.consoleLog("NOTICE","It appears that " .. dialA .. " or " .. dialB .. " disconnected...\n") end end -- outter if legA ready -MC On Tue, Sep 13, 2011 at 2:52 PM, Chrisbware <chrisbware@interfree.it> wrote:
** Thank you for your answer: I'll follow your advice.
Anyway, IMHO, Lua must be able to manage situations like this. Languages strong integration is a plus of FS that helps programmers to invent new services. Telling them they still have to play with events sounds a bit "old school". Again: it's only my opinon. Keep up the good work!
Il 13/09/2011 23:27, Michael Collins ha scritto:
Chris,
We're glad you like FS - we like it as well.
What you're trying to do is completely possible, but the way you're trying to do it is probably not the best choice. Instead of a local Lua script to control both calls, you are better off using either one of two options: event socket entirely or event socket + dialplan. It depends on the level of control that you need. If you want ultimate control then just use ESL right from PHP (or whichever scripting language you are comfortable with) and create your call legs, watching for the requisite CHANNEL_XXX events. (See http://wiki.freeswitch.org/wiki/Event_List for a nice list.)
I suppose you could do it all in Lua but you'd have to keep polling legA channel for the endpoint_disposition variable in a while loop and then break out on various conditions. I'm not at all a fan of that method. With the event socket you listen for the events that are of interest to you and then act on them. Very elegant.
-MC
On Tue, Sep 13, 2011 at 1:59 PM, Chrisbware <chrisbware@interfree.it>wrote:
Hi Michael,
a PHP script connect to Event socket and launch "luarun call.lua <legA number> <legB number> <sip account number>
Script call.lua, upload sip account password from a DB and then call A number and B number using the same SIP account, bridging them. What I'd like to do is:
- place call to legB number only after legA has answered the call - detect hangupCause on both legs to check if something goes wrong - return SUCCESS or hangup cause to the PHP script
Is it science fiction? With Asterisk isn't so hard to do and, since I'm in love with FS, please don't disappoint me :-)
Chris B.
Il 13/09/2011 18:44, Michael Collins ha scritto:
How are you calling this Lua script to begin with? What is the big picture, that is, what is the problem you're solving? Some context might help us give you a better answer.
-MC
On Tue, Sep 13, 2011 at 5:21 AM, <chrisbware@interfree.it> wrote:
Hi,
thank you for your help, but doesn't work. legA:ready() is true when the first session start and not when the call is answered. So legB is called at the same time.
Any other suggestion?
-----Messaggio originale----- Da: Sergey Scheglov <sid@eltc.ru> Inviato il: 13 Set 2011 - 17:15 A: freeswitch-users@lists.freeswitch.org
? 13 Sep 2011 09:39:33 -0000 chrisbware@interfree.it wrote:
Hi guys,
I've read anything on this argument on Wiki but I can't find a complete answer.
I need to bridge two calls in Lua, waiting the first to be answered. My basic script is:
local GwParams =
"origination_caller_id_number="..gateway..",sip_auth_username="..gateway..",sip_auth_password="..sip_passwd
local slegA =
"[ignore_early_media=false,"..GwParams.."]sofia/external/"..callee.."@"..sip_domain
local slegB =
"[ignore_early_media=true,"..GwParams.."]sofia/external/"..called.."@"..sip_domain
legA = freeswitch.Session(slegA); legB = freeswitch.Session(slegB); freeswitch.bridge(legA, legB);
It works but legA and legB are called at the same time. Using:
while (legA:answered()== false) do end;
between the two session do the job but called parties can't hear audio.
I promise to add a script on wiki if you help me ! :)
Thanks in advance.
-------------------------------------------------------------------------------
Valore legale alle tue mail InterfreePEC - la tua Posta Elettronica Certificata http://pec.interfree.it
-------------------------------------------------------------------------------
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
Try:
legA = freeswitch.Session(slegA); if (legA:ready()) then legB = freeswitch.Session(slegB, legA); freeswitch.bridge(legA, legB); end
----
Scheglov Sergey
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
------------------------------------------------------------------------------- Valore legale alle tue mail InterfreePEC - la tua Posta Elettronica Certificata http://pec.interfree.it
-------------------------------------------------------------------------------
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
FreeSWITCH-users mailing listFreeSWITCH-users@lists.freeswitch.orghttp://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-usershttp://www.frees...
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
FreeSWITCH-users mailing listFreeSWITCH-users@lists.freeswitch.orghttp://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-usershttp://www.frees...
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
В 13 Sep 2011 12:21:38 -0000 chrisbware@interfree.it wrote:
Hi,
thank you for your help, but doesn't work. legA:ready() is true when the first session start and not when the call is answered. So legB is called at the same time.
Any other suggestion?
-----Messaggio originale----- Da: Sergey Scheglov <sid@eltc.ru> Inviato il: 13 Set 2011 - 17:15 A: freeswitch-users@lists.freeswitch.org
? 13 Sep 2011 09:39:33 -0000 chrisbware@interfree.it wrote:
Hi guys,
I've read anything on this argument on Wiki but I can't find a complete answer.
I need to bridge two calls in Lua, waiting the first to be answered. My basic script is:
local GwParams = "origination_caller_id_number="..gateway..",sip_auth_username="..gateway..",sip_auth_password="..sip_passwd local slegA = "[ignore_early_media=false,"..GwParams.."]sofia/external/"..callee.."@"..sip_domain local slegB = "[ignore_early_media=true,"..GwParams.."]sofia/external/"..called.."@"..sip_domain
legA = freeswitch.Session(slegA); legB = freeswitch.Session(slegB); freeswitch.bridge(legA, legB);
It works but legA and legB are called at the same time. Using:
while (legA:answered()== false) do end;
between the two session do the job but called parties can't hear audio.
I promise to add a script on wiki if you help me ! :)
Thanks in advance.
------------------------------------------------------------------------------- Valore legale alle tue mail InterfreePEC - la tua Posta Elettronica Certificata http://pec.interfree.it -------------------------------------------------------------------------------
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
Try:
legA = freeswitch.Session(slegA); if (legA:ready()) then legB = freeswitch.Session(slegB, legA); freeswitch.bridge(legA, legB); end
----
Scheglov Sergey
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
------------------------------------------------------------------------------- Valore legale alle tue mail InterfreePEC - la tua Posta Elettronica Certificata http://pec.interfree.it -------------------------------------------------------------------------------
Just checked this script from cli: luarun test.lua -- local slegA="user/1000" local slegB="user/1001" legA = freeswitch.Session(slegA); if (legA:ready()) then legB = freeswitch.Session(slegB, legA); freeswitch.bridge(legA, legB); end Leg B is created after the leg A answered. Also, look this example http://wiki.freeswitch.org/wiki/Bridging_two_calls_with_retry -- Scheglov Sergey
participants (4)
-
Chrisbware
-
chrisbware@interfree.it
-
Michael Collins
-
Sergey Scheglov