[Freeswitch-users] Re4: Lua "two steps" bridging

Michael Collins msc at freeswitch.org
Wed Sep 14 01:27:09 MSD 2011


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 at 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 at 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 at eltc.ru>
>> Inviato il: 13 Set 2011 - 17:15
>> A: freeswitch-users at lists.freeswitch.org
>>
>>
>>
>> ? 13 Sep 2011 09:39:33 -0000
>> chrisbware at 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 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
>> >
>>
>> 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 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
>>
>>
>> -------------------------------------------------------------------------------
>> Valore legale alle tue mail
>> InterfreePEC - la tua Posta Elettronica Certificata
>> http://pec.interfree.it
>>
>> -------------------------------------------------------------------------------
>>
>>
>> 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
>>
>>
>
>
> FreeSWITCH-users mailing listFreeSWITCH-users at lists.freeswitch.orghttp://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-usershttp://www.freeswitch.org
>
>
>
>
> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20110913/21f62afb/attachment.html 


Join us at ClueCon 2011 Aug 9-11, 2011
More information about the FreeSWITCH-users mailing list