[Freeswitch-dev] Detecting in-band DTMF Digits in Openzap?

Alex Green alexg at etherstack.com
Mon Aug 10 22:17:58 PDT 2009


Thanks Moises, do I need to do a flush_dtmf() or set values for DTMF 
on/off period, or anything else?

zap_channel_dequeue_dtmf() correctly identifies the digit, but if the 
digit is held down it is detected more than once. I am using a frame 
size of 160 for the read.

Thanks again, -alex




Moises Silva wrote:
> On Mon, Aug 10, 2009 at 10:26 PM, Alex Green <alexg at etherstack.com 
> <mailto:alexg at etherstack.com>> wrote:
> 
>     For FXO I switch back to the dialtone state and collect the digits via
>     the ZAP_SIGEVENT_COLLECTED_DIGIT call back (which is a little bit ugly
>     and does not allow dial ahead, but it works). 
> 
> 
> Sounds way too ugly, I don't think you should be doing that.
>  
> 
>     DIALTONE' is printed if you try). Openzap must be able to detect digits
>     during a call, but I am having trouble figuring out how.
> 
>     ie. How do you use Openzap to detect in-band DTMF digits during a call?
> 
> 
> Take a look at mod_openzap/mod_openzap.c, on_clear_channel_signal()
> 
> It seem to me you should do the same.
> 
> zap_channel_command(sigmsg->channel, ZAP_COMMAND_ENABLE_DTMF_DETECT, 
> &tt); where tt = ZAP_TONE_DTMF and sigmsg->channel is the zap_channel_t
> 
> That will enable the DTMF detection feature in the channel (either in 
> software or hardware if its available).
> 
> After enabling that feature, you can use zap_channel_dequeue_dtmf(zchan, 
> dtmf, sizeof(dtmf)); to dequeue DTMF after calling zap_channel_read(), 
> since there is where dtmf (if any) is enqueued. Check zap_channel_read 
> so you can see how the DTMF is detected and enqueued.
> 
> If you don't want to call zap_channel_dequeue_dtmf on each read (or you 
> can't), then register an event callback for the span with 
> zap_span_set_event_callback(), then your code will be called with 
> ZAP_EVENT_DTMF when dtmf is received in any channel on that span.
> 
> Hope that helps,
> 
> -- 
> 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 at sangoma.com <mailto:moy at sangoma.com>
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> FreeSWITCH-dev mailing list
> FreeSWITCH-dev at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
> http://www.freeswitch.org



More information about the FreeSWITCH-dev mailing list