I'm trying to implement forwarding to voicemail with a UAC that's picky about the tags in the To: headers it receives.
First, I tried the following:
failure_route [1] { rewritehostport("192.168.1.1:5060"); append_branch(); t_relay(); }
This failed because the UAC received a "180 Ringing" from the ringing Grandstream phone via ser that contained a To: tag. After the timeout, it received another 180 from Asterisk (the voicemail system) with a different tag. Since it doesn't support forked INVITES, it dropped the call.
Then I tried:
failure_route [1] { rewritehostport("192.168.1.1:5060"); t_reply( "302", "Moved Temporarily" ); }
This time it receives the 180 from the phone as before. Then it receives the 302. Alas, SER has ignored the tag from the phone, and created a new one of it's own, so the UAC again drops the call.
Does anyone know of a way round this? Can SER be persuaded to use a tag it has already received? Can I strip the tag from the To: header in one or both of the responses? I'm willing to get my hands dirty with the SER source code if necessary.