NO JOY DTMF into an IVR on a Cisco system

Andy Bender

New Member
Joined
Apr 4, 2016
Messages
2
Reaction score
0
Hello,
I’m a newbie with a Pi: Incredible PBX 11-12.2, Asterisk 11.19.0, GUI 12.0.20

I have a trunk connected to a Cisco system, the Peer details are:

The Peer is defiened as follows:

type=peer
host=10.10.0.77
port=5060
insecure=port,invite&port,invite
nat=no
disallow=all
allow=ulaw&alaw
qualify=yes
canreinvite=no
promiscredir=yes
trustrpid=yes
; dtmfmode=short
; SIPDtmfMode=short
fromdomain=10.10.0.254
context= CiscoOut


In extensions_custom.conf, I’ve got:

; exten => _940060XX,n,SIPDtmfMode(rfc2833)
exten => _940060XX,n,Dial(SIP/CiscoOut/${EXTEN:1},60)


I have an extension in sip_additional.conf as:

[2001]
deny=0.0.0.0/0.0.0.0
secret=adbbd123
dtmfmode=shortinfo
canreinvite=no
context=from-internal
host=dynamic
trustrpid=yes
sendrpid=yes
type=friend
nat=no
port=5060
qualify=yes
qualifyfreq=60
transport=udp
avpf=no
force_avp=no
icesupport=no
encryption=no
callgroup=
pickupgroup=
dial=SIP/2001
permit=0.0.0.0/0.0.0.0
callerid=2001 Sip Extenstion <2001>
callcounter=yes
faxdetect=no
cc_monitor_policy=generic

With the above if I connect to 2001 with a PhonerLike SIP phone I can call into an IVR on the Cisco system and both voice and DTMF work just fine.

However……

I have a test.call file containing:

channel: Local/3001@from-internal
Context: CiscoOut
Extension: 2001


I have an included extensions_make_calls.conf file containing:

