[Freeswitch-users] Detecting multiple tones with freeswitch

Michael Jerris mike at jerris.com
Mon Jan 5 21:02:01 MSK 2015


You can never reliably depend on the tones, particularly with international traffic.  This is never going to work reliably unless you get useful sip signaling.  I would be demanding the carrier change settings back.


> On Jan 3, 2015, at 7:46 AM, Bunea Lucian <lucibunea at gmail.com> wrote:
> 
> Hello,
> 
> My SIP provider (Vodafone) decided to make me a Christmas present: they 
> change the configuration of their SIP server.
> 
> Using the old configuration they were sending SIP codes for decline, 
> busy and unavailable.
> Now they are sending early media with tones (for decline and busy) and a 
> one minute message for unavailable.
> Each status is followed by a SIP/480.
> 
> Since I need to be able to distinguish between different statuses, I 
> have determined the following:
> - if I don't receive a ring tone within 7 second, the called number is 
> unavailable;
> - if I receive a busy tone within 4 seconds the called number is busy;
> - if I receive a busy tone after 4 second the call number has declined 
> the call;
> 
> This is how I tried to implement it:
> - after receiving early media (SIP/180 or SIP/183) a timer is started 
> for call hangup (sched_hangup)
> - if I receive a ring tone within 7 seconds the timer is canceled 
> (sched_cancel);
> - if I receive a busy tone a lua script is called;
> 
> 
> <action application="set" data="sip_ignore_remote_cause=true"/>
> <action application="set" data="execute_on_media=sched_hangup +7 
> SUBSCRIBER_ABSENT"/>
> 
> <action application="tone_detect" data="busy 425 w +60000 lua 
> 'busy_detected.lua ${uuid} ${created_time}' 2"/>
> <action application="tone_detect" data="ring 450 w +7000 sched_cancel"/>
> 
> <action application="bridge" 
> data="sofia/external/${destination_number}@XXX.XXX.XXX.XXX"/>
> 
> But, for some reason, the tones are detected, but the applications are 
> never called.
> 
> 
> If I add one of the following lines to the dialplan the corresponding 
> application is called:
> 
>  <action application="set" data="execute_on_tone_detect=sched_cancel"/>
> 
> or
> 
>  <action application="set" data="execute_on_tone_detect=lua 
> busy_detected.lua ${uuid} ${created_time}"/>
> 
> but I can't tell which tone was detected...
> 
> What am I missing?
> 
> PS: Tested with FreeSWITCH Version 1.4.14-1~64bit.
> 
>  Regards,
> Lucian




Join us at ClueCon 2016 Aug 8-12, 2016
More information about the FreeSWITCH-users mailing list