[Freeswitch-users] CISCO 2811 Freeswitch IVR

Gustavo Mársico gustavomarsico at gmail.com
Thu Jan 5 19:51:59 MSK 2012


I think I've a similar problem related to callcenter app. When I made an originate like this:

originate loopback/2500/default/XML &bridge(user/2001)

2500 is an extension that leads to a callcenter application. In this case, we dial first to the queue and when an agent answered we call to the customer. As far as I know
When the A-leg reaches to the queue, without selecting an agent, the call is automatically sent to the B-leg. As far as I see, there is a pre-answer method that fs needs to send the media to A-leg. 
In order to try to avoid this, I tried using ignore_early_media=true as part of the originate in A-leg and/or B-leg, with no luck.

originate {ignore_early_media=true}loopback/2500/default/XML &bridge({ignore_early_media=true}user/2001)

Dialplan: loopback/2500-b Regex (PASS) [CallCenter_Click2Call] destination_number(2500) =~ /^(2500)$/ break=on-false
Dialplan: loopback/2500-b Action set(ignore_early_media=true) 
Dialplan: loopback/2500-b Action callcenter(click2call) 
2012-01-05 13:36:08.541517 [DEBUG] switch_core_state_machine.c:154 (loopback/2500-b) State Change CS_ROUTING -> CS_EXECUTE
2012-01-05 13:36:08.541517 [DEBUG] switch_core_session.c:1180 Send signal loopback/2500-b [BREAK]
2012-01-05 13:36:08.541517 [DEBUG] mod_loopback.c:475 loopback/2500-b CHANNEL KILL
2012-01-05 13:36:08.541517 [DEBUG] switch_core_state_machine.c:410 (loopback/2500-b) State ROUTING going to sleep
2012-01-05 13:36:08.541517 [DEBUG] switch_core_state_machine.c:362 (loopback/2500-b) Running State Change CS_EXECUTE
2012-01-05 13:36:08.541517 [DEBUG] switch_core_state_machine.c:417 (loopback/2500-b) State EXECUTE
2012-01-05 13:36:08.541517 [DEBUG] mod_loopback.c:375 loopback/2500-b CHANNEL EXECUTE
2012-01-05 13:36:08.541517 [DEBUG] switch_core_state_machine.c:192 loopback/2500-b Standard EXECUTE
EXECUTE loopback/2500-b set(open=true)
2012-01-05 13:36:08.541517 [DEBUG] mod_dptools.c:1286 loopback/2500-b SET [open]=[true]
EXECUTE loopback/2500-b hash(insert/10.8.0.70-spymap/0000000000/fef7d864-b3c7-407c-a6e1-94386642bfbb)
EXECUTE loopback/2500-b hash(insert/10.8.0.70-last_dial/0000000000/2500)
EXECUTE loopback/2500-b hash(insert/10.8.0.70-last_dial/global/fef7d864-b3c7-407c-a6e1-94386642bfbb)
EXECUTE loopback/2500-b set(RFC2822_DATE=Thu, 05 Jan 2012 13:36:08 -0300)
2012-01-05 13:36:08.541517 [DEBUG] mod_dptools.c:1286 loopback/2500-b SET [RFC2822_DATE]=[Thu, 05 Jan 2012 13:36:08 -0300]
EXECUTE loopback/2500-b set(ignore_early_media=true)
2012-01-05 13:36:08.541517 [DEBUG] mod_dptools.c:1286 loopback/2500-b SET [ignore_early_media]=[true]
2012-01-05 13:36:08.541517 [DEBUG] switch_core_session.c:2133 Application callcenter Requires media! pre_answering channel loopback/2500-b
2012-01-05 13:36:08.541517 [NOTICE] mod_loopback.c:760 Pre-Answer loopback/2500-a!
2012-01-05 13:36:08.541517 [DEBUG] switch_channel.c:2930 (loopback/2500-a) Callstate Change RINGING -> EARLY
2012-01-05 13:36:08.541517 [DEBUG] switch_core_session.c:729 Send signal loopback/2500-b [BREAK]
2012-01-05 13:36:08.541517 [DEBUG] mod_loopback.c:475 loopback/2500-b CHANNEL KILL
2012-01-05 13:36:08.541517 [NOTICE] switch_core_session.c:2135 Pre-Answer loopback/2500-b!
2012-01-05 13:36:08.541517 [DEBUG] switch_channel.c:2930 (loopback/2500-b) Callstate Change RINGING -> EARLY
EXECUTE loopback/2500-b callcenter(click2call)
2012-01-05 13:36:08.541517 [DEBUG] switch_channel.c:3188 (loopback/2500-a) Callstate Change EARLY -> ACTIVE
2012-01-05 13:36:08.541517 [NOTICE] mod_loopback.c:755 Channel [loopback/2500-a] has been answered
2012-01-05 13:36:08.541517 [DEBUG] switch_core_session.c:729 Send signal loopback/2500-b [BREAK]
2012-01-05 13:36:08.541517 [DEBUG] mod_loopback.c:475 loopback/2500-b CHANNEL KILL
2012-01-05 13:36:08.541517 [DEBUG] switch_ivr_originate.c:3266 Originate Resulted in Success: [loopback/2500-a]
2012-01-05 13:36:08.541517 [DEBUG] switch_channel.c:3188 (loopback/2500-b) Callstate Change EARLY -> ACTIVE
2012-01-05 13:36:08.541517 [INFO] switch_channel.c:2708 loopback/2500-a Flipping CID from "" <0000000000> to "Outbound Call" <XML>




