[Asterisk-Users] DTMF and Access Codes

Greg Hill gregh-asterisk at hillnet.us
Wed Nov 10 18:21:56 MST 2004


On Wed, 10 Nov 2004, Nathan Bowyer wrote:

> I have a problem which I've found quite strange, to say the least.  I
> have a client who uses long distance access codes from their LD
> provider.  The codes are 4-digits, nothing extraordinary there.  The
> problem is, if you dial the digits quickly, without pauses inbetween
> them, the LD company does not recognize those digits.  If you dial the
> code slowly, everything works.
>
> Phones I'm using are Cisco 7960G phones, * is connected by PRI to the
> PSTN.  7960Gs are on SIP v6.3
>
> If I set the phones to use inband DTMF, and Asterisk to use rfc2833, the
> LD codes work no matter how fast or slow I key them in.  It Just Works.
> If I set both Asterisk and the Phone to either inband or rfc2833, fast
> digit dialing breaks the LD codes.
>
> Anyone ever see anything like this before, or know of any way to fix it?

My guess at the reason why "It Just Works (tm)" with the phone set to
inband and Asterisk set to rfc2833 is that Asterisk ignores your digits.
That is, by setting * to rfc2833 mode, you disable its built-in tone
detection routines. The tones go through just like your voice, Asterisk is
none the wiser, and the far end is happy to receive your data.

The reason for the breakage when Asterisk and the phone are using the same
DTMF method probably has something to do with Asterisk not relaying the
digits quickly enough, or maybe the duration of the tone generated by
Asterisk isn't long enough for the far end to catch it. Try calling
another phone, instead of the LD carrier, and listen to how the tones
sound, this may help narrow down the guesses about what's happening.

I had a similar problem accessing my Broadvoice voicemail. I was able to
use any IVR with my dtmfmode=inband for the broadvoice context in
sip.conf, with the exception of their voicemail system. It Just Didn't
Work. Someone suggested that when I dial any of their * codes, I set the
dtmfmode to rfc2833 for the duration of the call:
exten => _*XX,1,SIPDtmfMode(rfc2833)
exten => _*XX,2,Dial(SIP/${EXTEN}@broadvoice)
I've been able to listen to voicemail without any trouble, and other IVRs
still work too.

As I'm writing this I'm starting to doubt whether this will work for you,
though.. I suppose your users dial the long-distance number they wish to
call, and then an LD carrier IVR prompts them to enter the access code.
Upon success, the call gets connected. Right? I suppose you could still
try the above two-step process for all LD calls which go through that
carrier and see what happens.. (ie, whether the carrier picks up the
access code digits, and whether you can interact with an IVR in that call)

Maybe another option would be to track down how Asterisk decides how long
the DTMF tones should be generated, and increase that time.

Greg





More information about the asterisk-users mailing list