[Freeswitch-users] ESL Outbound: how to bridge media?

Anthony Minessale anthony.minessale at gmail.com
Wed Feb 16 01:32:54 MSK 2011


Did you read the little chart i put in my last email?

i'll be more specific:

1) leg A who has a_uuid has called inbound and has been put in park app.

from ESL:
generate uuid (we'll  call  it b_uuid for clarity)
bgapi originate {origination_uuid=b_uuid}soifa/internal/bleg at box.com park inline

Wait for park event from b_uuid (do not touch it any sooner)

now either do:

uuid_bridge a_uuid b_uuid

or:

uuid_transfer a_uuid intercept:b_uuid inline

or:

sendmsg to a_uuid telling it to execute intercept app on b_uuid





On Tue, Feb 15, 2011 at 3:46 PM, Stephen Wilde <wstephen80 at gmail.com> wrote:
> When legB answers there is also no audio.
> If I do the bridge after legB answers the call (instead of when
> "origination" has ended), then the audio is ok and the legA can ear the legB
> also if legA is in "pre_answer" state.
> Now I have found one problem: the "BACKGROUND_JOB" event related to "bgapi
> uuid_bridge ..." contains: "-ERR Invalid uuid" but both uuid's are correct
> so probably is due to the state of channels.
> With the same uuid's, the uuid_bridge after the legB answer works fine.
> Stephen
>
> On Tue, Feb 15, 2011 at 9:53 PM, Anthony Minessale
> <anthony.minessale at gmail.com> wrote:
>>
>> I meant when you have no audio, and you wait until leg b answers. what
>> happens then?
>>
>>
>> If you have leg A inbound and you send it to park.
>> then you originate outbound to b leg to park
>> wait for park event on b leg
>> then you uuid_bridge them
>>
>> also you can sendmsg with application = intercept app_arg = uuid of B
>>
>>
>> On Tue, Feb 15, 2011 at 12:08 PM, Stephen Wilde <wstephen80 at gmail.com>
>> wrote:
>> > LegA is an incoming call, legB is an outgoing call.
>> > The dialplan is:
>> >     <extension name="myhandler">
>> >       <condition field="destination_number" expression="^xxxx$">
>> >         <action application="set"
>> > data="dialstring=sofia/external/yyyy at zzzz
>> > />
>> >         <action application="socket" data="127.0.0.1:8084 async full"/>
>> >       </condition>
>> >     </extension>
>> > When the legB answer the call, I receive the "CHANNEL_ANSWER" event on
>> > legB
>> > and I send the "answer" to legA (I have already done a uuid_bridge when
>> > originate has ended).
>> > The audio continue to be mute in both direction.
>> > The "uuid_bridge" works only if I call it after received
>> > "CHANNEL_ANSWER" in
>> > legB or after I send "answer" to legA.
>> > It's not enough to do a "pre_answer".
>> > Stephen
>> >
>> > On Tue, Feb 15, 2011 at 6:15 PM, Anthony Minessale
>> > <anthony.minessale at gmail.com> wrote:
>> >>
>> >> What happens once they answer?
>> >>
>> >> This is not one of those attempts to speed up click to call by calling
>> >> them both at once is it?
>> >>
>> >>
>> >> On Tue, Feb 15, 2011 at 10:29 AM, Stephen Wilde <wstephen80 at gmail.com>
>> >> wrote:
>> >> > Ok, I have tried with "pre_answer" to the inbound channel (that will
>> >> > be
>> >> > the
>> >> > first uuid in the "uuid_bridge") but with same result: no audio from
>> >> > outbound (in progressing media state) to inbound (in progressing
>> >> > media
>> >> > state
>> >> > due to my pre_answer).
>> >> > Here the sequence of events:
>> >> > [ERROR] newacme.cpp:193 mycallback() Connected!
>> >> > [ERROR] newacme.cpp:113 Originate() bgapi originate
>> >> >
>> >> >
>> >> > [origination_uuid=61e00b94-f4d3-4ac4-bcf5-8fba02a18de6]sofia/external/xxxx at yyyy
>> >> > &park()
>> >> > [ERROR] newacme.cpp:115 Originate() Job-ID:
>> >> > eee79d97-dbf8-49d4-9bf9-578ef75f73ea
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_UUID]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_OUTGOING]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_ORIGINATE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_STATE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_CALLSTATE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_STATE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_STATE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CALL_UPDATE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CODEC]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CODEC]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_CALLSTATE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_PROGRESS_MEDIA]
>> >> > [ERROR] newacme.cpp:250 mycallback() Executing 'pre_answer' on
>> >> > INBOUND
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_STATE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_EXECUTE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_PARK]
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_EXECUTE]
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_CALLSTATE]
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_PROGRESS_MEDIA]
>> >> > [ERROR] newacme.cpp:127 BridgeTo() bgapi uuid_bridge
>> >> > 902e2cd4-10ee-4938-97cf-c9eb2ac969f8
>> >> > 61e00b94-f4d3-4ac4-bcf5-8fba02a18de6
>> >> > [ERROR] newacme.cpp:129 BridgeTo() Job-ID:
>> >> > 7a66a5c7-721c-47f4-aff2-373ec20123c8
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_EXECUTE_COMPLETE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CALL_UPDATE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_CALLSTATE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_ANSWER]
>> >> > [ERROR] newacme.cpp:255 mycallback() Executing 'answer' on INBOUND
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_EXECUTE]
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_CALLSTATE]
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_ANSWER]
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_EXECUTE_COMPLETE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_CALLSTATE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_HANGUP]
>> >> > [ERROR] newacme.cpp:260 mycallback() Executing 'hangup' on INBOUND
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_EXECUTE]
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_CALLSTATE]
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_HANGUP]
>> >> > [ERROR] newacme.cpp:272 mycallback() Executing 'hangup' on OUTBOUND
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_UNPARK]
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_EXECUTE_COMPLETE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_EXECUTE_COMPLETE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_STATE]
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_UNPARK]
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_EXECUTE_COMPLETE]
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_STATE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_STATE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_HANGUP_COMPLETE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_DESTROY]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_CALLSTATE]
>> >> > [ERROR] newacme.cpp:246 mycallback() Got an event: [OUTBOUND] -
>> >> > [CHANNEL_STATE]
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_STATE]
>> >> > [ERROR] newacme.cpp:268 mycallback() Got an event: [INBOUND] -
>> >> > [CHANNEL_HANGUP_COMPLETE]
>> >> > [ERROR] newacme.cpp:290 mycallback() End.
>> >> >
>> >> >
>> >> > On Tue, Feb 15, 2011 at 5:09 PM, Anthony Minessale
>> >> > <anthony.minessale at gmail.com> wrote:
>> >> >>
>> >> >> Well you can't bridge 2 unanswered channels together.
>> >> >> You need at least one of them to have been pre_answered and that
>> >> >> should be the first uuid in the list.
>> >> >>
>> >> >>
>> >> >> On Tue, Feb 15, 2011 at 3:48 AM, Stephen Wilde
>> >> >> <wstephen80 at gmail.com>
>> >> >> wrote:
>> >> >> > I have tried to wait originate completition but the "uuid_bridge"
>> >> >> > doesn't
>> >> >> > works also in this case.
>> >> >> > It seems that works only when at least one leg is answered so it's
>> >> >> > not
>> >> >> > possible to do the "uuid_bridge" during progressing phase also if
>> >> >> > the
>> >> >> > originate has ended (I don't set the ignore_early_media).
>> >> >> > My application is this: http://pastebin.freeswitch.org/15387
>> >> >> > The application:
>> >> >> > 1. receive a call with an "inbound_uuid"
>> >> >> > 2. create a new "outbound_uuid"
>> >> >> > 3. do a "bgapi originate" using the new "outbound_uuid"
>> >> >> > 4. when the called phone is ringing, receive a
>> >> >> > "CHANNEL_PROGRESS_MEDIA"
>> >> >> > event on "outbound_uuid" and do a "pre_answer" on "inbound_uuid"
>> >> >> > 5. receive a "CHANNEL_PROGRESS_MEDIA" on "inbound_uuid"
>> >> >> > 6. receive a job completition event related to the "originate" so
>> >> >> > issue
>> >> >> > an
>> >> >> > "uuid_bridge inbound_uuid outbound_uuid"
>> >> >> > 7. when a job completition event related to "uuid_bridge" is
>> >> >> > received,
>> >> >> > no
>> >> >> > audio flow from outbound to inbound channel
>> >> >> > 8. when outbound answer the call, the application answer also the
>> >> >> > inbound
>> >> >> > call but no audio flow in both directions
>> >> >> > If I do the uuid_bridge after legB answer, then all is ok
>> >> >> > (obviously
>> >> >> > with no
>> >> >> > audio during progressing phase).
>> >> >> >
>> >> >> > The log of my application is:
>> >> >> > [ERROR] newacme.cpp:46 mycallback() Connected!
>> >> >> > [ERROR] newacme.cpp:65 mycallback() Inbound uuid =
>> >> >> > 8b2c39db-1ad9-489c-b72f-a92d4087bf99
>> >> >> > [ERROR] newacme.cpp:68 mycallback() create_uuid:
>> >> >> > 394167aa-2811-4fcd-95c9-85576bdd9a7a
>> >> >> > [ERROR] newacme.cpp:89 mycallback() bgapi originate
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > [origination_uuid=394167aa-2811-4fcd-95c9-85576bdd9a7a]sofia/external/xxxx at yyyy
>> >> >> > &park()
>> >> >> > [ERROR] newacme.cpp:91 mycallback() Job-ID:
>> >> >> > 1c654ac2-c22d-418f-9fad-bb6b6b35aeff
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_UUID]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_OUTGOING]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_ORIGINATE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_STATE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_CALLSTATE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_STATE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_STATE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CALL_UPDATE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CODEC]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CODEC]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_CALLSTATE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_PROGRESS_MEDIA]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_STATE]
>> >> >> > [ERROR] newacme.cpp:112 mycallback() Got an event:
>> >> >> > [BACKGROUND_JOB] -
>> >> >> > [1c654ac2-c22d-418f-9fad-bb6b6b35aeff]
>> >> >> > [ERROR] newacme.cpp:119 mycallback() bgapi uuid_bridge
>> >> >> > 8b2c39db-1ad9-489c-b72f-a92d4087bf99
>> >> >> > 394167aa-2811-4fcd-95c9-85576bdd9a7a
>> >> >> > [ERROR] newacme.cpp:123 mycallback() Job-ID:
>> >> >> > 0d43cffe-fdc6-4a13-97e6-aeee199c45d5
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_EXECUTE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_PARK]
>> >> >> > [ERROR] newacme.cpp:112 mycallback() Got an event:
>> >> >> > [BACKGROUND_JOB] -
>> >> >> > [0d43cffe-fdc6-4a13-97e6-aeee199c45d5]
>> >> >> > [ERROR] newacme.cpp:167 mycallback() Got an event: [INBOUND] -
>> >> >> > [CHANNEL_EXECUTE]
>> >> >> > [ERROR] newacme.cpp:167 mycallback() Got an event: [INBOUND] -
>> >> >> > [CHANNEL_CALLSTATE]
>> >> >> > [ERROR] newacme.cpp:167 mycallback() Got an event: [INBOUND] -
>> >> >> > [CHANNEL_PROGRESS_MEDIA]
>> >> >> > [ERROR] newacme.cpp:167 mycallback() Got an event: [INBOUND] -
>> >> >> > [CHANNEL_EXECUTE_COMPLETE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CALL_UPDATE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_CALLSTATE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_ANSWER]
>> >> >> > [ERROR] newacme.cpp:167 mycallback() Got an event: [INBOUND] -
>> >> >> > [CHANNEL_EXECUTE]
>> >> >> > [ERROR] newacme.cpp:167 mycallback() Got an event: [INBOUND] -
>> >> >> > [CHANNEL_CALLSTATE]
>> >> >> > [ERROR] newacme.cpp:167 mycallback() Got an event: [INBOUND] -
>> >> >> > [CHANNEL_ANSWER]
>> >> >> > [ERROR] newacme.cpp:167 mycallback() Got an event: [INBOUND] -
>> >> >> > [CHANNEL_EXECUTE_COMPLETE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_CALLSTATE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_HANGUP]
>> >> >> > [ERROR] newacme.cpp:160 mycallback() hangup
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_UNPARK]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_EXECUTE_COMPLETE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_STATE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_STATE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_HANGUP_COMPLETE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_DESTROY]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_CALLSTATE]
>> >> >> > [ERROR] newacme.cpp:138 mycallback() Got an event: [OUTBOUND] -
>> >> >> > [CHANNEL_STATE]
>> >> >> > [ERROR] newacme.cpp:167 mycallback() Got an event: [INBOUND] -
>> >> >> > [CHANNEL_EXECUTE]
>> >> >> > [ERROR] newacme.cpp:167 mycallback() Got an event: [INBOUND] -
>> >> >> > [CHANNEL_CALLSTATE]
>> >> >> > [ERROR] newacme.cpp:167 mycallback() Got an event: [INBOUND] -
>> >> >> > [CHANNEL_HANGUP]
>> >> >> > [ERROR] newacme.cpp:171 mycallback() hangup
>> >> >> > [ERROR] newacme.cpp:167 mycallback() Got an event: [INBOUND] -
>> >> >> > [CHANNEL_EXECUTE_COMPLETE]
>> >> >> > [ERROR] newacme.cpp:167 mycallback() Got an event: [INBOUND] -
>> >> >> > [CHANNEL_UNPARK]
>> >> >> > [ERROR] newacme.cpp:167 mycallback() Got an event: [INBOUND] -
>> >> >> > [CHANNEL_EXECUTE_COMPLETE]
>> >> >> > [ERROR] newacme.cpp:167 mycallback() Got an event: [INBOUND] -
>> >> >> > [CHANNEL_STATE]
>> >> >> > [ERROR] newacme.cpp:184 mycallback() End.
>> >> >> >
>> >> >> > Stephen
>> >> >> >
>> >> >> > On Tue, Feb 15, 2011 at 1:14 AM, Anthony Minessale
>> >> >> > <anthony.minessale at gmail.com> wrote:
>> >> >> >>
>> >> >> >> if you do originate without ignore_early_media=true set it will
>> >> >> >> end
>> >> >> >> the soonest possible where it's suitable for a bridge.
>> >> >> >> so that is the best bet to wait for originate to end.
>> >> >> >>
>> >> >> >>
>> >> >> >> On Mon, Feb 14, 2011 at 6:11 PM, Stephen Wilde
>> >> >> >> <wstephen80 at gmail.com>
>> >> >> >> wrote:
>> >> >> >> > Ok, now I'm doing bridge when I receive "CHANNEL_ANSWER" or
>> >> >> >> > "CHANNEL_PROGRESS_MEDIA" on outbound leg but you say that I
>> >> >> >> > have
>> >> >> >> > wait
>> >> >> >> > that
>> >> >> >> > "originate has ended": you mean that I have to wait for
>> >> >> >> > "BACKGROUND_JOB"
>> >> >> >> > event related to my "bgapi originate ... &park"?
>> >> >> >> > I'm already doing "uuid_bridge <inbound_uuid> <outbound_uuid>".
>> >> >> >> > I'll try also with intercept and inline originate. Thank you!
>> >> >> >> > Stephen
>> >> >> >> >
>> >> >> >> > On Tue, Feb 15, 2011 at 12:53 AM, Anthony Minessale
>> >> >> >> > <anthony.minessale at gmail.com> wrote:
>> >> >> >> >>
>> >> >> >> >> you need to make sure originate has ended on the outbound leg
>> >> >> >> >> before
>> >> >> >> >> you use it in a bridge etc.
>> >> >> >> >> you also need to supply the inbound leg first in uuid_bridge
>> >> >> >> >> if
>> >> >> >> >> that
>> >> >> >> >> is something you want to do.
>> >> >> >> >>
>> >> >> >> >> Easier would be to originate the B leg to park inline and tell
>> >> >> >> >> A
>> >> >> >> >> leg
>> >> >> >> >> to execute intercept on the B leg uuid.
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >> On Mon, Feb 14, 2011 at 5:44 PM, Stephen Wilde
>> >> >> >> >> <wstephen80 at gmail.com>
>> >> >> >> >> wrote:
>> >> >> >> >> > Sorry but I have missed something.
>> >> >> >> >> > I know that I can solve this problem directly in dialplan
>> >> >> >> >> > with
>> >> >> >> >> > a
>> >> >> >> >> > bridge
>> >> >> >> >> > but
>> >> >> >> >> > what I'm doing is an "Freeswitch ESL learning" because I
>> >> >> >> >> > have
>> >> >> >> >> > to
>> >> >> >> >> > port
>> >> >> >> >> > some
>> >> >> >> >> > application in Freeswitch and I'm learning how to implement
>> >> >> >> >> > some
>> >> >> >> >> > functionality.
>> >> >> >> >> > For me it's important to take control of both
>> >> >> >> >> > inbound/outbound
>> >> >> >> >> > in
>> >> >> >> >> > full
>> >> >> >> >> > async
>> >> >> >> >> > way and I have the necessity to do the complete call
>> >> >> >> >> > control.
>> >> >> >> >> > I'm not sure but to me it seems that with a normal bridge I
>> >> >> >> >> > lose
>> >> >> >> >> > the
>> >> >> >> >> > control
>> >> >> >> >> > of two sessions, for example, an outbound answer is
>> >> >> >> >> > propagated
>> >> >> >> >> > by
>> >> >> >> >> > bridge
>> >> >> >> >> > application as inbound answer.
>> >> >> >> >> > What I want to do is an audio bridging so my application can
>> >> >> >> >> > take
>> >> >> >> >> > control of
>> >> >> >> >> > "signaling bridging".
>> >> >> >> >> >
>> >> >> >> >> > I'm wrong? There are other way to do that?
>> >> >> >> >> > Stephen
>> >> >> >> >> > On Tue, Feb 15, 2011 at 12:19 AM, Michael Collins
>> >> >> >> >> > <msc at freeswitch.org>
>> >> >> >> >> > wrote:
>> >> >> >> >> >>
>> >> >> >> >> >> My head is spinning after reading this email. :)
>> >> >> >> >> >> It sounds like you just need a simple bridge from the
>> >> >> >> >> >> incoming
>> >> >> >> >> >> leg
>> >> >> >> >> >> to
>> >> >> >> >> >> the
>> >> >> >> >> >> outgoing leg. Can you pre_answer the A leg then execute a
>> >> >> >> >> >> good
>> >> >> >> >> >> old-fashioned
>> >> >> >> >> >> bridge to the b-leg?
>> >> >> >> >> >> -MC
>> >> >> >> >> >> On Mon, Feb 14, 2011 at 4:57 PM, Stephen Wilde
>> >> >> >> >> >> <wstephen80 at gmail.com>
>> >> >> >> >> >> wrote:
>> >> >> >> >> >>>
>> >> >> >> >> >>> The problem I have is to propagate the audio coming from
>> >> >> >> >> >>> an
>> >> >> >> >> >>> "originated"
>> >> >> >> >> >>> outbound session to the inbound session when the outbound
>> >> >> >> >> >>> is
>> >> >> >> >> >>> in
>> >> >> >> >> >>> the
>> >> >> >> >> >>> PROGRESS
>> >> >> >> >> >>> MEDIA phase.
>> >> >> >> >> >>> When my application receives the "CHANNEL_PROGRESS_MEDIA"
>> >> >> >> >> >>> event
>> >> >> >> >> >>> from
>> >> >> >> >> >>> outbound session I can do a "pre_answer" on inbound
>> >> >> >> >> >>> session
>> >> >> >> >> >>> but
>> >> >> >> >> >>> I'm
>> >> >> >> >> >>> not
>> >> >> >> >> >>> capable to do an audio bridge.
>> >> >> >> >> >>> I have tried with "uuid_bridge <outbound_uuid>
>> >> >> >> >> >>> <inbound_uuid>"
>> >> >> >> >> >>> with
>> >> >> >> >> >>> no
>> >> >> >> >> >>> result probably because this api requires that at least
>> >> >> >> >> >>> one
>> >> >> >> >> >>> session
>> >> >> >> >> >>> must be
>> >> >> >> >> >>> answered.
>> >> >> >> >> >>> I don't want to answer to the inbound session to propagate
>> >> >> >> >> >>> the
>> >> >> >> >> >>> outbound
>> >> >> >> >> >>> progressing media but I want to answer to inbound only on
>> >> >> >> >> >>> outbound
>> >> >> >> >> >>> answer.
>> >> >> >> >> >>> Any way to do that?
>> >> >> >> >> >>> Stephen
>> >> >> >> >> >>> _______________________________________________
>> >> >> >> >> >>> 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 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 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
>> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >> --
>> >> >> >> >> Anthony Minessale II
>> >> >> >> >>
>> >> >> >> >> FreeSWITCH http://www.freeswitch.org/
>> >> >> >> >> ClueCon http://www.cluecon.com/
>> >> >> >> >> Twitter: http://twitter.com/FreeSWITCH_wire
>> >> >> >> >>
>> >> >> >> >> AIM: anthm
>> >> >> >> >> MSN:anthony_minessale at hotmail.com
>> >> >> >> >> GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com
>> >> >> >> >> IRC: irc.freenode.net #freeswitch
>> >> >> >> >>
>> >> >> >> >> FreeSWITCH Developer Conference
>> >> >> >> >> sip:888 at conference.freeswitch.org
>> >> >> >> >> googletalk:conf+888 at conference.freeswitch.org
>> >> >> >> >> pstn:+19193869900
>> >> >> >> >>
>> >> >> >> >> _______________________________________________
>> >> >> >> >> 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 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
>> >> >> >> >
>> >> >> >> >
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >> --
>> >> >> >> Anthony Minessale II
>> >> >> >>
>> >> >> >> FreeSWITCH http://www.freeswitch.org/
>> >> >> >> ClueCon http://www.cluecon.com/
>> >> >> >> Twitter: http://twitter.com/FreeSWITCH_wire
>> >> >> >>
>> >> >> >> AIM: anthm
>> >> >> >> MSN:anthony_minessale at hotmail.com
>> >> >> >> GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com
>> >> >> >> IRC: irc.freenode.net #freeswitch
>> >> >> >>
>> >> >> >> FreeSWITCH Developer Conference
>> >> >> >> sip:888 at conference.freeswitch.org
>> >> >> >> googletalk:conf+888 at conference.freeswitch.org
>> >> >> >> pstn:+19193869900
>> >> >> >>
>> >> >> >> _______________________________________________
>> >> >> >> 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 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
>> >> >> >
>> >> >> >
>> >> >>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> Anthony Minessale II
>> >> >>
>> >> >> FreeSWITCH http://www.freeswitch.org/
>> >> >> ClueCon http://www.cluecon.com/
>> >> >> Twitter: http://twitter.com/FreeSWITCH_wire
>> >> >>
>> >> >> AIM: anthm
>> >> >> MSN:anthony_minessale at hotmail.com
>> >> >> GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com
>> >> >> IRC: irc.freenode.net #freeswitch
>> >> >>
>> >> >> FreeSWITCH Developer Conference
>> >> >> sip:888 at conference.freeswitch.org
>> >> >> googletalk:conf+888 at conference.freeswitch.org
>> >> >> pstn:+19193869900
>> >> >>
>> >> >> _______________________________________________
>> >> >> 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 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
>> >> >
>> >> >
>> >>
>> >>
>> >>
>> >> --
>> >> Anthony Minessale II
>> >>
>> >> FreeSWITCH http://www.freeswitch.org/
>> >> ClueCon http://www.cluecon.com/
>> >> Twitter: http://twitter.com/FreeSWITCH_wire
>> >>
>> >> AIM: anthm
>> >> MSN:anthony_minessale at hotmail.com
>> >> GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com
>> >> IRC: irc.freenode.net #freeswitch
>> >>
>> >> FreeSWITCH Developer Conference
>> >> sip:888 at conference.freeswitch.org
>> >> googletalk:conf+888 at conference.freeswitch.org
>> >> pstn:+19193869900
>> >>
>> >> _______________________________________________
>> >> 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 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
>> >
>> >
>>
>>
>>
>> --
>> Anthony Minessale II
>>
>> FreeSWITCH http://www.freeswitch.org/
>> ClueCon http://www.cluecon.com/
>> Twitter: http://twitter.com/FreeSWITCH_wire
>>
>> AIM: anthm
>> MSN:anthony_minessale at hotmail.com
>> GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com
>> IRC: irc.freenode.net #freeswitch
>>
>> FreeSWITCH Developer Conference
>> sip:888 at conference.freeswitch.org
>> googletalk:conf+888 at conference.freeswitch.org
>> pstn:+19193869900
>>
>> _______________________________________________
>> 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 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
>
>



-- 
Anthony Minessale II

FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/
Twitter: http://twitter.com/FreeSWITCH_wire

AIM: anthm
MSN:anthony_minessale at hotmail.com
GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com
IRC: irc.freenode.net #freeswitch

FreeSWITCH Developer Conference
sip:888 at conference.freeswitch.org
googletalk:conf+888 at conference.freeswitch.org
pstn:+19193869900



More information about the FreeSWITCH-users mailing list