Hi, Note that I originally posted this to the OpenSer-Users list, but then realized it's really more about SIP than OpenSer. Thus I'm posting it here...doesn't seem to be OT but my apologies if it is.
I have a situation where I have a OpenSER server frontending a set of Asterisk boxes (call them box A1 and A2). Calls come in and are routed to one of the boxes (after doing some custom HTTP lookups using a custom perl module, rewriting the RURI, etc). This works fine, however at some point, the call will most likely need to be transferred from one internal Asterisk box to the other Asterisk box (e.g.A1 to A2). At this point, what we have set to happen is that A1 would send a REFER up through the proxy, the proxy caches an auth token record from info in the outgoing REFER and writes the token ID into the Refer-To header (along with its own address as the recipient) as the REFER goes out to the SIP trunk, and then when the subsequent invite is made from the sip trunk (to something like route_34983948-34343@<sipProxyIP> with that 34983948-34343 being the token ID) the SIP proxy will look up that auth token, rewrite the RURI with the cached info and direct the call to the appropriate internal asterisk box...A2 in this case. So that all is done and would normally work. However our SIP provider says that it only provides "inbound DID service" and thus do not have their dialplan set up to handle REFERs with custom URIs (even if it is back down to the same openser proxy, as it always is in our case). So looking at this, I have two questions: 1. Could resolving this problem just be as simple as finding a new SIP DID provider? I am a bit worried that providers may consider use of REFERs in any way as "SIP termination" (e.g. outgoing service) and either not office REFER support or charge accordingly for outbound access, even though this is clearly still inbound. 2. Those Asterisk boxes in our environment are behind a NAT, so our openser proxy does employ nathelper/rtpproxy. Given this, another alternative I see is for the openser proxy to intercept the REFER for the DID->A2 message, craft an INVITE for proxy->A2, negotiate the conversation, and reconstruct the internal RTP leg between it and A2 instead of A1. This way, the SIP trunk is none the wiser and does not even know this transfer has happened, it just gets some dead air for a second or two and everything is done behind the scenes. I know that a SIP proxy shouldn't inject new SIP messages into the stream, and the REFER way seems to be the most RFC-compliant and technically sound method. However, there is the real-world threat in my mind that it may not be very well supported among inbound DID providers, so I am interested in the community's opinion on the options. One earlier response to my dilemma was that both options were not really good. The first option was unrealistic to expect a SIP provider to do, and the 2nd was not good from a technical standpoint. This is actually development work for a platform that will eventually (hopefully) be pushing through many, many calls per day. So with that I'm wondering if getting the first option working is just a matter of having the cash and partnership worked out with a provider (who? Any ideas?). With the 2nd option, is there some tweak I can make to that so that it is more technically sound (like using a B2BUA somewhere in there, etc)? Basically I'm just looking for a way to make this work without having A1 set up a leg to A2 (like Trunk<->Proxy<->A1<->A2). At best, that would be somewhat OK for proof of concept, but definitely not for production. Thanks for any input, Robby _______________________________________________ Sip-implementors mailing list Sip-implementors@lists.cs.columbia.edu https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors