[Asterisk-Users] DTMF oddity with OH323

Tony Mountifield tony at softins.clara.co.uk
Fri May 6 03:40:23 MST 2005


I've recently started using OH323 channels, having previously used IAX.
When receiving DTMF input from a caller (I'm using WAIT FOR DATA in AGI),
the OH323 channel is supplying a "space" digit between each real digit.
This didn't happen with IAX.

Here is the "full" log with verbose=9 and debug=9 and agi debug:

AGI Rx << GET DATA announcement 4000 4
May  6 11:24:53 DEBUG[17236]: Set channel OH323/R22348 to write format slin
May  6 11:24:53 DEBUG[17236]: OH323/R22348: Created smoother (size=320, format=8).
May  6 11:24:53 DEBUG[17236]: Scheduling timer at 160 sample intervals
May  6 11:24:53 VERBOSE[17236]:     -- Playing 'announcement' (language 'en')
May  6 11:24:55 DEBUG[17237]: ENTER exception_h323_connection.
May  6 11:24:55 DEBUG[17237]: Call 'ip$xxx.xx.xxx.x:41161/22348' has exception USER_INPUT_TONE.
May  6 11:24:55 DEBUG[17237]: LEAVE exception_h323_connection.
May  6 11:24:55 DEBUG[17236]: OH323/R22348: Channel has generated an exception.
May  6 11:24:55 DEBUG[17236]: ENTER oh323_exception.
May  6 11:24:55 DEBUG[17236]: OH323/R22348: Got DTMF 1.
May  6 11:24:55 DEBUG[17236]: LEAVE oh323_exception.
May  6 11:24:55 DEBUG[17236]: Scheduling timer at 0 sample intervals
May  6 11:24:55 DEBUG[17236]: Set channel OH323/R22348 to write format alaw
May  6 11:24:56 DEBUG[17237]: ENTER exception_h323_connection.
May  6 11:24:56 DEBUG[17237]: Call 'ip$xxx.xx.xxx.x:41161/22348' has exception USER_INPUT_TONE.
May  6 11:24:56 DEBUG[17237]: LEAVE exception_h323_connection.
May  6 11:24:56 DEBUG[17236]: OH323/R22348: Channel has generated an exception.
May  6 11:24:56 DEBUG[17236]: ENTER oh323_exception.
May  6 11:24:56 DEBUG[17236]: OH323/R22348: Got DTMF  .
May  6 11:24:56 DEBUG[17236]: LEAVE oh323_exception.
May  6 11:24:56 DEBUG[17237]: ENTER exception_h323_connection.
May  6 11:24:56 DEBUG[17237]: Call 'ip$xxx.xx.xxx.x:41161/22348' has exception USER_INPUT_TONE.
May  6 11:24:56 DEBUG[17237]: LEAVE exception_h323_connection.
May  6 11:24:56 DEBUG[17236]: OH323/R22348: Channel has generated an exception.
May  6 11:24:56 DEBUG[17236]: ENTER oh323_exception.
May  6 11:24:56 DEBUG[17236]: OH323/R22348: Got DTMF 3.
May  6 11:24:56 DEBUG[17236]: LEAVE oh323_exception.
May  6 11:24:56 DEBUG[17237]: ENTER exception_h323_connection.
May  6 11:24:56 DEBUG[17237]: Call 'ip$xxx.xx.xxx.x:41161/22348' has exception USER_INPUT_TONE.
May  6 11:24:56 DEBUG[17237]: LEAVE exception_h323_connection.
May  6 11:24:56 DEBUG[17236]: OH323/R22348: Channel has generated an exception.
May  6 11:24:56 DEBUG[17236]: ENTER oh323_exception.
May  6 11:24:56 DEBUG[17236]: OH323/R22348: Got DTMF  .
May  6 11:24:56 DEBUG[17236]: LEAVE oh323_exception.
May  6 11:24:56 VERBOSE[17236]: AGI Tx >> 200 result=1 3 
May  6 11:24:56 VERBOSE[17236]: AGI Tx >> 200 result=1 3 
AGI Rx << WAIT FOR DIGIT 4000
May  6 11:24:56 DEBUG[17237]: ENTER exception_h323_connection.
May  6 11:24:56 DEBUG[17237]: Call 'ip$xxx.xx.xxx.x:41161/22348' has exception USER_INPUT_TONE.
May  6 11:24:56 DEBUG[17237]: LEAVE exception_h323_connection.
May  6 11:24:56 DEBUG[17236]: OH323/R22348: Channel has generated an exception.
May  6 11:24:56 DEBUG[17236]: ENTER oh323_exception.
May  6 11:24:56 DEBUG[17236]: OH323/R22348: Got DTMF 2.
May  6 11:24:56 DEBUG[17236]: LEAVE oh323_exception.
May  6 11:24:56 VERBOSE[17236]: AGI Tx >> 200 result=50
May  6 11:24:56 VERBOSE[17236]: AGI Tx >> 200 result=50
AGI Rx << WAIT FOR DIGIT 4000
May  6 11:24:56 DEBUG[17237]: ENTER exception_h323_connection.
May  6 11:24:56 DEBUG[17237]: Call 'ip$xxx.xx.xxx.x:41161/22348' has exception USER_INPUT_TONE.
May  6 11:24:56 DEBUG[17237]: LEAVE exception_h323_connection.
May  6 11:24:56 DEBUG[17236]: OH323/R22348: Channel has generated an exception.
May  6 11:24:56 DEBUG[17236]: ENTER oh323_exception.
May  6 11:24:56 DEBUG[17236]: OH323/R22348: Got DTMF  .
May  6 11:24:56 DEBUG[17236]: LEAVE oh323_exception.
May  6 11:24:56 VERBOSE[17236]: AGI Tx >> 200 result=32
May  6 11:24:56 VERBOSE[17236]: AGI Tx >> 200 result=32
AGI Rx << WAIT FOR DIGIT 4000
May  6 11:24:57 DEBUG[17237]: ENTER exception_h323_connection.
May  6 11:24:57 DEBUG[17237]: Call 'ip$xxx.xx.xxx.x:41161/22348' has exception USER_INPUT_TONE.
May  6 11:24:57 DEBUG[17237]: LEAVE exception_h323_connection.
May  6 11:24:57 DEBUG[17236]: OH323/R22348: Channel has generated an exception.
May  6 11:24:57 DEBUG[17236]: ENTER oh323_exception.
May  6 11:24:57 DEBUG[17236]: OH323/R22348: Got DTMF 2.
May  6 11:24:57 DEBUG[17236]: LEAVE oh323_exception.
May  6 11:24:57 VERBOSE[17236]: AGI Tx >> 200 result=50
May  6 11:24:57 VERBOSE[17236]: AGI Tx >> 200 result=50
[...etc...]

Notice that GET DATA for 4 digits is returning with "1 3 " when I tried
to enter "1322". I then have further calls to WAIT FOR DIGIT which
alternately return digit and space.

Is this an error in chan_oh323, or an upstream setting? My guess is that
the "space" tones are indicating "key-up", i.e. the end of the tone.

I would be inclined to ignore the "space" exception in the function
oh323_exception(), as follows:

--- chan_oh323.c        2005-04-18 21:20:30.000000000 +0100
+++ chan_oh323.c.new    2005-05-06 11:36:03.000000000 +0100
@@ -1164,7 +1164,7 @@
                        p->fr.subclass = AST_CONTROL_FLASH;
                        if (option_debug)
                                ast_log(LOG_DEBUG, "%s: Got flash hook.\n", c->name);
-               } else {
+               } else if (p->except_struct.data[0] != ' ') {
                        p->fr.frametype = AST_FRAME_DTMF;
                        p->fr.subclass = p->except_struct.data[0];
                        if (option_debug)

I'm using v0.6.5 of chan_oh323 with Asterisk CVS-STABLE.

Comments?

Cheers
Tony
-- 
Tony Mountifield
Work: tony at softins.co.uk - http://www.softins.co.uk
Play: tony at mountifield.org - http://tony.mountifield.org



More information about the asterisk-users mailing list