Ignore_early_media ringback 183 + 180

Hi, I have a problem with the in-band audios sent by some providers.

In some providers, when I send an INVITE, they first send me a “183 Session progress” and in-band audio. If the destination rings, then they send me a “180 Ringing”. The audio is already established by the first “183 Session progress” and then the caller gets the “ringing” because the provider provides de ringback tone in the media stream. If the destination is out of coverage, the caller listen an announcement indicating it. In this case, everything works correctly.

In other providers, when I send an INVITE, I also get a “183 Session progress” and then a “180 Ringing”, but the provider does not send me audio. Under this circumstance, I get silence on the caller as FreeSWITCH does not generate the ringback tone.
How could I fix this?

I have the “ringback” variable set, but if I set “ignore_early_media=true”, I get a fake tone at begining (when the “183 Session progress” arrives) that I need to avoid, because if for example the destination is off or out of coverage, the caller listen the fake tone and not listen de in-band audio announcement.

Hello and welcome!

Check the vanilla dialplan default.xml settings

conf/vanilla/dialplan/default.xml:    <!-- Demonstration of how to override the ringback in various situations -->
conf/vanilla/dialplan/default.xml:    <!-- Send a 180 and let the far end generate ringback. -->
conf/vanilla/dialplan/default.xml:    <extension name="ringback_180">
conf/vanilla/dialplan/default.xml:    <extension name="ringback_183_uk_ring">
conf/vanilla/dialplan/default.xml:      <action application="set" data="ringback=$${uk-ring}"/>
conf/vanilla/dialplan/default.xml:    <extension name="ringback_183_music_ring">
conf/vanilla/dialplan/default.xml:      <action application="set" data="ringback=$${hold_music}"/>

The samples from the vanilla conf doesn’t cover my problem.

I want to send “183 Session progress” to the caller, if the provider sends inband audio, pass it to the caller, if the provider sends “180 Ringing”, i want to play ringback.

My provider sends “183 Session progress” and then immediately sends “180 Ringing”, so any inband audio is sended and FreeSWITCH doesn’t generate ringback when de “180 Ringing” arrives.

Are you using ESL or Dialplan?

Have you tried using ring_ready ?

I solved the problem with “bridge_early_media=true” but I don’t know why FreeSWITCH won’t play ringback when 180 arrives (after 183 and no media received) without this variable setted.

1 Like

I do not know if this is in the RFC for SIP signaling, but I believe that the numeric progress codes must increment without going backwards. So sending you a 183 and then a 180 would be broken if that is correct.

FreeSWITCH developers were very diligent in following the specification, which too many vendors seem to ignore. That would explain the behavior if my supposition is true.

I have a quick read through the RFC3261 and I don’t see anything about this.

I could receive a “181 Call Is Being Forwarded” first and then when the final destination rings, a “180 Ringing”, isn’t?

From my experience interconnecting to core mobile operators systems, they usually send a “183 Session progress” first and if the destination rings a “180 Ringing”.

1 Like