On Wed, Aug 12, 2009 at 3:26 AM, Alex Green <alexg@etherstack.com> wrote:
2.: Setting an event callback and waiting for ZAP_EVENT_DTMF works for in-band digits on a PRI channel.
Are you just pointing out that it works for PRI or implying that does not work for analog? for hardware DTMF I am sure this will NOT work, either for PRI or Analog.
3.: Potential bug: As suggested by Moises, adding extra logging in libteletone_detect.c shows that digits were detected, but the ZAP_EVENT_DTMF events were *not* sent back for an analog channel (I am using an Openvox A800p, but it looks to be the same for all analog cards).
you mean libteletone detects it but ZAP_EVENT_DTMF is not launched? the next test should be in zap_channel_read, which uses teletone_dtmf_detect and teletone_dtmf_get to retrieve DTMF and queue the DTMF, there you will be able to find out what is going on. 4.: Potential bug:
DTMF digit detection *eats some audio* each time a digit is detected. If the device is connected directly to free switch this is not a problem. If a device makes a call through freeswitch (to let's say phone banking) a digit that is held down may be detected as 3 digits (sometimes more) due to the consumed audio. This can be heard on the other side of freeswitch as a start-stop at the start of the DTMF.
Indeed ZAP_CHANNEL_SUPRESS_DTMF causes zap_channel_read to memset the read data each time a digit hit is found. The problem is that there is no DTMF_START and DTMF_END events and the DTMF length is lost, we just have a plain DTMF event for the start. Not sure about how to use libteletone to detect the DTMF end though. Anthony, Mike? care to comment about this one? -- Moises Silva Software Developer Sangoma Technologies Inc. | 50 McIntosh Drive, Suite 120, Markham ON L3R 9T3 Canada t. 1 905 474 1990 x 128 | e. moy@sangoma.com