[Home]

Summary:ASTERISK-15272: [patch] busydetect incorrectly hangs up incoming call due to incoming DTMF seen as busy pattern.
Reporter:Alec Davis (alecdavis)Labels:
Date Opened:2009-12-03 17:54:59.000-0600Date Closed:2009-12-20 03:07:21.000-0600
Priority:MinorRegression?No
Status:Closed/CompleteComponents:Channels/chan_dahdi
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) dtmf_busydetector.diff.txt
( 1) dtmf_busydetector.diff2.txt
( 2) Voicemail_Integration_patterns.pdf
Description:We're using WCTDM FXO modules for an IVR application/voicemail to a legacy PABX.

Users, and the legacy PABX sends DTMF digits, after dialing voice mail.

Users have these programmed into their phones, dial main number then pause, then dial known extension. The legacy PABX sends DTMF sequences immediately the call is answered, to advise VoiceMail that the call is from inside/out, a forwarded call due to non-answer etc.

Asterisk see's these repeated tone on/off patterns as busy signal and hangs up.
Having busydetect on is required, as with signalling=fxs_ls requires it.

****** ADDITIONAL INFORMATION ******

Attached, VoiceMail integration patterns.

Asterisk SVN-branch-1.6.1-r226977
DAHDI Version: 2.2.0 Echo Canceller: MG2
libpri version: SVN-branch-1.4-r1249
Comments:By: Alec Davis (alecdavis) 2009-12-03 18:09:50.000-0600

dialplan code to read VM Integration digits.

[voicemail]
exten => s,1,Answer()
;Read(variable[,filename[&filename2[&...]][,maxdigits[,options[,attempts[,timeout]]]]])
exten => s,n,Read(fujitsu,bdt/GT001100.GRT,10,,0,5)
exten => s,n,NoOp(received ${fujitsu})
exten => s,n,Goto(ivr-bdt-daytime,s,1)

Console ouputs below, both dialled from the same Fujitsu extension number - 4866.

<b><u>CORRECT: Console output with 'busydetect=no'</u></b>
[Dec  4 12:52:36] NOTICE[16111]: chan_dahdi.c:7549 ss_thread: Got event 18 (Ring Begin)...
[Dec  4 12:52:37] NOTICE[16111]: chan_dahdi.c:7549 ss_thread: Got event 2 (Ring/Answered)...
[Dec  4 12:52:39] NOTICE[16111]: chan_dahdi.c:7549 ss_thread: Got event 18 (Ring Begin)...
   -- Executing [s@voicemail:1] Answer("DAHDI/65-1", "") in new stack
   -- Executing [s@voicemail:2] Read("DAHDI/65-1", "fujitsu,bdt/GT001100.GRT,10,,0,5") in new stack
   -- Accepting a maximum of 10 digits.
   -- <DAHDI/65-1> Playing 'bdt/GT001100.GRT.gsm' (language 'en')
   -- User entered 'C14866'
   -- Executing [s@voicemail:3] NoOp("DAHDI/65-1", "received C14866") in new stack
   -- Executing [s@voicemail:4] Goto("DAHDI/65-1", "ivr-bdt-daytime,s,1") in new stack
   -- Goto (ivr-bdt-daytime,s,1)
   -- Executing [s@ivr-bdt-daytime:1] Answer("DAHDI/65-1", "") in new stack
   -- Executing [s@ivr-bdt-daytime:2] BackGround("DAHDI/65-1", "bdt/GT001100.GRT") in new st

<b><u>INCORRECT: Console output with 'busydetect=yes'</u></b>
[Dec  4 12:57:32] NOTICE[16624]: chan_dahdi.c:7549 ss_thread: Got event 18 (Ring Begin)...
[Dec  4 12:57:33] NOTICE[16624]: chan_dahdi.c:7549 ss_thread: Got event 2 (Ring/Answered)...
[Dec  4 12:57:34] NOTICE[16624]: chan_dahdi.c:7549 ss_thread: Got event 18 (Ring Begin)...
   -- Executing [s@voicemail:1] Answer("DAHDI/65-1", "") in new stack
   -- Executing [s@voicemail:2] Read("DAHDI/65-1", "fujitsu,bdt/GT001100.GRT,10,,0,5") in new stack
   -- Accepting a maximum of 10 digits.
   -- <DAHDI/65-1> Playing 'bdt/GT001100.GRT.gsm' (language 'en')
   <b><u>-- User disconnected</b></u>
   <b><u>-- Hungup 'DAHDI/65-1'</b></u>



By: Alec Davis (alecdavis) 2009-12-06 04:30:37.000-0600

uploaded dtmf_busydetector.diff.txt

These tests are with a PBX that initially sends DTMF to indicated status.

tested with:
busydetect=no. After dialling in and seeing the DTMF arrive, then hangup, approx 20 seconds later the channel hangup the call. This result was also the case before the attached patch.

busydetect=yes. After dialling in and seeing the DTMF arrive, then hangup, approx 5 seconds later asterisk hungup the channel, If I didn't hangup, call proceeded as normal. Without the patch, asterisk would hangup the channel on the caller after the 4th DTMF digit, with busycount=4 and busydetect=yes.

