Ringing or Playtones(ring) for "Comfort Ring"

In my constant quest of building a better asterisk dial plan, I want to add a “Comfort Ring” before my IVR is played to the caller.

The two choices are “Ringing” or “Playtones(ring)/StopPlaytones”

Ringing Example:

exten => s,1,Answer exten => s,2,Ringing exten => s,3,Wait(1.5) exten => s,4,Background(ivr/greeting)
Pro: Sounds the best, only an out-of-band ringing indication is sent to the caller, and a nice clean ring is produced.
Con: Requires the calling party to recognize the ringing indication and STOP ringing when indicated.

Playtones Example:

exten => s,1,Answer exten => s,2,Playtones(ring) exten => s,3,Wait(1.5) exten => s,4,StopPlaytones exten => s,5,Background(ivr/greeting)
Pro: Simple, generate ringing sound data over the voice channel. Stop when specified.
Con: Can sound choppy and uneven depending on voice channel.

My question is, what is the BEST method to use? Does anyone have any cases when Ringing does not work?



Through some testing, I think I have figured out the “Comfort Ring”.

Use “Ringing”, but the trick is to call “Ringing” BEFORE you Answer the channel. When the channel is answered, the ringing stops.

exten => s,1,Ringing exten => s,2,Wait(1.2) exten => s,3,Answer exten => s,4,Wait(0.8) exten => s,5,Background(ivr/greeting)
Any comments?