WARNING: this is an automatic post retrieved from the Asterisk-Users Mailing List, not an authored post
Mailing-list Collector
February 01, 2012
Asterisk-Users
Tags: call, call play, caller, circumstances, dtmf digits, extension, incoming calls, message
Hi,
I want to create a system for incoming calls where, under some
circumstances, callers get routed straight to voicemail (or some other
means of recording a message) but if they enter a valid extension number
then the recorded message would be abandoned and they’d be diverted to
the extension number they entered.
I realise this can be done with the voicemail app with operator=yes but
the problem with this is that the caller has to press 0 while the
announcement is being played. If they’re too slow and recording has
started, they’ve missed the opportunity.
So I played around with ConfBridge and a couple of call files, just to
see if I could get it to work. It’s a bit convoluted but the idea is
that the caller gets silently put into a conference, then two call files
make asterisk silently connect to other calls into the same conference,
with one doing the recording and the other using Read() to collect
digits.
If I just had the caller and one of the other calls in the conference
(the one doing Read()) then this worked – Read() managed to read the
DTMF digits and assign them to a variable.
However, when the ‘recording’ call is also in the conference, the ‘read’
call can no longer recognise the DTMF digits. To test, I made the ‘read’
call play a sound before calling Read() and I could hear this being
played so the call was definitely there. However, regardless of the
number of digits I pressed, Read() didn’t notice any of them, even if I
introduced a delay so that the other channels were quiet before the call
to Read().
I realise this might seem a bit like a mad solution but can anyone else
think of a way to get Asterisk to read (and react to) DTMF digits during
a recording?
This is with Asterisk 1.8.7.