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@softins.co.uk - http://www.softins.co.uk
Play: tony@mountifield.org - http://tony.mountifield.org