Single sided DTMF detection?


#1

Does anyone know if it is possible for the Asterisk server to detect DTMF tones without the other party hearing the beeps?

For example, two people are talking via the Asterisk server: one person enters some DTMP keys but the other person does not hear it. However, the Asterisk server does ‘hear’ it and it is recorded in a database.

Application: Interview between a supervisor and a potential employee. The supervisor talks to the potential employee via the phone and the Asterisk server is recording the call. The supervisor enters DTMF tones [using Analog phone behind Linksys phone adapter] (e.g., 1*) to mean different things. Those DTMF tones are logged in a database for real-time and post-programming.

Later, when the call is replayed using a Media player, the DTMF digits pressed by the supervisor are displayed. The potential employee never heard the DTMF digits pressed.

Thanks in advance for any ideas or suggestions.


#2

Asterisk does not have the ability to ‘mask’/‘mute’ the DTMF from an endpoint, therefore the person being interviewed would hear them. Why not create a simple PHP script integrated to Asterisk that captures the same information and stores it in a database along with a URL to the recorded file?


#3

Thank you. This is good to know. Yes, I will explore a PHP script. The customer anticipates many interactions using only the phone (i.e., cell)


#4

jaybo, how do you manage to record DTMF tones to database ?
I have similar goal but can’t cope with it.
I call from SIP1 to SIP2 and SIP2 is a gateway to outer world. So I have bridged call SIP1-SIP2. Then I dial DTMF keys that are passed to SIP2 (and goes to outer world) and I need to catch/store them.
I expected to see some dtmf events in AGI but there are no any. Should I enable them somehow ?
Asterisk recognizes them because I see it in console in channel debug.

Thank you in advance,
Alex


#5

hurray, it seems I found a way to determine dtmf pressed.
I added:
dtmf => dtmf
into /etc/asterisk/logger.conf

and now I had a file /var/log/asterisk/dtmf with the lines I need:
Oct 22 16:25:23 DTMF[7033] channel.c: SIP/83-9b5e : 0
Oct 22 16:25:25 DTMF[7033] channel.c: SIP/83-9b5e : 0
Oct 22 16:25:28 DTMF[7039] channel.c: SIP/82-acf3 : 7
Oct 22 16:25:29 DTMF[7039] channel.c: SIP/82-acf3 : 0
Oct 22 16:25:29 DTMF[7039] channel.c: SIP/82-acf3 : 3

But is it the right decision or there are any other good ways ?