Silence if dialled party answers too quickly

Hi all,

I hope someone can help me with this.

I am running Elastix (not sure which version but recent) and FreePBX 2.7.0.3 with LinkSys SPA941. I have a very basic out of the box configuration with a SIP trunk to SipGate in the UK.

Generally my system is configured and working perfectly. All trunks and extensions are configured and I can make and receive calls.

However, there are just some numbers (for example DHL on 0844 248 0844) which I cannot hear when I dial out. A connection is made as I see the outbound call on my SipGate account. However Elastix/Asterisk doesn’t connect my SPA941 (although it displays connected I cannot hear anything) if that makes sense. I just get silence as if the number was never dialled.

It works fine with X-Lite soft phone on a laptop and the FreePBX CDR report shows the call as having been answered.

My best guess for this is because the number in question answers the call very quickly which confuses Asterisk. This is only a guess on my part as there are other numbers this happens on too and the timing it is the only thing I have noticed that they have in common.

Here is the Asterisk verbose output when dialling that number:-

[root@elastix ~]# asterisk -rvvvvvvvvvv
Asterisk 1.6.2.10, Copyright © 1999 - 2010 Digium, Inc. and others.
Created by Mark Spencer [email protected]
Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘core show warranty’ for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type ‘core show license’ for details.

== Parsing ‘/etc/asterisk/asterisk.conf’: == Found
== Parsing ‘/etc/asterisk/extconfig.conf’: == Found
Connected to Asterisk 1.6.2.10 currently running on elastix (pid = 2588)
Verbosity is at least 10
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
– Executing [808442480844@from-internal:1] Macro(“SIP/200-00000043”, “user-callerid,SKIPTTL,”) in new stack
– Executing [s@macro-user-callerid:1] Set(“SIP/200-00000043”, “AMPUSER=200”) in new stack
– Executing [s@macro-user-callerid:2] GotoIf(“SIP/200-00000043”, “0?report”) in new stack
– Executing [s@macro-user-callerid:3] ExecIf(“SIP/200-00000043”, “1?Set(REALCALLERIDNUM=200)”) in new stack
– Executing [s@macro-user-callerid:4] Set(“SIP/200-00000043”, “AMPUSER=200”) in new stack
– Executing [s@macro-user-callerid:5] Set(“SIP/200-00000043”, “AMPUSERCIDNAME=Me Me”) in new stack
– Executing [s@macro-user-callerid:6] GotoIf(“SIP/200-00000043”, “0?report”) in new stack
– Executing [s@macro-user-callerid:7] Set(“SIP/200-00000043”, “AMPUSERCID=200”) in new stack
– Executing [s@macro-user-callerid:8] Set(“SIP/200-00000043”, “CALLERID(all)=“Me Me” <200>”) in new stack
– Executing [s@macro-user-callerid:9] ExecIf(“SIP/200-00000043”, “0?Set(CHANNEL(language)=)”) in new stack
– Executing [s@macro-user-callerid:10] GotoIf(“SIP/200-00000043”, “1?continue”) in new stack
– Goto (macro-user-callerid,s,19)
– Executing [s@macro-user-callerid:19] NoOp(“SIP/200-00000043”, “Using CallerID “Me Me” <200>”) in new stack
– Executing [808442480844@from-internal:2] Set(“SIP/200-00000043”, “_NODEST=”) in new stack
– Executing [808442480844@from-internal:3] Macro(“SIP/200-00000043”, “record-enable,200,OUT,”) in new stack
– Executing [s@macro-record-enable:1] GotoIf(“SIP/200-00000043”, “1?check”) in new stack
– Goto (macro-record-enable,s,4)
– Executing [s@macro-record-enable:4] ExecIf(“SIP/200-00000043”, “0?MacroExit()”) in new stack
– Executing [s@macro-record-enable:5] GotoIf(“SIP/200-00000043”, “0?Group:OUT”) in new stack
– Goto (macro-record-enable,s,15)
– Executing [s@macro-record-enable:15] GotoIf(“SIP/200-00000043”, “0?IN”) in new stack
– Executing [s@macro-record-enable:16] ExecIf(“SIP/200-00000043”, “0?MacroExit()”) in new stack
– Executing [s@macro-record-enable:17] NoOp(“SIP/200-00000043”, “Recording enable for 200”) in new stack
– Executing [s@macro-record-enable:18] Set(“SIP/200-00000043”, “CALLFILENAME=OUT200-20110107-152544-1294413944.67”) in new stack
– Executing [s@macro-record-enable:19] Goto(“SIP/200-00000043”, “record”) in new stack
– Goto (macro-record-enable,s,23)
– Executing [s@macro-record-enable:23] MixMonitor(“SIP/200-00000043”, “OUT200-20110107-152544-1294413944.67.wav,”) in new stack
– Executing [s@macro-record-enable:24] Set(“SIP/200-00000043”, “CDR(userfield)=audio:OUT200-20110107-152544-1294413944.67.wav”) in new stack
– Executing [s@macro-record-enable:25] MacroExit(“SIP/200-00000043”, “”) in new stack
– Executing [808442480844@from-internal:4] Macro(“SIP/200-00000043”, “dialout-trunk,2,08442480844,”) in new stack
– Executing [s@macro-dialout-trunk:1] Set(“SIP/200-00000043”, “DIAL_TRUNK=2”) in new stack
– Executing [s@macro-dialout-trunk:2] GosubIf(“SIP/200-00000043”, “0?sub-pincheck,s,1”) in new stack
– Executing [s@macro-dialout-trunk:3] GotoIf(“SIP/200-00000043”, “0?disabletrunk,1”) in new stack
– Executing [s@macro-dialout-trunk:4] Set(“SIP/200-00000043”, “DIAL_NUMBER=08442480844”) in new stack
– Executing [s@macro-dialout-trunk:5] Set(“SIP/200-00000043”, “DIAL_TRUNK_OPTIONS=tr”) in new stack
– Executing [s@macro-dialout-trunk:6] Set(“SIP/200-00000043”, “OUTBOUND_GROUP=OUT_2”) in new stack
– Executing [s@macro-dialout-trunk:7] GotoIf(“SIP/200-00000043”, “1?nomax”) in new stack
– Goto (macro-dialout-trunk,s,9)
– Executing [s@macro-dialout-trunk:9] GotoIf(“SIP/200-00000043”, “0?skipoutcid”) in new stack
– Executing [s@macro-dialout-trunk:10] Set(“SIP/200-00000043”, “DIAL_TRUNK_OPTIONS=”) in new stack
– Executing [s@macro-dialout-trunk:11] Macro(“SIP/200-00000043”, “outbound-callerid,2”) in new stack
– Executing [s@macro-outbound-callerid:1] ExecIf(“SIP/200-00000043”, “0?Set(CALLERPRES()=)”) in new stack
– Executing [s@macro-outbound-callerid:2] ExecIf(“SIP/200-00000043”, “0?Set(REALCALLERIDNUM=200)”) in new stack
– Executing [s@macro-outbound-callerid:3] GotoIf(“SIP/200-00000043”, “1?normcid”) in new stack
– Goto (macro-outbound-callerid,s,6)
– Executing [s@macro-outbound-callerid:6] Set(“SIP/200-00000043”, “USEROUTCID=”) in new stack
– Executing [s@macro-outbound-callerid:7] Set(“SIP/200-00000043”, “EMERGENCYCID=”) in new stack
– Executing [s@macro-outbound-callerid:8] Set(“SIP/200-00000043”, “TRUNKOUTCID=1096656”) in new stack
– Executing [s@macro-outbound-callerid:9] GotoIf(“SIP/200-00000043”, “1?trunkcid”) in new stack
– Goto (macro-outbound-callerid,s,12)
– Executing [s@macro-outbound-callerid:12] ExecIf(“SIP/200-00000043”, “1?Set(CALLERID(all)=1096656)”) in new stack
– Executing [s@macro-outbound-callerid:13] ExecIf(“SIP/200-00000043”, “0?Set(CALLERID(all)=)”) in new stack
– Executing [s@macro-outbound-callerid:14] ExecIf(“SIP/200-00000043”, “0?Set(CALLERID(all)=)”) in new stack
– Executing [s@macro-outbound-callerid:15] ExecIf(“SIP/200-00000043”, “0?Set(CALLERPRES()=prohib_passed_screen)”) in new stack
– Executing [s@macro-dialout-trunk:12] ExecIf(“SIP/200-00000043”, “0?AGI(fixlocalprefix)”) in new stack
– Executing [s@macro-dialout-trunk:13] Set(“SIP/200-00000043”, “OUTNUM=08442480844”) in new stack
– Executing [s@macro-dialout-trunk:14] Set(“SIP/200-00000043”, “custom=SIP/sipgate6405”) in new stack
– Executing [s@macro-dialout-trunk:15] ExecIf(“SIP/200-00000043”, “0?Set(DIAL_TRUNK_OPTIONS=M(setmusic^))”) in new stack
– Executing [s@macro-dialout-trunk:16] Macro(“SIP/200-00000043”, “dialout-trunk-predial-hook,”) in new stack
– Executing [s@macro-dialout-trunk-predial-hook:1] MacroExit(“SIP/200-00000043”, “”) in new stack
– Executing [s@macro-dialout-trunk:17] GotoIf(“SIP/200-00000043”, “0?bypass,1”) in new stack
– Executing [s@macro-dialout-trunk:18] GotoIf(“SIP/200-00000043”, “0?customtrunk”) in new stack
– Executing [s@macro-dialout-trunk:19] Dial(“SIP/200-00000043”, “SIP/sipgate6405/08442480844,300,”) in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
– Called sipgate6405/08442480844
== Begin MixMonitor Recording SIP/200-00000043
– SIP/sipgate6405-00000044 answered SIP/200-00000043

