Do I have to use Answer() to make outbound calls? Weird

Hi,

I don’t know what is going on…This is the first time I have to use Answer() before use Dial() to make outgoing calls. Let me explain to you what this is about.

I have 2 sip trunks for call termination and both have the same configuration in sip.conf, here is it:

[trunkA]
type=friend
defaultuser=xxxxxxxxxxxxx
fromuser=xxxxxxxxxxx
secret=xxxxxxxxxxxx
host=provider1.com
fromdomain=provider1.com
disallow=all
insecure=invite
allow=ulaw
dtmfmode=rfc2833
nat=route
progressinband=never

[trunkB]
type=friend
defaultuser=xxxxxxxxxxxxx
fromuser=xxxxxxxxxxx
secret=xxxxxxxxxxxx
host=provider2.com
fromdomain=provider2.com
disallow=all
insecure=invite
allow=ulaw
dtmfmode=rfc2833
nat=route
progressinband=never

As you can see, both have the same config but different host.

Here is what I have in extensions.conf
This dial plan works perfect with trunkA. I hear the real ring…ring…ringback tone the provider sends me:

exten => _XXXXXXXXXX,1,NoOp()
same => n,Dial(SIP/1${EXTEN}@trunkA)
same => n,Busy()
same => n,Hangup()

The problem is here, with the trunkB, if I call using this dialplan using trunkB, I hear the fake ring…ring… (ringback tone), not the ringback tone the provider has to send me:

exten => _XXXXXXXXXX,1,NoOp()
same => n,Dial(SIP/1${EXTEN}@trunkB)
same => n,Busy()
same => n,Hangup()

I found out that, if I put Answer() instead of NoOp() I am able to receive the real ring…ring ringback tone the provider sends me…

For me, this is the first time I have to use Answer() to make an outgoing call and I don’t like it because as soon Answer() is executed, on my softphone the call times is counting but the call has not been answered yet.

I would like to know, have you ever had this type of situation where you have to use Answer() to place outgoing calls??

The answer depends on whether the A side provider allows early media. Most commercial suppliers don’t, because it allows people to operate information lines with no call charges.

If they allow early media, you can use Progress.(), instead of Answer().

Basically the problem is likely to be with your upstream provider, not with Asterisk.