By: Michiel van Baak (mvanbaak) 2009-12-09 03:29:45.000-0600

As discussed on #asterisk-dev, moved to the asterisk project with category Core/PBX

By: Tzafrir Cohen (tzafrir) 2009-12-09 03:32:38.000-0600

Issue is not a chan_dahdi issue, but I can't find a Core/DSP category, and IIRC only chan_dahdi uses the busy-detect code.

By: Digium Subversion (svnbot) 2009-12-14 21:05:00.000-0600

Repository: asterisk
Revision: 234897

U   trunk/main/dsp.c

------------------------------------------------------------------------
r234897 | alecdavis | 2009-12-14 21:04:59 -0600 (Mon, 14 Dec 2009) | 9 lines

restarts busydetector (if enabled) when DTMF is received.

 (closes issue ASTERISK-15272)
 Reported by: alecdavis
 Tested by: alecdavis
 Patch
dtmf_busydetector.diff.txt uploaded by alecdavis (license 585)


------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=234897

By: Digium Subversion (svnbot) 2009-12-14 21:08:54.000-0600

Repository: asterisk
Revision: 234898

_U  branches/1.6.2/
U   branches/1.6.2/main/dsp.c

------------------------------------------------------------------------
r234898 | alecdavis | 2009-12-14 21:08:54 -0600 (Mon, 14 Dec 2009) | 9 lines

restarts busydetector (if enabled) when DTMF is received.

 (closes issue ASTERISK-15272)
 Reported by: alecdavis
 Tested by: alecdavis
 Patch
dtmf_busydetector.diff.txt uploaded by alecdavis (license 585)


------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=234898

By: Digium Subversion (svnbot) 2009-12-14 21:10:37.000-0600

Repository: asterisk
Revision: 234899

_U  branches/1.6.1/
U   branches/1.6.1/main/dsp.c

------------------------------------------------------------------------
r234899 | alecdavis | 2009-12-14 21:10:37 -0600 (Mon, 14 Dec 2009) | 9 lines

restarts busydetector (if enabled) when DTMF is received.

 (closes issue ASTERISK-15272)
 Reported by: alecdavis
 Tested by: alecdavis
 Patch
dtmf_busydetector.diff.txt uploaded by alecdavis (license 585)


------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=234899

By: Alec Davis (alecdavis) 2009-12-20 02:17:40.000-0600

During a call, if the calling party repeatably pressed a key at the right rate, if busy detect was enabled, the call could still be terminated.

uploaded dtmf_busydetector.diff2.txt



By: Alec Davis (alecdavis) 2009-12-20 02:52:03.000-0600

Console output: Showing user repeatably pressing the "7" key.
With debug print, also with the code commented out that actually resets the historicsilence and historicnoise buffers.

   -- <DAHDI/5-1> Playing 'invalid.gsm' (language 'en')
[Dec 20 21:47:52] WARNING[31440]: dsp.c:1413 ast_dsp_process: DTMF Detected - Should Reset busydetector
[Dec 20 21:47:52] WARNING[31440]: dsp.c:1413 ast_dsp_process: DTMF Detected - Should Reset busydetector
[Dec 20 21:47:53] WARNING[31440]: dsp.c:1413 ast_dsp_process: DTMF Detected - Should Reset busydetector
 == Spawn extension (ivr2-bdt-night, i, 2) exited non-zero on 'DAHDI/5-1'
   -- Executing [h@ivr2-bdt-night:1] Verbose("DAHDI/5-1", "0,'' IVR-NIGHT  Hangup") in new stack
'' IVR-NIGHT  Hangup
   -- Hanging up on 'DAHDI/5-1'
   -- Hungup 'DAHDI/5-1'



By: Digium Subversion (svnbot) 2009-12-20 02:58:23.000-0600

Repository: asterisk
Revision: 235775

U   branches/1.6.2/main/dsp.c

------------------------------------------------------------------------
r235775 | alecdavis | 2009-12-20 02:58:22 -0600 (Sun, 20 Dec 2009) | 8 lines

restarts busydetector (if enabled) when DTMF is received after call is bridged.

 (closes issue ASTERISK-15272)
 Reported by: alecdavis
 Tested by: alecdavis
 Patch
   dtmf_busydetector.diff2.txt uploaded by alecdavis (license 585)

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=235775

By: Digium Subversion (svnbot) 2009-12-20 03:07:20.000-0600

Repository: asterisk
Revision: 235776

U   branches/1.6.1/main/dsp.c

------------------------------------------------------------------------
r235776 | alecdavis | 2009-12-20 03:07:20 -0600 (Sun, 20 Dec 2009) | 8 lines

restarts busydetector (if enabled) when DTMF is received after call is bridged.

 (closes issue ASTERISK-15272)
 Reported by: alecdavis
 Tested by: alecdavis
 Patch
   dtmf_busydetector.diff2.txt uploaded by alecdavis (license 585)

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=235776