Junction Networks and no inbound DTMF detection on IAX

We finally had our numbers ported over to Junction Networks today from our previous IAX provider and I can’t seem to figure something out. When someone calls in and listens to the main menu, no DTMF tones are recognized whatsoever when the user goes to enter an extension or make a selection. With my old provider this worked without a problem. This only happens on inbound calls. If I call my external PSTN line, then transfer myself over to the same IVR menu, everything works perfectly. I can also dial the menu’s extension from any phone in the office and it works just fine. Anyone have any ideas what is going on?

I’ve made sure the jitterbuffer option was set to no and I’ve also made sure that the connection is made in ulaw. This has been tested from many different phones and many different carriers, all with the same result. Here is my iax.conf file:

[general]
register => myusername:mypassword@iax.jnctn.net

bandwidth=low

disallow=lpc10 ; Icky sound quality… Mr. Roboto.

jitterbuffer=no
forcejitterbuffer=no
tos=lowdelay
autokill=yes

[jnctn]
type=user
auth=rsa
inkeys=jnctn
context=incoming-calls
disallow=all
allow=ulaw
jitterbuffer=no

[jnctn_out]
type=peer
host=iax.jnctn.net
username=myusername
secret=mypassword

Now, here is the output from iax2 debug command when the menu receives a call:

IAX2 Debugging Enabled
Rx-Frame Retry[ No] – OSeqno: 000 ISeqno: 000 Type: IAX Subclass: NEW
Timestamp: 00018ms SCall: 00180 DCall: 00000 [66.227.100.30:4569]
VERSION : 2
CALLED NUMBER : 11231231234
CODEC_PREFS : (ulaw|alaw|gsm|g726|g729|g723)
CALLING NUMBER : 1234561234
CALLING PRESNTN : 0
CALLING TYPEOFN : 0
CALLING TRANSIT : 0
CALLING NAME : 1234561234
LANGUAGE : en
USERNAME : jnctn
FORMAT : 4
CAPABILITY : 63775
ADSICPE : 2
DATE TIME : 2006-04-04 17:35:40

Tx-Frame Retry[000] – OSeqno: 000 ISeqno: 001 Type: IAX Subclass: AUTHREQ
Timestamp: 00007ms SCall: 00002 DCall: 00180 [66.227.100.30:4569]
AUTHMETHODS : 4
CHALLENGE : 10259882
USERNAME : jnctn

Rx-Frame Retry[ No] – OSeqno: 001 ISeqno: 001 Type: IAX Subclass: AUTHREP
Timestamp: 00050ms SCall: 00180 DCall: 00002 [66.227.100.30:4569]
RSA RESULT : iKh5RJI5UH89owFw…(too long)…

-- Accepting AUTHENTICATED call from 66.227.100.30:
   > requested format = ulaw,
   > requested prefs = (unknown),
   > actual format = ulaw,
   > host prefs = (ulaw),
   > priority = mine

Tx-Frame Retry[000] – OSeqno: 001 ISeqno: 002 Type: IAX Subclass: ACCEPT
Timestamp: 00039ms SCall: 00002 DCall: 00180 [66.227.100.30:4569]
FORMAT : 4

-- Executing Goto("IAX2/jnctn_out-2", "abc-office-incoming|1001|1") in new stack
-- Goto (abc-office-incoming,1001,1)
-- Executing Answer("IAX2/jnctn_out-2", "") in new stack

Tx-Frame Retry[000] – OSeqno: 002 ISeqno: 002 Type: CONTROL Subclass: ANSWER
Timestamp: 00042ms SCall: 00002 DCall: 00180 [66.227.100.30:4569]
– Executing Wait(“IAX2/jnctn_out-2”, “1”) in new stack
Rx-Frame Retry[ No] – OSeqno: 002 ISeqno: 002 Type: IAX Subclass: ACK
Timestamp: 00039ms SCall: 00180 DCall: 00002 [66.227.100.30:4569]
Rx-Frame Retry[ No] – OSeqno: 002 ISeqno: 003 Type: IAX Subclass: ACK
Timestamp: 00042ms SCall: 00180 DCall: 00002 [66.227.100.30:4569]
Rx-Frame Retry[ No] – OSeqno: 002 ISeqno: 003 Type: IAX Subclass: TXREQ
Timestamp: 00084ms SCall: 00180 DCall: 00002 [66.227.100.30:4569]
APPARENT ADDRES : IPV4 66.227.100.37:4569
CALL NUMBER : 6
TRANSFER ID : 184728499

Tx-Frame Retry[-01] – OSeqno: 003 ISeqno: 003 Type: IAX Subclass: ACK
Timestamp: 00084ms SCall: 00002 DCall: 00180 [66.227.100.30:4569]
Tx-Frame Retry[000] – OSeqno: 000 ISeqno: 000 Type: IAX Subclass: TXCNT
Timestamp: 00071ms SCall: 00002 DCall: 00006 [66.227.100.37:4569]
TRANSFER ID : 184728499

Rx-Frame Retry[ No] – OSeqno: 000 ISeqno: 000 Type: IAX Subclass: TXCNT
Timestamp: 00084ms SCall: 00006 DCall: 00002 [66.227.100.37:4569]
TRANSFER ID : 184728499