[CiscoOut]
;--------------------------------------------------------------------------
; exten 2001 is used to put a FIFO into VH w/CB Canceled
exten => 2001,1,NoOp(==============> ? EXTN 2001 Test call BEGIN <=====================)
exten => 2001,n,Wait(1)
exten => 2001,n,Monitor(wav,${CALLFILENAME},m)
exten => 2001,n,Flite("This is 2 0 0 1, Press 1 ")
exten => 2001,n,Wait(1)
exten => 2001,n,SendDTMF(1,1500, 150 )
exten => 2001,n,Wait(2)
exten => 2001,n,Flite(", Press 33033")
exten => 2001,n,SendDTMF(33033#,150,150)
exten => 2001,n,Wait(2)
exten => 2001,n,Flite(", Press 1")
exten => 2001,n,SendDTMF(1,150,150)
exten => 2001,n,Wait(2)
exten => 2001,n,Flite(", Press 1")
exten => 2001,n,SendDTMF(1,150,150)
exten => 2001,n,Wait(2)
exten => 2001,n,Flite(", Press 1")
exten => 2001,n,SendDTMF(1,150,150)
exten => 2001,n,Wait(4)
exten => 2001,n,Flite(", Goodbye!")
exten => 2001,n,NoOp(==============> EXTN 2001 Test call HANGUP <=====================)
exten => 2001,n,Hangup()

When the call file is dropped into the outgoing directory the call is made to the Cisco IVR ok, but the DTMF is not getting there.

I have recorded the call from the asterisk side and do not hear any DTMF.

I have tried various combinations of the SIPDtmfMode values (rfc2833, info, auto, etc), settings in:
- the Trunk Peer
- the extensions_custom.conf, just before the before dial
- and on the 2001 extension

With rfc2833 mode set in extensions_custom.conf:
exten => _940060XX,n,SIPDtmfMode(rfc2833)
exten => _940060XX,n,Dial(SIP/CiscoOut/${EXTEN:1},60)

Calling from x3001, DTMF signaling as SIP INFO, I can get:

[2016-04-08 10:51:02] DTMF[25693][C-00000001] channel.c: DTMF begin '1' received on SIP/3001-00000003
[2016-04-08 10:51:02] DTMF[25693][C-00000001] channel.c: DTMF begin passthrough '1' on SIP/3001-00000003
[2016-04-08 10:51:02] DTMF[25693][C-00000001] channel.c: DTMF end '1' received on SIP/3001-00000003, duration 80 ms
[2016-04-08 10:51:02] DTMF[25693][C-00000001] channel.c: DTMF end accepted with begin '1' on SIP/3001-00000003
[2016-04-08 10:51:02] DTMF[25693][C-00000001] channel.c: DTMF end '1' detected to have actual duration 59 on the wire, emulation will be triggered on SIP/3001-00000003
[2016-04-08 10:51:02] DTMF[25693][C-00000001] channel.c: DTMF end '1' has duration 59 but want minimum 80, emulating on SIP/3001-00000003
[2016-04-08 10:51:02] DTMF[25693][C-00000001] channel.c: DTMF end emulation of '1' queued on SIP/3001-00000003

I believe this is the logging of the out-of-band DTMF….. (is that correct?)
Which is NOT recognized by the IVR on Cisco.




If, I do a call with the call file, x2001, I get:

[2016-04-08 11:06:58] VERBOSE[26881][C-00000002] pbx.c: -- Executing [2001@CiscoOut:6] SendDTMF("SIP/10.10.0.117-00000007", "1,1500, 150 ") in new stack
[2016-04-08 11:07:00] VERBOSE[26881][C-00000002] pbx.c: -- Executing [2001@CiscoOut:7] Wait("SIP/10.10.0.117-00000007", "2") in new stack
[2016-04-08 11:07:02] VERBOSE[26881][C-00000002] pbx.c: -- Executing [2001@CiscoOut:8] Flite("SIP/10.10.0.117-00000007", "", Press 33033"") in new stack
[2016-04-08 11:07:02] VERBOSE[26881][C-00000002] file.c: -- <SIP/10.10.0.117-00000007> Playing '/tmp/flite_34400481.slin' (language 'en')
[2016-04-08 11:07:05] VERBOSE[26881][C-00000002] pbx.c: -- Executing [2001@CiscoOut:9] SendDTMF("SIP/10.10.0.117-00000007", "33033#,150,150") in new stack
[2016-04-08 11:07:07] VERBOSE[26881][C-00000002] pbx.c: -- Executing [2001@CiscoOut:10] Wait("SIP/10.10.0.117-00000007", "2") in new stack
[2016-04-08 11:07:09] VERBOSE[26881][C-00000002] pbx.c: -- Executing [2001@CiscoOut:11] Flite("SIP/10.10.0.117-00000007", "", Press 1"") in new stack

No logging of the out-of-band DTMF…..
This DTMF, is also NOT recognized by the IVR on Cisco.

In summary, I can manual calls from a Phonerlite phone into the Cisco IVR and DTMF works OK.
However, I cannot get it to work from a .call file.

I have also tried tweaking: the port, insecure, nat, the codecs…, qualify, canreinvite, promiscredir, trustrpid

If it’s an issue on the Cisco side, why does it only fail when I call from a call file ?
The voice seems OK, it’s just the DTMF that is a problem.

Is there something wrong with how I trying to do this ?

Just to be clear I want to use .call files to make calls into an IVR through a Cisco system and DTMF digits into it.

Thanks,
Andy
 
Joined
Nov 14, 2008
Messages
1,398
Reaction score
320
You could place rfc2833 in the peer trunk config (dtmfmode=rfc2833) . You didn't mention where the cisco system is. Same network as you are on? If it's somewhere else you could have NAT audio issues. rfc2833 still usually produces actual tones somewhere along the chain but depends what you are calling and how. A switch to switch call depending on config might not need any actual tones. You can try inband or info instead of 2833 but you shouldn't have to
 

Andy Bender

New Member
Joined
Apr 4, 2016
Messages
2
Reaction score
0
Thanks,
I've had place rfc2833, in the Trunks Peer section, on the Extension, and just infront of the Dial statement.
I don't think NAT is an issues as this is all w/in our lab, all on the same network.
I've tried inband, info and auto.

Forgot to mention, If I use the call file and call the PhonerLite SIP phone, or a hard line test phone on the Cisco system I hear the DTMFs OK.
If I put the earpiece of my PhonerLite headset against the mike of the hard line test phone while it is connected to the IVR, then IVR hears the DTMF ok.

It appears there are at least 3 places I can specify SIPDtmfMode: on the Extension definition, in the trunks Peer section, and/or in extensions_custom.conf just prior to the dial. Any idea what the order of precedence is ?

Also, although SIPDtmfMode may be commented out in the examples above, it was tested.

Is there a variable with the current SIPDtmfMode value I could print just prior to doing a SendDTMF ?

If I monitor the traffic with TCPDump, would there be an acknowledgement coming back from Cisco confirming it got the DTMF ?

Thanks,
Andy
 

Members online

No members online now.

Forum statistics

Threads
25,819
Messages
167,800
Members
19,247
Latest member
abuhyder
Get 3CX - Absolutely Free!

Link up your team and customers Phone System Live Chat Video Conferencing

Hosted or Self-managed. Up to 10 users free forever. No credit card. Try risk free.

3CX
A 3CX Account with that email already exists. You will be redirected to the Customer Portal to sign in or reset your password if you've forgotten it.
Top