180 vs. 183 vs. Early Media
If you know that the phone is ringing (an ALERT Q.931 message, for instance) you send a 180 Ringing.
If you receive a notification indicating that the call is progressing, but you do not know for sure whether the user is being alerted or not, you send a 183 Session Progress message.
Both can indicate early media with SDP. If there is no SDP, the end device (softphone/gateway/etc.) has to generate the ringback tone or progress tone.
Usually you will see 180 without SDP while 183 with SDP. It is a good practice to leave the tone generation for the endpoints.
If you get 183 you should open media connection because there is audio ready for them to hear.
If you set ringback var and ignore_early_media, both 180 and 183 will trigger your fake ringing. If you set instant_ringback=true then it will not wait for 18x it will start fake ringback instant (asterisk mode).
21.1.2 180 Ringing The UA receiving the INVITE is trying to alert the user. This response MAY be used to initiate local ringback. ... 21.1.5 183 Session Progress The 183 (Session Progress) response is used to convey information about the progress of the call that is not otherwise classified.