Send SIP hold to end phone

I’m running Asterisk with a couple of softphones registered.

We’re using direct RTP flow from endphones when the call is active.

So far, when a softphone pauses the call, Asterisk doesn’t really pause the
end phone but just updates the stream changing the media address from the
softphone that asked for pause to his own address.

The SIP specifications tell that a SIP hold is characterized from a
SIP INVITE with either the as media address and/or a sendonly in media attribute.
The problem is that the softphone sends those fields properly but Asterisk changes
them to his IP and sendrecv before sending the invite to the end phone.

Is there a way to have the SIP HOLD be sent to end phone?


(Although you could change the source code, but it is far from a trivial change. Also, quite a few third party PABXes do not like to be held.)

You need to rember that Asterisk is a back to back user agent, not a SIP proxy.

Note that Asterisk also starts sourcing music on hold.