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@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@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@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@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@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@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@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@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
>> >>
>> >
>> >
>> > _______________________________________________
>> > 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
>>
>> _______________________________________________
>> 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 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

_______________________________________________
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