Call Forwarding Connection OK but No Audio

Hi,

I encountered the same problem with originating calls to 2 external numbers via Callcentric SIP trunk: No audio. Asterisk is behind NAT firewall.

However, after trying all the settings, it finally worked. So here is my full configuration steps, just in case someone need to verify his settings.


  1. Open port in Router/NAT modem, point to Asterisk internal IP

UDP 5060 (This is for remote extension - If you dont have remote extension, it is strongly recommended to close this port)(*)
UDP 10000-20000 (this is for Asterisk)
UDP 50000-65535 (this is for callcentric)(**)

(*): I tried to close this port, and the audio is still good.
(**): this is one of the key things: Use “sip set debug on” and watch the SIP package returned from Callcentric or your SIP provider in response to Asterisk INVITE. Notice the port.

  1. Adjust the Callcentric SIP trunk as follow (notice it is slightly different than mentioned in Callcentric support page)
    TRUNK NAME: default_sip_trunk

PEER DETAILS:
context=from-trunk
fromdomain=callcentric.com
fromuser=1777XXXXXXX
authuser=1777XXXXXXX
username=1777XXXXXXX
host=callcentric.com
defaultuser=1777XXXXXXX
insecure=very
secret=******
type=friend
dtmfmode=rfc2833
qualify=yes

REGISTER: 1777XXXXXXX:******@callcentric.com/1777XXXXXXX

Make sure it is registered in Asterisk

  1. Add in sip_general_custom.conf (using Trixbox Config File Editor Tool)

srvlookup=yes
session-timers=refuse ; for call-centric
session-expires=180 ; for call-centric
session-minse=90 ; for call-centric
session-refresher=uas ; for call-centric
nat=yes
externip=1.2.3.4 ; this is your public IP
localnet=192.168.0.0/255.255.255.0 ; this is Asterisk local subnet
progressinband=yes

  1. Add in extension_custom.conf
    [bridge-external-call]
    exten => _X.,1,NoOp(Gonna make outbound call - bridge 2 external calls - [email protected] - Jun 2011)
    exten => _X.,n,Playback(vm-dialout) ; this is required in order to have audio. Very important
    exten => _X.,n,Dial(SIP/default_sip_trunk/${EXTEN},30,)
    exten => _X.,n,Hangup

  2. Add in manager_custom.conf
    [manager-user]
    ; these are for auto-bridging 2 calls
    ;nrtranbao - Jun 2011
    secret=blablabla
    deny=0.0.0.0/0.0.0.0 ; deny originate from any other hosts
    permit=127.0.0.1/255.255.255.255 ; only allow originate from localhost
    read=all
    write=all

To originate calls, use the below command in Asterisk CLI
originate SIP/default_sip_trunk/11-digit-caller extension 11-digit-callee@bridge-external-call

Asterisk will first call the caller, and when answered, bridge to the context “bridge-external-call”. This context will play a message (***), then dial 2nd number. Audio works fine.