Tx-Frame Retry[000] – OSeqno: 000 ISeqno: 000 Type: IAX Subclass: TXACC
Timestamp: 00074ms SCall: 00002 DCall: 00006 [66.227.100.37:4569]
Rx-Frame Retry[ No] – OSeqno: 000 ISeqno: 000 Type: IAX Subclass: TXACC
Timestamp: 00117ms SCall: 00006 DCall: 00002 [66.227.100.37:4569]
Tx-Frame Retry[000] – OSeqno: 003 ISeqno: 003 Type: IAX Subclass: TXREADY
Timestamp: 00105ms SCall: 00002 DCall: 00180 [66.227.100.30:4569]
CALL NUMBER : 2

Rx-Frame Retry[ No] – OSeqno: 003 ISeqno: 004 Type: IAX Subclass: TXREL
Timestamp: 00142ms SCall: 00180 DCall: 00002 [66.227.100.30:4569]
CALL NUMBER : 6ug
pluto*CLI> iax2 no debug
Tx-Frame Retry[-01] – OSeqno: 004 ISeqno: 004 Type: IAX Subclass: ACK
Timestamp: 00142ms SCall: 00002 DCall: 00180 [66.227.100.30:4569]
Rx-Frame Retry[ No] – OSeqno: 000 ISeqno: 000 Type: VOICE Subclass: 4
Timestamp: 00000ms SCall: 00006 DCall: 00002 [66.227.100.37:4569]
Tx-Frame Retry[-01] – OSeqno: 000 ISeqno: 001 Type: IAX Subclass: ACK
Timestamp: 00006ms SCall: 00002 DCall: 00006 [66.227.100.37:4569]
– Executing Set(“IAX2/jnctn_out-2”, “TIMEOUT(digit)=5”) in new stack
– Digit timeout set to 5
– Executing Set(“IAX2/jnctn_out-2”, “TIMEOUT(response)=10”) in new stack
– Response timeout set to 10
– Executing Set(“IAX2/jnctn_out-2”, “abcTime=closed”) in new stack
– Executing BackGround(“IAX2/jnctn_out-2”, “abc-pbx-menus/abc-thevoice-welcome”) in new stack
– Playing ‘abc-pbx-menus/abc-thevoice-welcome’ (language ‘en’)
Tx-Frame Retry[000] – OSeqno: 000 ISeqno: 001 Type: VOICE Subclass: 4
Timestamp: 00800ms SCall: 00002 DCall: 00006 [66.227.100.37:4569]
Rx-Frame Retry[ No] – OSeqno: 001 ISeqno: 001 Type: IAX Subclass: ACK
Timestamp: 00800ms SCall: 00006 DCall: 00002 [66.227.100.37:4569]
Rx-Frame Retry[ No] – OSeqno: 001 ISeqno: 001 Type: IAX Subclass: HANGUP
Timestamp: 08930ms SCall: 00006 DCall: 00002 [66.227.100.37:4569]
CAUSE CODE : 16

Tx-Frame Retry[-01] – OSeqno: 001 ISeqno: 002 Type: IAX Subclass: ACK
Timestamp: 08930ms SCall: 00002 DCall: 00006 [66.227.100.37:4569]
== Spawn extension (abc-office-incoming, 1001, 6) exited non-zero on ‘IAX2/jnctn_out-2’
– Hungup ‘IAX2/jnctn_out-2’

And here is the relevant part of the extensions.conf file just in case:

[abc-office-incoming]
exten => 1001,1,Answer ; Answer the line
exten => 1001,2,Wait,1
exten => 1001,3,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
exten => 1001,4,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds

; Check what time it is
include => abc-holiday|*|*|1|jan
include => abc-holiday|*|*|4|jul
include => abc-holiday|17:00-23:59|*|24|nov
include => abc-holiday|*|*|25|nov
include => abc-holiday|17:00-23:59|*|24|dec
include => abc-holiday|*|*|25|dec
include => abc-holiday|17:00-23:59|*|31|dec

include => abc-open|10:00-16:59|mon-fri|*|*

include => abc-closed|17:00-9:59|mon-fri|*|*
include => abc-closed|*|sun|*|*
include => abc-closed|*|sat|*|*

exten => 1001,25,WaitExten		; Wait for an extension to be dialed.

exten => 1,1,Goto(abc-open-closed-rule|${abcTime}|1)
exten => 2,1,AGI(abc-menu-2.agi,'weather')
exten => 3,1,AGI(abc-menu-2.agi,'general')
exten => 4,1,AGI(abc-menu-4.agi)

include => abc-ext ; DEFAULT extensions everywhere

; ************ HANGUP Extension *************************
exten => *,1,BackGround(abc-pbx-menus/abc-thevoice-endcall)
exten => *,2,Hangup

; ************ ERROR Handling *************************
; Timeout
exten => t,1,Goto(1001,menu)			; If they take too long, give up
; Invalid
exten => i,1,Playback(abc-pbx-menus/invalid)		; "That's not valid, try again"
exten => i,2,Goto(1001,2)		;

exten => 0,1,Queue(abcQueue)		; Press 0
exten => 0,2,Ringing
exten => 0,3,Wait,10
exten => 0,4,Voicemail(u6200)