Any ideas would be appreciated.

Thanks in advance

Kevin

I just thought I would share this with you.

I have done a clean install of Elastix 2.0.3 and the problem is resolved. I was using Elastix 2.0.2. Sadly i am not competent enough to do a detailed analysis of the difference to find the root cause, but like I say, it’s fixed in 2.0.3 :smiley:

Kev

I’m not sure, to be honest. I have not had any trouble with early media being passed back to Asterisk. Are you going through some sort of smart firewall or NAT that doesn’t open RTP ports until it sees a completed SIP setup sequence? (I’m really going out on a limb with that one.)

I am still having trouble with this and I can’t get to the bottom of it. Any ideas anyone?

I did notice an error in my original post. When I said it works with X-Lite softphone, it does so only when I register X-Lite with sipgate directly (my external voip supplier). If I connect X-Lite to my Asterisk box then I get the same problem.

Am in the process of building Asterisk 1.8 from source on a dev box so will give the same number a try on that and report back.

Thanks all

Kevin

A packet capture would probably be helpful at this point. Use wireshark or tcpdump (with Wireshark as an analyzer) to see where the RTP packets are going. Another possibility is that it has something to do with the early media that often comes when dialing an IVR. That is, the remote end doesn’t actually “answer” (SIP 200) the call until it has played the IVR menu, sometimes not even until you’ve navigated the menu and connected to a human.

Hi thanks for that. I shall give the packet capture a try over the weekend as I suspect it will take me some time to interpret the results. On the assumtion it is something to with the remote party IVR configuration, is there anything I can do about it at my end to fool my Asterisk into thinking the remote party has answered?

Thanks for your reply - its appreciated.

Kevin