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.