On Jan 5, 2012, at 4:17 AM, Oliver Schenk wrote:

> Also, maybe I should be doing something like this:
> 
> sofia/gateway/mygatewayname/1091234567 '&managed(ivrAppName)'
> 
> instead of:
> 
> sofia/internal/1091234567 at 192.168.x.x '&managed(ivrAppName)'
> 
> 
> but, I don't really have the CISCO configured as a gateway, nor do I
> know how really...probably not on the right track there.
> 
> 
> 
> 
> On Thu, Jan 5, 2012 at 3:06 PM, Oliver Schenk <olimonkey at gmail.com> wrote:
>> *bump*
>> 
>> 
>> So I think maybe the way I'm doing the originate is the problem? In my
>> call string I'm creating a connection directly from the CISCO
>> (192.168.x.x) to the managed application, which may be why it starts
>> playing straight away?
>> 
>> Maybe I should be originating a call first and then only once I know
>> the other side has picked up will I bridge the call to the IVR managed
>> application.
>> 
>> Problem is I dunno how to tell whether the other person has picked up
>> (or even if the cisco is going to tell me) and I don't know how to do
>> things to a call once it has been established.
>> 
>> 
>> I'm currently reading the Dialplan wiki page, hoping to get something
>> out of it there.
>> 
>> 
>> Cheers
>> 
>> Oliver
>> 
>> 
>> On Tue, Jan 3, 2012 at 11:46 AM, Oliver Schenk <olimonkey at gmail.com> wrote:
>>> I've been battling while creating an IVR using FreeSWITCH mod_managed
>>> and connecting through a CISCO 2811. Most things now work quite well,
>>> but I am having a few issues with the way the system answers calls (or
>>> doesn't answer calls...).
>>> 
>>> I have FreeSWITCH running as a windows service on Windows Server 2008,
>>> which is connected via LAN to a CISCO 2811 with a 4 port FXO card,
>>> which is then connected to a POTS phone line.
>>> 
>>> 
>>> Take the following scenario:
>>> 
>>> 1. Managed .NET application creates a call string and uses ESL to talk
>>> to freeswitch and originate a call:
>>> 
>>> string callstring =
>>> "{bridge_answer_timeout=20,ignore_early_media=true,call_timeout=20}sofia/internal/1091234567 at 192.168.x.x
>>> '&managed(ivrAppName)'";
>>> eslConnection.API("originate", callstring);
>>> 
>>> where 192.168.x.x is the CISCO IP.
>>> 
>>> 2. The CISCO sees that the phone number (1091234567) starts with a 1
>>> so it uses FXO port 1 and strips the 1 and uses the remaining phone
>>> number (091234567) to make the call.
>>> 
>>> 3. My phone rings, I pick up and I can hear my IVR playing.
>>> 
>>> 
>>> 
>>> These are my current problems:
>>> 
>>> - IVR starts playing before I even pick up the phone. This means that
>>> if the system calls a mobile phone and the person doesn't pick up, the
>>> IVR will start playing and eventually the mobile phone will divert to
>>> voice mail. Obviously I then get a missed call and an sms saying I
>>> have a new voice mail, which is annoying. Instead I would like it to
>>> KNOW that no one has picked up, but I don't know how to do this.
>>> Somehow the CISCO needs to be able to tell FreeSWITCH that the call
>>> has not yet been answered. For some reason however as soon as the
>>> CISCO starts calling FreeSWITCH thinks the call is already connected.
>>> It doesn't know that the CISCO is actually still ringing. Maybe I'm
>>> doing originate the wrong way or something ...
>>> 
>>> - The phone only rings for about 10 seconds before hanging up. I've
>>> tried "call_timeout", "bridge_answer_timeout". I've also tried setting
>>> CISCO "ring number". Nothing works, my phone still only rings for
>>> about 10 seconds. I don't know if this is a FreeSWITCH issue or a
>>> CISCO issue. I'm leaning towards CISCO, because FreeSWITCH IVR just
>>> starts playing even if no one answers the phone.
>>> 
>>> 
>>> 
>>> 
>>> 
>>> CISCO Config for relevant FXO port:
>>> 
>>> voice service voip
>>>  allow-connections h323 to h323
>>>  allow-connections h323 to sip
>>>  allow-connections sip to h323
>>>  allow-connections sip to sip
>>>  no supplementary-service h450.2
>>>  no supplementary-service h450.3
>>>  supplementary-service h450.12
>>>  no supplementary-service sip moved-temporarily
>>>  no supplementary-service sip refer
>>>  fax protocol cisco
>>>  sip
>>>  registrar server expires max 3600 min 3600
>>>  no update-callerid
>>>  no call service stop
>>> 
>>> voice-port 0/3/2
>>>  output attenuation -3
>>>  no comfort-noise
>>>  cptone AU
>>>  impedance complex1
>>>  caller-id enable
>>> !
>>> dial-peer voice 100 pots
>>>  preference 1
>>>  destination-pattern 1T
>>>  port 0/3/2
>>> !
>>> 
>>> 
>>> 
>>> Many Thanks,
>>> 
>>> Oliver
> 
> _________________________________________________________________________
> Professional FreeSWITCH Consulting Services:
> consulting at freeswitch.org
> http://www.freeswitchsolutions.com
> 
> 
> 
> 
> Official FreeSWITCH Sites
> http://www.freeswitch.org
> http://wiki.freeswitch.org
> http://www.cluecon.com
> 
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org




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