Hi all,
I'm currently working on a VoIP system with multiple opensers as registrars, clients can register to whatever openser they like and use that one as an outgoing proxy. The configuration scripts makes sure that invites are branched to all other opensers so that the call is delivered wherever a client is registered. Basic call functionality is working fine, attended transfers however are a different story.
If all the clients are registered on the same openser this works perfectly. Client A calls client B, client B calls client C, B sends a REFER to A with a replaces in the Refer-To header and A calls client C with a Replaces header in the INVITE. The INVITE from A to C here goes through the openser since all clients use the openser as a outgoing proxy and all is well.
In the setup with multiple opensers however the problem arises. If client C is registered on a different openser then A and B the third call won't go through the registrar for C, the proxy for A and B will try to contact C directly since there is no route information in a REFER on how client C can be reached. If C is behind a firewall or the registrar for C knows specific (network) routes on how to contact C this scenario will fail since the INVITE from the openser for A and B directly to client C won't arrive.
So my question is: Does anybody has any ideas on how to reach the desired goal: The INVITE from A to C should go through the openser for A and the openser for C. Personally I was thinking in the line of a reverse registration lookup to check if a contact is known on an openser and if it isn't I could branch it to all other openser systems, but I couldn't find a function that does this reverse lookup. I could try to implement this function myself, but I would prefer existing (tested ;)) functionality. Does anybody know a function that does this, or can anybody think of another solution for this problem? Thanks in advance.
Kind regards, Ardjan Zwartjes.