(***)(KEY POINT - thanks to this post: http://lists.digium.com/pipermail/asterisk-users/2009-April/229699.html)

I encounted this same issue this week using asterisk 1.6, i’ve installed 1.6 before and havent had an issue with this, normally the correct NAT settings and progressinband=yes always work.

Here is how i got it working tonight. in the freepbx tools > sip settings i removed the progressinband=yes and added it to sip_custom.conf. The freepbx sip settings complain about this but this seems to work so stay with me.

After that i set rtpholdtimeout to 2 seconds and bam it worked.

I doubt it was move the progressinband that solved the problem, think it was more the setting rtpholdtimeout from 0 to 2.

My 2cents.

Note: if you upgrade FreePBX in the future you may need to add these lines again, depending on if they have fixed the issue or not. This worked for me, YMMV.This is better than overriding in extensions_override_freepbx.conf in my opinion.

Follow Me Fix for DID’s

Add the code "$ext->add($contextname, $grpnum, ‘’,new ext_answer(’’)); " in to /var/www/html/admin/modules/findmefollow/functions.inc.php

                                    //
                                    // If the followme is configured for extension dialing to go to the the extension and not followme then
                                    // go there. This is often used in VmX Locater functionality when the user does not want the followme
                                    // to automatically be called but only if chosen by the caller as an alternative to going to voicemail
                                    //

$ext->add($contextname, $grpnum, ‘’,new ext_answer(’’));
$ext->add($contextname, $grpnum, ‘’, new ext_gotoif(’$[ “${DB(AMPUSER/’.$grpnum.’/followme/ddial)}” = “EXTENSION” ]’, ‘ext-local,’.$grpnum.’,1’));
$ext->add($contextname, $grpnum, ‘FM’.$grpnum, new ext_macro(‘user-callerid’));
$ext->add($contextname, $grpnum, ‘’, new ext_set(’__EXTTOCALL’,’${EXTEN}’));
$ext->add($contextname, $grpnum, ‘’, new ext_set(’__PICKUPMARK’,’${EXTEN}’));
// block voicemail until phone is answered at which point a macro should be called on the answering // line to clear this flag so that subsequent transfers can occur, if already set by a the caller

Got it working with a “double ring group”…

I setup an asterisk 1.4 and asterisk 1.8 (both tested separately, both behind router on 192.168.2.x) and the call forwarding works fine with the 1.4 and fails with the no-audio problem on 1.8 (freepbx 2.9). I’ve tried the numerous suggestions (FollowMe, DMZ, RTP port forwarding, adding options to SIP_xxx.conf, etc.).

The solution I used for Asterisk 1.8/FreePBX 2.9 was a “double ring group”. The first ring group rings a non-used extension for 1 second with “none” for “Play Music on Hold?”… The 2nd ring group uses the standard “ring” for “Play Music on Hold?”.

The 1st ring group was routed via “destination if no answer” to the 2nd ring group (this is my usual ring group) that rings all the phones internally, except extension 500 (my cell phone: 8005551212). The “destination if no answer?” is a standard SIP extension 500 that has “Local/918005551212@outbound-allroutes” in the Device Options/dial field. (no quotes. also test dial the 500 extension to make sure it works from your internal setup…I use 9 to dial via trunk voip.ms)

Callers may hear 1 second of silence before/during the ringing and then standard asterisk ringing. my internal extensions ring. If I don’t answer in XX seconds, the call is routed to my cellphone via extension 500. Caller don’t know what is going on. The audio is a bit tinny since I’m going thru 1 landline and 2 voip trunks, but callerid and audio works fine. I did NOT tweak the caller ID during the call.

FreePBX 2.8.1.4
elastix 2.3.0 5
asterisk 1.8.11.0 0

on a fresh build

Was getting this problem with mobile dialing into PBX and being routed out via Follow-me to an extension that was also a mobile number. No audio in either direction going through an Oztell trunk both ways. Could see no errors in the logs and calls held until terminated. If I rang from a local extension it worked fine. just inbound calls being re-routed out that got effected.

I forwarded 5060 and ports 10,000 to 20,000 on the firewall for SIP and RTP but still no luck.

then added in NAT settings on FREEPBX under the tools/Asterisk SIP Settings
Set for using NAT on a dynamic ip (no-ip.com)

and that fixed it.

I also recently encountered this problem on a blind transfer scenario. The only thing you need to to do remedy it for calls that you answer and then blind transfer is to correctly configure the NAT Settings section of the Asterisk SIP Settings module to show your external and internal IP Address. Forwarding ports is not needed, at least in cases where you answer the external call and then do a blind transfer.

I am experiencing the same issue as many other users in this thread:
When I call my DID number attached directly to an extension, which uses follow me to forward out to an external number, the phone connects but there is no audio.

I can call in on a DID to the auto attendant and dial the same extension and it forwards out via follow me just fine - with a connected voice path. I also get audio fine if I dial in on the DID number attached directly to the extension, and have “Confirm Calls” enabled in the follow me settings. This is a pain for my users though and too often results in them missing the calls.

I am running FreePBX 2.10.0.8 and PBX Firmware: 1.812.210.57-1. My PBX is behind NAT with a dedicated public IP routed to the local IP (all ports), and the firewall set to allow the RTP ports (UDP 10000-20000).

My SIP settings are set to allow NAT and I have set progressinband=yes, yet I am still getting the ‘no audio’ behaviour described above.

Would really appreciate any pointers from anyone.

I remembered to update my external IP address Tools>Asterisk SIP Setting>External IP. Worked for me. Good luck.

I’ve just was so upset about the problem that didn’t let me to use follow-me on my asterisk installation, and when I saw your message I just tried to change the ring type just like you said, and IT IS WORKING!

thank you so much for saving me a lot of troubles!

(and to the developers of Asterisk - if you have a more elegant way to do this - please go for it…)

Create System Recording that says" Please Wait While We Try and Connect You"
Create ring group for client
Set Ring to: 1XXXXXXXXXX#
Set Recording to the recording you just made
Change Music on hold to default.
Chang ring time to 60 sec.
Forward Phone to Ring Group Number
Caller will hear recording then music while it rings and be connected to the destination voicemail if it picks up within 60sec.