originating a call from an outbound socket app
Hi all, I've been playing with FS around weeks, with some level of success. Right now I'm stuck trying to dial an extension, or to bridge a call to an external extension. Briefly, the scenario is the following: - Cisco CCM forwarding SIP calls to FS - FS in outbound mode, forwarding calls to a Java application using freeswitch-esl jar The java application answers the call, says a dialogue using TTS and receives input using DTFM or speech commands; all this is working pretty well. Now I'm trying to put this call in hold, originate a call to another extension and, depending on the result (call answered, not answered, destination user presses an specific number generating an expected DTMF), I need to bridge both calls and finish the session. I try several ways to get this done with no luck yet: using api originate to make the call with different arguments ({ignore_early_media, etc). I even tried to skip this step and just do the bridge between the inbound call and the external extension, but this didn't work either. I can't see any errors thrown by FS, and the result of the command is +OK, but nothing happens, the external phone never rings. The FS log only says: [DEBUG] switch_core_session.c:954 Send signal sofia/external/5655@192.168.8.1 [BREAK] <= this ext/IP address is from the inbound caller, not the one I'm trying to connect to. My first impression was that I might have something wrong with the originate/bridge parameters. I changed the dialplan XML file to just do the bridge, and it worked like a charm. <include> <extension name="test"> <condition field="destination_number" expression="6114|5121"> <!-- <action application="socket" data="localhost:8044 async full"/> --> <action application="bridge" data="sofia/external/5562@192.168.2.14" /> </condition> </extension> </include> I don't know what path to follow here. I was unable to find relevant examples on google that guides me to solve this little issue. Any advices? Thanks all, Hector
I would say that you want to bridge the inbound leg to the outbound leg and use the answer confirmation variables. I recommend you pastebin a simple java app that answers the call and attempts to bridge it and also pastebin the console log. The community will take a look and see if we can help you figure out what is happening. -MC On Wed, Jun 8, 2011 at 3:14 PM, Hector Geraldino < Hector.Geraldino@ip-soft.net> wrote:
Hi all,
I’ve been playing with FS around weeks, with some level of success. Right now I’m stuck trying to dial an extension, or to bridge a call to an external extension. Briefly, the scenario is the following:
- Cisco CCM forwarding SIP calls to FS
- FS in outbound mode, forwarding calls to a Java application using freeswitch-esl jar
The java application answers the call, says a dialogue using TTS and receives input using DTFM or speech commands; all this is working pretty well. Now I’m trying to put this call in hold, originate a call to another extension and, depending on the result (call answered, not answered, destination user presses an specific number generating an expected DTMF), I need to bridge both calls and finish the session.
I try several ways to get this done with no luck yet: using api originate to make the call with different arguments ({ignore_early_media, etc). I even tried to skip this step and just do the bridge between the inbound call and the external extension, but this didn’t work either. I can’t see any errors thrown by FS, and the result of the command is +OK, but nothing happens, the external phone never rings. The FS log only says:
[DEBUG] switch_core_session.c:954 Send signal sofia/external/ 5655@192.168.8.1 [BREAK] <= this ext/IP address is from the inbound caller, not the one I’m trying to connect to.
My first impression was that I might have something wrong with the originate/bridge parameters. I changed the dialplan XML file to just do the bridge, and it worked like a charm.
<include>
<extension name="test">
<condition field="destination_number" expression="6114|5121">
<!-- <action application="socket" data="localhost:8044 async full"/> -->
<action application="bridge" data="sofia/external/ 5562@192.168.2.14" />
</condition>
</extension>
</include>
I don’t know what path to follow here. I was unable to find relevant examples on google that guides me to solve this little issue. Any advices?
Thanks all,
Hector
_______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
Hi Michael, Thanks for replying back. I've pasted a sample application on pastebin, the URL is: http://pastebin.com/MYusWe3V What I'm trying to do (and have partially accomplished) is: -Answer the call - Play a message - wait for a command (dtmf or voice, this is out of the sample app for the sake of keeping it short & simple) - originate a new call, wait for it to be answered and depending on an event (dtmf)... - ...do the bridge or dial another extension. The extension number is external (managed by a Cisco CCM). If I try to do the bridge from the XML dialplan it works perfect. When I try to do it from an outbound socket java application, anything happens, and almost no information is logged on FS log that I can use to decide what might be happening. Thanks again for your help. I truly appreciate it. Hector From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch-users-bounces@lists.freeswitch.org] On Behalf Of Michael Collins Sent: Thursday, June 09, 2011 12:47 PM To: FreeSWITCH Users Help Subject: Re: [Freeswitch-users] originating a call from an outbound socket app I would say that you want to bridge the inbound leg to the outbound leg and use the answer confirmation variables. I recommend you pastebin a simple java app that answers the call and attempts to bridge it and also pastebin the console log. The community will take a look and see if we can help you figure out what is happening. -MC On Wed, Jun 8, 2011 at 3:14 PM, Hector Geraldino <Hector.Geraldino@ip-soft.net<mailto:Hector.Geraldino@ip-soft.net>> wrote: Hi all, I've been playing with FS around weeks, with some level of success. Right now I'm stuck trying to dial an extension, or to bridge a call to an external extension. Briefly, the scenario is the following: - Cisco CCM forwarding SIP calls to FS - FS in outbound mode, forwarding calls to a Java application using freeswitch-esl jar The java application answers the call, says a dialogue using TTS and receives input using DTFM or speech commands; all this is working pretty well. Now I'm trying to put this call in hold, originate a call to another extension and, depending on the result (call answered, not answered, destination user presses an specific number generating an expected DTMF), I need to bridge both calls and finish the session. I try several ways to get this done with no luck yet: using api originate to make the call with different arguments ({ignore_early_media, etc). I even tried to skip this step and just do the bridge between the inbound call and the external extension, but this didn't work either. I can't see any errors thrown by FS, and the result of the command is +OK, but nothing happens, the external phone never rings. The FS log only says: [DEBUG] switch_core_session.c:954 Send signal sofia/external/5655@192.168.8.1<mailto:5655@192.168.8.1> [BREAK] <= this ext/IP address is from the inbound caller, not the one I'm trying to connect to. My first impression was that I might have something wrong with the originate/bridge parameters. I changed the dialplan XML file to just do the bridge, and it worked like a charm. <include> <extension name="test"> <condition field="destination_number" expression="6114|5121"> <!-- <action application="socket" data="localhost:8044 async full"/> --> <action application="bridge" data="sofia/external/5562@192.168.2.14<mailto:5562@192.168.2.14>" /> </condition> </extension> </include> I don't know what path to follow here. I was unable to find relevant examples on google that guides me to solve this little issue. Any advices? Thanks all, Hector _______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org<mailto:FreeSWITCH-users@lists.freeswitch.org> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
What is the socket app syntax that you are using? Do you have "async full" turned on? -MC On Thu, Jun 9, 2011 at 1:22 PM, Hector Geraldino < Hector.Geraldino@ip-soft.net> wrote:
Hi Michael,
Thanks for replying back. I’ve pasted a sample application on pastebin, the URL is:
What I’m trying to do (and have partially accomplished) is:
-Answer the call
- Play a message
- wait for a command (dtmf or voice, this is out of the sample app for the sake of keeping it short & simple)
- originate a new call, wait for it to be answered and depending on an event (dtmf)…
- …do the bridge or dial another extension.
The extension number is external (managed by a Cisco CCM). If I try to do the bridge from the XML dialplan it works perfect. When I try to do it from an outbound socket java application, anything happens, and almost no information is logged on FS log that I can use to decide what might be happening.
Thanks again for your help. I truly appreciate it.
Hector
*From:* freeswitch-users-bounces@lists.freeswitch.org [mailto: freeswitch-users-bounces@lists.freeswitch.org] *On Behalf Of *Michael Collins *Sent:* Thursday, June 09, 2011 12:47 PM *To:* FreeSWITCH Users Help *Subject:* Re: [Freeswitch-users] originating a call from an outbound socket app
I would say that you want to bridge the inbound leg to the outbound leg and use the answer confirmation variables. I recommend you pastebin a simple java app that answers the call and attempts to bridge it and also pastebin the console log. The community will take a look and see if we can help you figure out what is happening.
-MC
On Wed, Jun 8, 2011 at 3:14 PM, Hector Geraldino < Hector.Geraldino@ip-soft.net> wrote:
Hi all,
I’ve been playing with FS around weeks, with some level of success. Right now I’m stuck trying to dial an extension, or to bridge a call to an external extension. Briefly, the scenario is the following:
- Cisco CCM forwarding SIP calls to FS
- FS in outbound mode, forwarding calls to a Java application using freeswitch-esl jar
The java application answers the call, says a dialogue using TTS and receives input using DTFM or speech commands; all this is working pretty well. Now I’m trying to put this call in hold, originate a call to another extension and, depending on the result (call answered, not answered, destination user presses an specific number generating an expected DTMF), I need to bridge both calls and finish the session.
I try several ways to get this done with no luck yet: using api originate to make the call with different arguments ({ignore_early_media, etc). I even tried to skip this step and just do the bridge between the inbound call and the external extension, but this didn’t work either. I can’t see any errors thrown by FS, and the result of the command is +OK, but nothing happens, the external phone never rings. The FS log only says:
[DEBUG] switch_core_session.c:954 Send signal sofia/external/ 5655@192.168.8.1 [BREAK] <= this ext/IP address is from the inbound caller, not the one I’m trying to connect to.
My first impression was that I might have something wrong with the originate/bridge parameters. I changed the dialplan XML file to just do the bridge, and it worked like a charm.
<include>
<extension name="test">
<condition field="destination_number" expression="6114|5121">
<!-- <action application="socket" data="localhost:8044 async full"/> -->
<action application="bridge" data="sofia/external/ 5562@192.168.2.14" />
</condition>
</extension>
</include>
I don’t know what path to follow here. I was unable to find relevant examples on google that guides me to solve this little issue. Any advices?
Thanks all,
Hector
_______________________________________________ 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
Also, I don't think this is helping you: EslMessage response = sendSyncSingleLineCommand(channel, "myevents"); Look here to see what "myevents" does: http://wiki.freeswitch.org/wiki/Mod_event_socket#Special_Case_-_.27myevents.... -MC On Thu, Jun 9, 2011 at 1:22 PM, Hector Geraldino < Hector.Geraldino@ip-soft.net> wrote:
Hi Michael,
Thanks for replying back. I’ve pasted a sample application on pastebin, the URL is:
What I’m trying to do (and have partially accomplished) is:
-Answer the call
- Play a message
- wait for a command (dtmf or voice, this is out of the sample app for the sake of keeping it short & simple)
- originate a new call, wait for it to be answered and depending on an event (dtmf)…
- …do the bridge or dial another extension.
The extension number is external (managed by a Cisco CCM). If I try to do the bridge from the XML dialplan it works perfect. When I try to do it from an outbound socket java application, anything happens, and almost no information is logged on FS log that I can use to decide what might be happening.
Thanks again for your help. I truly appreciate it.
Hector
*From:* freeswitch-users-bounces@lists.freeswitch.org [mailto: freeswitch-users-bounces@lists.freeswitch.org] *On Behalf Of *Michael Collins *Sent:* Thursday, June 09, 2011 12:47 PM *To:* FreeSWITCH Users Help *Subject:* Re: [Freeswitch-users] originating a call from an outbound socket app
I would say that you want to bridge the inbound leg to the outbound leg and use the answer confirmation variables. I recommend you pastebin a simple java app that answers the call and attempts to bridge it and also pastebin the console log. The community will take a look and see if we can help you figure out what is happening.
-MC
On Wed, Jun 8, 2011 at 3:14 PM, Hector Geraldino < Hector.Geraldino@ip-soft.net> wrote:
Hi all,
I’ve been playing with FS around weeks, with some level of success. Right now I’m stuck trying to dial an extension, or to bridge a call to an external extension. Briefly, the scenario is the following:
- Cisco CCM forwarding SIP calls to FS
- FS in outbound mode, forwarding calls to a Java application using freeswitch-esl jar
The java application answers the call, says a dialogue using TTS and receives input using DTFM or speech commands; all this is working pretty well. Now I’m trying to put this call in hold, originate a call to another extension and, depending on the result (call answered, not answered, destination user presses an specific number generating an expected DTMF), I need to bridge both calls and finish the session.
I try several ways to get this done with no luck yet: using api originate to make the call with different arguments ({ignore_early_media, etc). I even tried to skip this step and just do the bridge between the inbound call and the external extension, but this didn’t work either. I can’t see any errors thrown by FS, and the result of the command is +OK, but nothing happens, the external phone never rings. The FS log only says:
[DEBUG] switch_core_session.c:954 Send signal sofia/external/ 5655@192.168.8.1 [BREAK] <= this ext/IP address is from the inbound caller, not the one I’m trying to connect to.
My first impression was that I might have something wrong with the originate/bridge parameters. I changed the dialplan XML file to just do the bridge, and it worked like a charm.
<include>
<extension name="test">
<condition field="destination_number" expression="6114|5121">
<!-- <action application="socket" data="localhost:8044 async full"/> -->
<action application="bridge" data="sofia/external/ 5562@192.168.2.14" />
</condition>
</extension>
</include>
I don’t know what path to follow here. I was unable to find relevant examples on google that guides me to solve this little issue. Any advices?
Thanks all,
Hector
_______________________________________________ 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
Thanks for your response Michael. Finally I found the way of dialing to an external extension. What I did was just open a shell, listen in a port using nc and tried to originate a call. It worked using the syntax: originate sofia/internal/5562@192.168.23.104 &park As this is an outbound call (not managed by the socket application) I had to use a new inbound socket connection to connect to FS, make the call, query for the uuid and receive some events (like DTMF among others). Everything was going great, until I found two issues: - The CHANNEL_ANSWER event is always triggered, no matter if the call is actually picked up or not on my phone. I thought that maybe I can use some other event to determine if the call have been answered or not (like CHANNEL_CALLSTATE or CALL_UPDATE), but the additional information on the event headers is the same no matter if it's answered or not. - When the call is answered, and the user presses a key to accept the call, the function returns the UUID of this session to the main method. Then I tried to make the bridge between the two calls (the legA call handled by the socket application, and the legB outbound call generated in the application using an inbound connection). I using the command api uuid_bridge <incoming_uuid> <outbound_uuid> but this didn't work. Am I missing something here? Thanks again, Hector From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch-users-bounces@lists.freeswitch.org] On Behalf Of Michael Collins Sent: Thursday, June 09, 2011 6:13 PM To: FreeSWITCH Users Help Subject: Re: [Freeswitch-users] originating a call from an outbound socket app Also, I don't think this is helping you: EslMessage response = sendSyncSingleLineCommand(channel, "myevents"); Look here to see what "myevents" does: http://wiki.freeswitch.org/wiki/Mod_event_socket#Special_Case_-_.27myevents.... -MC On Thu, Jun 9, 2011 at 1:22 PM, Hector Geraldino <Hector.Geraldino@ip-soft.net<mailto:Hector.Geraldino@ip-soft.net>> wrote: Hi Michael, Thanks for replying back. I've pasted a sample application on pastebin, the URL is: http://pastebin.com/MYusWe3V What I'm trying to do (and have partially accomplished) is: -Answer the call - Play a message - wait for a command (dtmf or voice, this is out of the sample app for the sake of keeping it short & simple) - originate a new call, wait for it to be answered and depending on an event (dtmf)... - ...do the bridge or dial another extension. The extension number is external (managed by a Cisco CCM). If I try to do the bridge from the XML dialplan it works perfect. When I try to do it from an outbound socket java application, anything happens, and almost no information is logged on FS log that I can use to decide what might be happening. Thanks again for your help. I truly appreciate it. Hector From: freeswitch-users-bounces@lists.freeswitch.org<mailto:freeswitch-users-bounces@lists.freeswitch.org> [mailto:freeswitch-users-bounces@lists.freeswitch.org<mailto:freeswitch-users-bounces@lists.freeswitch.org>] On Behalf Of Michael Collins Sent: Thursday, June 09, 2011 12:47 PM To: FreeSWITCH Users Help Subject: Re: [Freeswitch-users] originating a call from an outbound socket app I would say that you want to bridge the inbound leg to the outbound leg and use the answer confirmation variables. I recommend you pastebin a simple java app that answers the call and attempts to bridge it and also pastebin the console log. The community will take a look and see if we can help you figure out what is happening. -MC On Wed, Jun 8, 2011 at 3:14 PM, Hector Geraldino <Hector.Geraldino@ip-soft.net<mailto:Hector.Geraldino@ip-soft.net>> wrote: Hi all, I've been playing with FS around weeks, with some level of success. Right now I'm stuck trying to dial an extension, or to bridge a call to an external extension. Briefly, the scenario is the following: - Cisco CCM forwarding SIP calls to FS - FS in outbound mode, forwarding calls to a Java application using freeswitch-esl jar The java application answers the call, says a dialogue using TTS and receives input using DTFM or speech commands; all this is working pretty well. Now I'm trying to put this call in hold, originate a call to another extension and, depending on the result (call answered, not answered, destination user presses an specific number generating an expected DTMF), I need to bridge both calls and finish the session. I try several ways to get this done with no luck yet: using api originate to make the call with different arguments ({ignore_early_media, etc). I even tried to skip this step and just do the bridge between the inbound call and the external extension, but this didn't work either. I can't see any errors thrown by FS, and the result of the command is +OK, but nothing happens, the external phone never rings. The FS log only says: [DEBUG] switch_core_session.c:954 Send signal sofia/external/5655@192.168.8.1<mailto:5655@192.168.8.1> [BREAK] <= this ext/IP address is from the inbound caller, not the one I'm trying to connect to. My first impression was that I might have something wrong with the originate/bridge parameters. I changed the dialplan XML file to just do the bridge, and it worked like a charm. <include> <extension name="test"> <condition field="destination_number" expression="6114|5121"> <!-- <action application="socket" data="localhost:8044 async full"/> --> <action application="bridge" data="sofia/external/5562@192.168.2.14<mailto:5562@192.168.2.14>" /> </condition> </extension> </include> I don't know what path to follow here. I was unable to find relevant examples on google that guides me to solve this little issue. Any advices? Thanks all, Hector _______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org<mailto:FreeSWITCH-users@lists.freeswitch.org> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org _______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org<mailto:FreeSWITCH-users@lists.freeswitch.org> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
On Fri, Jun 10, 2011 at 7:00 AM, Hector Geraldino < Hector.Geraldino@ip-soft.net> wrote:
Thanks for your response Michael.
Finally I found the way of dialing to an external extension. What I did was just open a shell, listen in a port using nc and tried to originate a call. It worked using the syntax:
originate sofia/internal/5562@192.168.23.104 &park
As this is an outbound call (not managed by the socket application) I had to use a new inbound socket connection to connect to FS, make the call, query for the uuid and receive some events (like DTMF among others). Everything was going great, until I found two issues:
- The CHANNEL_ANSWER event is always triggered, no matter if the call is actually picked up or not on my phone. I thought that maybe I can use some other event to determine if the call have been answered or not (like CHANNEL_CALLSTATE or CALL_UPDATE), but the additional information on the event headers is the same no matter if it’s answered or not.
- When the call is answered, and the user presses a key to accept the call, the function returns the UUID of this session to the main method. Then I tried to make the bridge between the two calls (the legA call handled by the socket application, and the legB outbound call generated in the application using an inbound connection). I using the command
api uuid_bridge <incoming_uuid> <outbound_uuid>
but this didn’t work. Am I missing something here?
You're missing the debug log on the pastebin. ;) Yeah, let's take a look at the debug log of this happening. Capture from the beginning of the a leg all the way through to trying the uuid_bridge. -MC
Hi Michael, I finally figure out how to connect both calls using the command 'intercept'. From the inbound call (handled by the OB socket) I just do an execute intercept legB uuid, and both calls are bridged perfectly. Thanks very much. So the only thing that stills concerns me is why the event CHANNEL_ANSWER is always generated on the outbound call (legb), even if the user doesn't pick up the call. Also I can't find any differences on the CHANNEL_CALLSTATE or CALL_UPDATE events that allows me to determine when an outbound call generated from FS is actually answered or not. BTW, I bought the FS 1.0.6 book on Amazon last week and I want to congratulate you and Anthony/Darren for the excellent work you've done, it has been really helpful. My only complaint is that it doesn't have an eBook format so I can read it on my Kindle. Besides that, great work. From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch-users-bounces@lists.freeswitch.org] On Behalf Of Michael Collins Sent: Friday, June 10, 2011 6:27 PM To: FreeSWITCH Users Help Subject: Re: [Freeswitch-users] originating a call from an outbound socket app On Fri, Jun 10, 2011 at 7:00 AM, Hector Geraldino <Hector.Geraldino@ip-soft.net<mailto:Hector.Geraldino@ip-soft.net>> wrote: Thanks for your response Michael. Finally I found the way of dialing to an external extension. What I did was just open a shell, listen in a port using nc and tried to originate a call. It worked using the syntax: originate sofia/internal/5562@192.168.23.104<mailto:5562@192.168.23.104> &park As this is an outbound call (not managed by the socket application) I had to use a new inbound socket connection to connect to FS, make the call, query for the uuid and receive some events (like DTMF among others). Everything was going great, until I found two issues: - The CHANNEL_ANSWER event is always triggered, no matter if the call is actually picked up or not on my phone. I thought that maybe I can use some other event to determine if the call have been answered or not (like CHANNEL_CALLSTATE or CALL_UPDATE), but the additional information on the event headers is the same no matter if it's answered or not. - When the call is answered, and the user presses a key to accept the call, the function returns the UUID of this session to the main method. Then I tried to make the bridge between the two calls (the legA call handled by the socket application, and the legB outbound call generated in the application using an inbound connection). I using the command api uuid_bridge <incoming_uuid> <outbound_uuid> but this didn't work. Am I missing something here? You're missing the debug log on the pastebin. ;) Yeah, let's take a look at the debug log of this happening. Capture from the beginning of the a leg all the way through to trying the uuid_bridge. -MC
On Mon, Jun 13, 2011 at 9:37 AM, Hector Geraldino < Hector.Geraldino@ip-soft.net> wrote:
Hi Michael,
I finally figure out how to connect both calls using the command ‘intercept’. From the inbound call (handled by the OB socket) I just do an execute intercept legB uuid, and both calls are bridged perfectly. Thanks very much.
So the only thing that stills concerns me is why the event CHANNEL_ANSWER is always generated on the outbound call (legb), even if the user doesn’t pick up the call. Also I can’t find any differences on the CHANNEL_CALLSTATE or CALL_UPDATE events that allows me to determine when an outbound call generated from FS is actually answered or not.
Did you ever post the full call debug log with a siptrace? I don't recall seeing that...
BTW, I bought the FS 1.0.6 book on Amazon last week and I want to congratulate you and Anthony/Darren for the excellent work you’ve done, it has been really helpful. My only complaint is that it doesn’t have an eBook format so I can read it on my Kindle. Besides that, great work.
Yes, that complaint has been levied on more than one occasion. We've been imploring Packt to rectify the situation. We'll keep you posted on the status. -MC
Right, the call log is on: http://pastebin.com/kAEZsFe6 I found the issue which is really silly (don't know how I couldn't figure it out before): the call has been picked up by the voicemail, that's why the CHANNEL_ANSWER event is shown up. What's the most common pattern to deal with this situation, when you want to know if the call has been answered by a human being and not by a machine? I'm thinking about requesting a confirmation (DTMF) and timeout the operation after a few secs, but as this seems to be a very common task, I was wondering if there's a better way of doing it. From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch-users-bounces@lists.freeswitch.org] On Behalf Of Michael Collins Sent: Monday, June 13, 2011 1:53 PM To: FreeSWITCH Users Help Subject: Re: [Freeswitch-users] originating a call from an outbound socket app On Mon, Jun 13, 2011 at 9:37 AM, Hector Geraldino <Hector.Geraldino@ip-soft.net<mailto:Hector.Geraldino@ip-soft.net>> wrote: Hi Michael, I finally figure out how to connect both calls using the command 'intercept'. From the inbound call (handled by the OB socket) I just do an execute intercept legB uuid, and both calls are bridged perfectly. Thanks very much. So the only thing that stills concerns me is why the event CHANNEL_ANSWER is always generated on the outbound call (legb), even if the user doesn't pick up the call. Also I can't find any differences on the CHANNEL_CALLSTATE or CALL_UPDATE events that allows me to determine when an outbound call generated from FS is actually answered or not. Did you ever post the full call debug log with a siptrace? I don't recall seeing that... BTW, I bought the FS 1.0.6 book on Amazon last week and I want to congratulate you and Anthony/Darren for the excellent work you've done, it has been really helpful. My only complaint is that it doesn't have an eBook format so I can read it on my Kindle. Besides that, great work. Yes, that complaint has been levied on more than one occasion. We've been imploring Packt to rectify the situation. We'll keep you posted on the status. -MC
Well, you can use the answer confirmation variables... http://wiki.freeswitch.org/wiki/Channel_Variables#Answer_confirmation_variab... or you can contact consulting@freeswitch.org and see about getting the answering machine detection module. (Not a free item, BTW.) -MC On Mon, Jun 13, 2011 at 11:47 AM, Hector Geraldino < Hector.Geraldino@ip-soft.net> wrote:
Right, the call log is on:
I found the issue which is really silly (don’t know how I couldn’t figure it out before): the call has been picked up by the voicemail, that’s why the CHANNEL_ANSWER event is shown up.
What’s the most common pattern to deal with this situation, when you want to know if the call has been answered by a human being and not by a machine? I’m thinking about requesting a confirmation (DTMF) and timeout the operation after a few secs, but as this seems to be a very common task, I was wondering if there’s a better way of doing it.
*From:* freeswitch-users-bounces@lists.freeswitch.org [mailto: freeswitch-users-bounces@lists.freeswitch.org] *On Behalf Of *Michael Collins *Sent:* Monday, June 13, 2011 1:53 PM *To:* FreeSWITCH Users Help *Subject:* Re: [Freeswitch-users] originating a call from an outbound socket app
On Mon, Jun 13, 2011 at 9:37 AM, Hector Geraldino < Hector.Geraldino@ip-soft.net> wrote:
Hi Michael,
I finally figure out how to connect both calls using the command ‘intercept’. From the inbound call (handled by the OB socket) I just do an execute intercept legB uuid, and both calls are bridged perfectly. Thanks very much.
So the only thing that stills concerns me is why the event CHANNEL_ANSWER is always generated on the outbound call (legb), even if the user doesn’t pick up the call. Also I can’t find any differences on the CHANNEL_CALLSTATE or CALL_UPDATE events that allows me to determine when an outbound call generated from FS is actually answered or not.
Did you ever post the full call debug log with a siptrace? I don't recall seeing that...
BTW, I bought the FS 1.0.6 book on Amazon last week and I want to congratulate you and Anthony/Darren for the excellent work you’ve done, it has been really helpful. My only complaint is that it doesn’t have an eBook format so I can read it on my Kindle. Besides that, great work.
Yes, that complaint has been levied on more than one occasion. We've been imploring Packt to rectify the situation. We'll keep you posted on the status.
-MC
_______________________________________________ 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 (2)
-
Hector Geraldino
-
Michael Collins