The SIP call server is now at the stage of some fine tuning. This is the stage where we find that either the spec is not clear or things just don't follow the spec. Always happens :-)
So, things like when you get 180 Ringing, and when you get 183 Session progress, and which have an sdp payload or not, and when there is audio or not...
Turns out some carriers can send 183 then 180 then 183 and all have sdp. Some don't have sdp on 180. Some phones don't understand 180 with sdp. And so on. Now we have code that always sends 180 with no sdp and that seems to keep everything happy.
We have carriers that support Remote-Party-Id perfectly, even passing back connected line ID from the phone network !!!
We have carriers that claim not to support it, but if you use it and set privacy=full they mark the call "unavailable".
The SIP/GSM gateway they are using is damn good, and supports Remote-Party-ID, and putting calls on hold, and even tells the phone if we send a 3xx to divert the call (pops up saying "Diverting"). All damn impressive.
We are just sorting a few fine details sending calls to peopls * boxes as well now.
Oh, and we found a 4th way to transfer a call!
1. Transfer before answering
2. Answer, and blind transfer
3. Answer, hold, call someone, they answer and then transfer
4. Answer, hold, call someone, and transfer before they answer
All are handled totally differently!