ESL Outbound: how to bridge media?
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
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
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
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
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
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
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
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@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@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
_______________________________________________ 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
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@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@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@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@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
_______________________________________________ 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
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@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@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@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@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@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
_______________________________________________ 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
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@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@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@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@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@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@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@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
_______________________________________________ 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
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@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@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@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@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@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@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@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@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
_______________________________________________ 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
_______________________________________________ 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
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@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
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@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@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@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@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@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@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@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]
On Tue, Feb 15, 2011 at 12:08 PM, Stephen Wilde <wstephen80@gmail.com> wrote: - -
[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
_______________________________________________ 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
_______________________________________________ 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
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@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@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@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@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@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@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@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@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@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@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@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 > > > _______________________________________________ > 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
_______________________________________________ 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
Sorry, I have now followed your indication doing the bridge only after receiving "CHANNEL_PARK" on legB. The problem is the same with no audio. I have also tried to do a pre_answer in legA (before originate legB) with no success. I see in the fs_cli: [CRIT] switch_ivr_bridge.c:1412 Neither channel is answered, cannot bridge them. The sequence of events I receive before doing the bridge is: [OUTBOUND] - [CHANNEL_UUID] [OUTBOUND] - [CHANNEL_OUTGOING] [OUTBOUND] - [CHANNEL_ORIGINATE] [OUTBOUND] - [CHANNEL_STATE] [OUTBOUND] - [CHANNEL_CALLSTATE] [OUTBOUND] - [CHANNEL_STATE] [OUTBOUND] - [CHANNEL_STATE] [INBOUND] - [CHANNEL_EXECUTE] [INBOUND] - [CHANNEL_CALLSTATE] [INBOUND] - [CHANNEL_PROGRESS_MEDIA] [INBOUND] - [CHANNEL_EXECUTE_COMPLETE] [OUTBOUND] - [CALL_UPDATE] [OUTBOUND] - [CHANNEL_PROGRESS] [OUTBOUND] - [CALL_UPDATE] [OUTBOUND] - [CODEC] [OUTBOUND] - [CODEC] [OUTBOUND] - [CHANNEL_CALLSTATE] [OUTBOUND] - [CHANNEL_PROGRESS_MEDIA] [OUTBOUND] - [CHANNEL_STATE] [OUTBOUND] - [CHANNEL_EXECUTE] [OUTBOUND] - [CHANNEL_PARK] After this CHANNEL_PARK I do the "uuid_bridge" with no succes. These event are related to the case of putting legA in pre_answer. Same problem if I leave it in park. Stephen On Tue, Feb 15, 2011 at 11:32 PM, Anthony Minessale < anthony.minessale@gmail.com> wrote:
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@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@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@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@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@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@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@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@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@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@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@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 > > > > > > _______________________________________________ > > 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
_______________________________________________ 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
That used to be a problem to bridge 2 unanswered channels. I think it *might* let you now if you have the right conditions but it may take some code and testing. can you test this for me? edit switch_ivr_bridge.c erase or comment out the entire else block starting at line 1411 Try again. On Tue, Feb 15, 2011 at 5:30 PM, Stephen Wilde <wstephen80@gmail.com> wrote:
Sorry, I have now followed your indication doing the bridge only after receiving "CHANNEL_PARK" on legB. The problem is the same with no audio. I have also tried to do a pre_answer in legA (before originate legB) with no success. I see in the fs_cli: [CRIT] switch_ivr_bridge.c:1412 Neither channel is answered, cannot bridge them. The sequence of events I receive before doing the bridge is: [OUTBOUND] - [CHANNEL_UUID] [OUTBOUND] - [CHANNEL_OUTGOING] [OUTBOUND] - [CHANNEL_ORIGINATE] [OUTBOUND] - [CHANNEL_STATE] [OUTBOUND] - [CHANNEL_CALLSTATE] [OUTBOUND] - [CHANNEL_STATE] [OUTBOUND] - [CHANNEL_STATE] [INBOUND] - [CHANNEL_EXECUTE] [INBOUND] - [CHANNEL_CALLSTATE] [INBOUND] - [CHANNEL_PROGRESS_MEDIA] [INBOUND] - [CHANNEL_EXECUTE_COMPLETE] [OUTBOUND] - [CALL_UPDATE] [OUTBOUND] - [CHANNEL_PROGRESS] [OUTBOUND] - [CALL_UPDATE] [OUTBOUND] - [CODEC] [OUTBOUND] - [CODEC] [OUTBOUND] - [CHANNEL_CALLSTATE] [OUTBOUND] - [CHANNEL_PROGRESS_MEDIA] [OUTBOUND] - [CHANNEL_STATE] [OUTBOUND] - [CHANNEL_EXECUTE] [OUTBOUND] - [CHANNEL_PARK] After this CHANNEL_PARK I do the "uuid_bridge" with no succes. These event are related to the case of putting legA in pre_answer. Same problem if I leave it in park. Stephen
On Tue, Feb 15, 2011 at 11:32 PM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
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@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@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@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@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@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@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@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@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@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@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@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 >> > >> > >> > _______________________________________________ >> > 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
_______________________________________________ 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
_______________________________________________ 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
Whow! With this change I can ear progressing messages! It works now! Stephen On Wed, Feb 16, 2011 at 12:35 AM, Anthony Minessale < anthony.minessale@gmail.com> wrote:
That used to be a problem to bridge 2 unanswered channels. I think it *might* let you now if you have the right conditions but it may take some code and testing.
can you test this for me?
edit switch_ivr_bridge.c
erase or comment out the entire else block starting at line 1411
Try again.
Sorry, I have now followed your indication doing the bridge only after receiving "CHANNEL_PARK" on legB. The problem is the same with no audio. I have also tried to do a pre_answer in legA (before originate legB) with no success. I see in the fs_cli: [CRIT] switch_ivr_bridge.c:1412 Neither channel is answered, cannot bridge them. The sequence of events I receive before doing the bridge is: [OUTBOUND] - [CHANNEL_UUID] [OUTBOUND] - [CHANNEL_OUTGOING] [OUTBOUND] - [CHANNEL_ORIGINATE] [OUTBOUND] - [CHANNEL_STATE] [OUTBOUND] - [CHANNEL_CALLSTATE] [OUTBOUND] - [CHANNEL_STATE] [OUTBOUND] - [CHANNEL_STATE] [INBOUND] - [CHANNEL_EXECUTE] [INBOUND] - [CHANNEL_CALLSTATE] [INBOUND] - [CHANNEL_PROGRESS_MEDIA] [INBOUND] - [CHANNEL_EXECUTE_COMPLETE] [OUTBOUND] - [CALL_UPDATE] [OUTBOUND] - [CHANNEL_PROGRESS] [OUTBOUND] - [CALL_UPDATE] [OUTBOUND] - [CODEC] [OUTBOUND] - [CODEC] [OUTBOUND] - [CHANNEL_CALLSTATE] [OUTBOUND] - [CHANNEL_PROGRESS_MEDIA] [OUTBOUND] - [CHANNEL_STATE] [OUTBOUND] - [CHANNEL_EXECUTE] [OUTBOUND] - [CHANNEL_PARK] After this CHANNEL_PARK I do the "uuid_bridge" with no succes. These event are related to the case of putting legA in pre_answer. Same problem if I leave it in park. Stephen
On Tue, Feb 15, 2011 at 11:32 PM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
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@box.compark 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@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@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@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@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@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@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@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@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@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@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]
On Tue, Feb 15, 2011 at 5:30 PM, Stephen Wilde <wstephen80@gmail.com> wrote: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> >> > [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 > >> > > >> > > >> > _______________________________________________ > >> > 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
_______________________________________________ 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
_______________________________________________ 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
ok if that's the case, then try latest git which should also work. If not let me know. I'll be back tomorrow. commit 4f93ea25ece53df029e6dc6c913ad7c190df22d5 Author: Anthony Minessale <anthm@freeswitch.org> Date: Tue Feb 15 17:43:13 2011 -0600 allow uuid bridge on unaswered channels as long as there is media available on at least one On Tue, Feb 15, 2011 at 5:49 PM, Stephen Wilde <wstephen80@gmail.com> wrote:
Whow! With this change I can ear progressing messages! It works now! Stephen
On Wed, Feb 16, 2011 at 12:35 AM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
That used to be a problem to bridge 2 unanswered channels. I think it *might* let you now if you have the right conditions but it may take some code and testing.
can you test this for me?
edit switch_ivr_bridge.c
erase or comment out the entire else block starting at line 1411
Try again.
On Tue, Feb 15, 2011 at 5:30 PM, Stephen Wilde <wstephen80@gmail.com> wrote:
Sorry, I have now followed your indication doing the bridge only after receiving "CHANNEL_PARK" on legB. The problem is the same with no audio. I have also tried to do a pre_answer in legA (before originate legB) with no success. I see in the fs_cli: [CRIT] switch_ivr_bridge.c:1412 Neither channel is answered, cannot bridge them. The sequence of events I receive before doing the bridge is: [OUTBOUND] - [CHANNEL_UUID] [OUTBOUND] - [CHANNEL_OUTGOING] [OUTBOUND] - [CHANNEL_ORIGINATE] [OUTBOUND] - [CHANNEL_STATE] [OUTBOUND] - [CHANNEL_CALLSTATE] [OUTBOUND] - [CHANNEL_STATE] [OUTBOUND] - [CHANNEL_STATE] [INBOUND] - [CHANNEL_EXECUTE] [INBOUND] - [CHANNEL_CALLSTATE] [INBOUND] - [CHANNEL_PROGRESS_MEDIA] [INBOUND] - [CHANNEL_EXECUTE_COMPLETE] [OUTBOUND] - [CALL_UPDATE] [OUTBOUND] - [CHANNEL_PROGRESS] [OUTBOUND] - [CALL_UPDATE] [OUTBOUND] - [CODEC] [OUTBOUND] - [CODEC] [OUTBOUND] - [CHANNEL_CALLSTATE] [OUTBOUND] - [CHANNEL_PROGRESS_MEDIA] [OUTBOUND] - [CHANNEL_STATE] [OUTBOUND] - [CHANNEL_EXECUTE] [OUTBOUND] - [CHANNEL_PARK] After this CHANNEL_PARK I do the "uuid_bridge" with no succes. These event are related to the case of putting legA in pre_answer. Same problem if I leave it in park. Stephen
On Tue, Feb 15, 2011 at 11:32 PM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
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@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@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@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@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@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@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@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@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@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@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@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 >> >> > >> >> > >> >> > _______________________________________________ >> >> > 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 > > > _______________________________________________ > 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
_______________________________________________ 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
Thank you Anthony, with latest git it works fine. Stephen On Wed, Feb 16, 2011 at 12:56 AM, Anthony Minessale < anthony.minessale@gmail.com> wrote:
ok if that's the case, then try latest git which should also work. If not let me know. I'll be back tomorrow.
commit 4f93ea25ece53df029e6dc6c913ad7c190df22d5 Author: Anthony Minessale <anthm@freeswitch.org> Date: Tue Feb 15 17:43:13 2011 -0600
allow uuid bridge on unaswered channels as long as there is media available on at least one
Whow! With this change I can ear progressing messages! It works now! Stephen
On Wed, Feb 16, 2011 at 12:35 AM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
That used to be a problem to bridge 2 unanswered channels. I think it *might* let you now if you have the right conditions but it may take some code and testing.
can you test this for me?
edit switch_ivr_bridge.c
erase or comment out the entire else block starting at line 1411
Try again.
On Tue, Feb 15, 2011 at 5:30 PM, Stephen Wilde <wstephen80@gmail.com> wrote:
Sorry, I have now followed your indication doing the bridge only after receiving "CHANNEL_PARK" on legB. The problem is the same with no
audio.
I have also tried to do a pre_answer in legA (before originate legB) with no success. I see in the fs_cli: [CRIT] switch_ivr_bridge.c:1412 Neither channel is answered, cannot bridge them. The sequence of events I receive before doing the bridge is: [OUTBOUND] - [CHANNEL_UUID] [OUTBOUND] - [CHANNEL_OUTGOING] [OUTBOUND] - [CHANNEL_ORIGINATE] [OUTBOUND] - [CHANNEL_STATE] [OUTBOUND] - [CHANNEL_CALLSTATE] [OUTBOUND] - [CHANNEL_STATE] [OUTBOUND] - [CHANNEL_STATE] [INBOUND] - [CHANNEL_EXECUTE] [INBOUND] - [CHANNEL_CALLSTATE] [INBOUND] - [CHANNEL_PROGRESS_MEDIA] [INBOUND] - [CHANNEL_EXECUTE_COMPLETE] [OUTBOUND] - [CALL_UPDATE] [OUTBOUND] - [CHANNEL_PROGRESS] [OUTBOUND] - [CALL_UPDATE] [OUTBOUND] - [CODEC] [OUTBOUND] - [CODEC] [OUTBOUND] - [CHANNEL_CALLSTATE] [OUTBOUND] - [CHANNEL_PROGRESS_MEDIA] [OUTBOUND] - [CHANNEL_STATE] [OUTBOUND] - [CHANNEL_EXECUTE] [OUTBOUND] - [CHANNEL_PARK] After this CHANNEL_PARK I do the "uuid_bridge" with no succes. These event are related to the case of putting legA in pre_answer. Same problem if I leave it in park. Stephen
On Tue, Feb 15, 2011 at 11:32 PM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
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@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@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@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@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@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@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@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@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]
On Tue, Feb 15, 2011 at 5:49 PM, Stephen Wilde <wstephen80@gmail.com> wrote: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> >> > [CHANNEL_HANGUP_COMPLETE] > >> > [ERROR] newacme.cpp:290 mycallback() End. > >> > > >> > > >> > On Tue, Feb 15, 2011 at 5:09 PM, Anthony Minessale > >> > <anthony.minessale@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@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@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 > >> >> > > >> >> > > >> >> > _______________________________________________ > >> >> > 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 > > > > > > _______________________________________________ > > 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
_______________________________________________ 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
participants (3)
-
Anthony Minessale
-
Michael Collins
-
Stephen Wilde