Hi all. Wondering the proper way to handle REFER requests, as I haven't found much helpful documentation, and nothing in the way of examples.
Our setup is basically:
Cisco 7960s <---> SER <---> Vega Gateway <---> PSTN | Private 1918 net | Internet |
(The Cisco phones are on a 1918 private network, SER is running on the IP gateway in multihomed mode, and the PSTN gateway is on the Internet)
SER works fine for normal calls, with force_rtp_proxy("FAII") or force_rtp_proxy("FAEI") properly translating INVITE requests. However, if the phone receives an inbound call from the PSTN, and tries to transfer it, to either a local phone, or a remote number, this fails. The Refer-To: header is set to number@1918.ip.addr by the phone, e.g., 5551212@10.0.0.1, and then SER relays this to the Vega gateway unchanged. The Vega's INVITE attempt to that URI obviously gets nowhere. I don't see any function in SER or its modules that address this. All of the NAT and multihomed handling stuff seems only to translate the RURI, Contact header, and SDP payloads, never the Refer-To.
I've gotten transfer to work now for certain cases by basically switching out the IP with a seemingly overbearing subst(): subst('/^Refer-To:(.*)@1918.ip.addr/Refer-To:\1@SERs.outside.ip/'); but this seems rather inelegant, to put it mildly. Isn't there another way to handle this in SER?
Perhaps my relatively poor understanding of SIP at the protocol level is causing the problem here. As I understand it, in the above scenario, SER cannot "complete" the transfer request itself, so it *must* forward the REFER further on in the call path, that being the Vega here. It is not possible for SER to take the one half of the call path, from the Vega to SER, and close it (with a BYE, or however), and then connect the other half (which is still a live connection between SER and the user) to the new user specified in Refer-To:. Am I correct in thinking that this is how a SIP proxy (even one with RTP proxying and NAT mangling capabilities) works? For this, is a B2BUA needed?
Though I hate to present any more info, especially without knowing first if my assumptions are flawed, there is one more highly related issue I may as well include here. We are relaying outbound calls through Masergy's VoIP service. Their servers, however, do not support REFER at all. What are our scenarios for being able to transfer (just among phones inside the office) outbound calls that we've made through Masergy? If I was correct in the preceding paragraph, SER itself could not help here. Is there a recommended way to handle this?
Thank you in advance for ANY info in response to the above. Do any of the SER developers, or third-party gurus, offer any sort of paid support? I was surprised not to find anything under "services" on the iptel.org site. We might be interested, now or in the near future, in having someone who actually knows what they're doing take a little bit more in-depth look at our setup, and hopefully head off all of the problems we've undoubtedly set ourselves up for. :)
Thanks again, Jeremy