1. A send invite to B (A -> mobicents -> another sip server -> B)2. After the dialog(A and B) established, B send an invite to C. (B ->another sip server -> C)
Problem with this is that the SDP will not be changed at A and will break except if B2BUA on Mobicents is using a conference to connect users3.After C answered the call from B, B will send a REFER msg to A but B2BUA app on Mobicents will take care of it (B -> another sip server -> mobicents)4.After B2BUA app on Mobicents received REFER from B, it will send an invite with replaces to C (mobicents -> another sip server -> C)
1. A send invite to B (A -> mobicents -> another sip server -> B)2. After the dialog(A and B) established, B send an invite to C. (B ->another sip server -> C)
3.After C answered the call from B, B will send a REFER msg to A but B2BUA app on Mobicents will modify the Refer-To Heders by replacing the Replaces in it with it's own CallId from tag and to tag and generate a REFER with a different Refer-To and Replaces (B -> another sip server -> mobicents -> A) and keep the mapping in sipapplicationsession
ReceivesREFER sip:135.27.208.69:5060 SIP/2.0From: "10001" <sip:10...@test.com>;tag=44ddd77791dadf1a22001b8775d1To: "6199" <sip:61...@test.com>;tag=09162450_4d8055f4_865ca020-87cc-44fc-a8ed-3614af0dcc0fCall-ID: a1c71a775d2b285b...@135.27.208.69CSeq: 1 REFERVia: SIP/2.0/UDP 135.27.209.120;rport=5060;branch=z9hG4bK871BD1691246D8870936290-AP;ft=135.27.209.120~13c4;received=135.27.209.120Via: SIP/2.0/UDP 135.27.209.105:15070;branch=z9hG4bK871BD1691246D8870936290Via: SIP/2.0/TCP 135.27.209.105:15070;branch=z9hG4bK871BD1691246D8871936288Via: SIP/2.0/TCP 135.27.209.120;branch=z9hG4bK483da28891dadf1b42001b8775d1-AP;ft=31690Via: SIP/2.0/TCP 135.27.209.117;branch=z9hG4bK483da28891dadf1b42001b8775d1User-Agent: Avaya-VoicePortal/5.1.0.0.4206 AVAYA-SM-6.0.0.0.600020Contact: <sip:10...@135.27.209.117;transport=tcp>Refer-To: <sip:21...@test.com?Expires=120&User-to-User=04FA08271000004CBEA7D0C80e266F7267646E69733D3130303031%3Bencoding%3Dhex&Replaces=cae6df8391dadf1b02001b8775d1%3Bfrom-tag%3D8ee6df8391dadf1af2001b8775d1%3Bto-tag%3D807cdfb843e4df1822b4c52994d00>P-Asserted-Identity: "10001" <sip:10...@test.com>Max-Forwards: 67Content-Length: 0
SendREFER sip:61...@135.27.211.55:23518;transport=udp SIP/2.0CSeq: 1 REFERFrom: "10001" <sip:10...@test.com>;tag=00425462_4d8055f4_865ca020-87cc-44fc-a8ed-3614af0dcc0fTo: "6199" <sip:61...@test.com>;tag=4d127f7cCall-ID: Yjg0MDQwOTgzYTQ3NTdlYzBhY2VlMDZlMjViN2ZhZGE.Max-Forwards: 70Contact: <sip:135.27.208.69:5060>P-Asserted-Identity: "10001" <sip:10...@test.com>Refer-To: <sip:21...@test.com?Expires=120&User-to-User=04FA08271000004CBEA7D0C80e266F7267646E69733D3130303031%3Bencoding%3Dhex&Replaces=jg0MDQwOTgzYTQ3NTdlYzBhY2VlMDZlMjViN2ZhZGE.%3Bfrom-tag%300425462_4d8055f4_865ca020-87cc-44fc-a8ed-3614af0dcc0f%3Bto-tag%34d127f7c>Content-Length: 0
This scenario B should work and it is how it should be handled I think since a B2BUA application is different than the proxy and acts like an endpoint it should really do that.4.After A received REFER from B, A will send an invite with replaces to Mobicents (A -> mobicents -> another sip server ->C) Mobicents will match this Replaces since it will know about it and call the B2BUA application, B2BUA Application will have kept the mapping and will generate a new INVITE with the Replaces it receives in 3. from C
Interested thread. It is tricky to get a chain of b2buas and REFER
working together.
In this use case, if the desire is to let the endpoints handle it and
mobicents just pass the REFER and INVITE/Replaces through, then it
seems SIP Servlet 1.1 spec should handle it. In 15.11.4, bullet 4, if
no SipSession matches the Replaces header, the request is treated as
an untargeted request. Normal application routing takes place. If the
AR selects the same b2bua, it will be in a different
SipApplicationSession. Assuming the apps let it through, the
INVITE/Replaces request will eventually reach C.
So it seems Mobicents should not rejects the INVITE/Repalces with 481?
Regards
Eric
4) b2bua sends INVITE/Replaces to C, with no SDP
5) C sends 200 OK with SDP offer
6) b2bua sends re-INVITE with offer' to A
7) A sends 200 OK with answer'
8) b2bua sends ACK with answer to C, and ACK to A
Quite a lot of work. Perhaps a specialized app (like a REFER Handler)
can be written and re-used in different deployments. It can be
inserted in the app chain in the appropriate place.
I think whether you want a b2bua (and which one in a chain) to handle
the REFER or just pass through and let the endpoints handle it depends
on whether and which apps you want to stay in the call path.
Regards
Eric