[OpenSIPS-Users] Transfer issue

Anca Vamanu anca at opensips.org
Tue Nov 10 09:42:30 CET 2009


Hi Jeff,

Jeff Kronlage wrote:
> Anca,
>
> Thanks for the quick reply.  I tried as you suggested, on a development box, and while it didn't work, it did look a lot more like what I was expecting to see.  
>
> However, I guess I am looking for more of a "tack on" solution for what I've already developed.  The "right" answer may be to not support REFERs.  Is there any way to modify the script scenario to -just- pick up from the REFER and still bridge in the first call leg?  It's OK if the answer is 'no', I just need to know what my options are.
>
>   
I am sorry, but the answer is really no. The B2BUA must be in the middle 
of the call from the beginning.

Regards,
Anca

> Thanks,
>
> Jeff K
>
> -----Original Message-----
> From: users-bounces at lists.opensips.org [mailto:users-bounces at lists.opensips.org] On Behalf Of Anca Vamanu
> Sent: Monday, November 09, 2009 7:17 AM
> To: OpenSIPS users mailling list
> Subject: Re: [OpenSIPS-Users] Transfer issue
>
> Hi Jeff,
>
>
> Jeff Kronlage wrote:
>   
>> Anca,
>>
>> The key pieces of my config file are:
>>
>> Loadmodule "tm.so"
>> loadmodule "b2b_entities.so"
>> loadmodule "b2b_logic.so"
>>
>> modparam("tm", "pass_provisional_replies", 1)
>> modparam("b2b_entities","server_address","sip:opensips at myproxyabc.com")
>> modparam("b2b_logic", "script_scenario", "/usr/local/etc/opensips/refer_script.xml")
>> modparam("b2b_entities", "script_req_route", "b2b_request")
>> modparam("b2b_entities", "script_reply_route", "b2b_reply")
>>
>> ...and down in route[1], just prior to where I would normally call t_relay():
>>
>> if (is_method("REFER")) {
>> 	b2b_init_request("refer");
>> 	exit;
>> }
>>
>>   
>>     
> No, no, no, you should no  call b2b_init_request for REFER but for the 
> initial INVITE - since the B2BUA must but itself in the middle of the 
> call from the beginning.
>
>
>   
>> The contents of /usr/local/etc/opensips/refer_script.xml:
>>
>> <?xml version="1.0"?>
>> <scenario id="refer" name="Handle refer at server" param="0" type="script">
>>   <init>
>>     <bridge>
>>       <server>
>>         <id>server1</id>
>>       </server>
>>       <client>
>>         <id>client1</id>
>>         <type>message</type>
>>         <destination>
>>           <value type="initial">server1</value>
>>         </destination>
>>       </client>
>>     </bridge>
>>   </init>
>>
>>   <rules>
>>      <request>
>>        <refer>
>>          <rule id="1">
>>            <action>
>>              <send_reply>
>>                <code>202</code>
>>                <reason>Accepted</reason>
>>              </send_reply>
>>              <end_dialog_leg/>
>>              <bridge>
>>                <client>
>>                  <peer/>
>>                </client>
>>                <client>
>>                  <id>client2</id>
>>                  <destination>
>>                    <value type="header">Refer-To</value>
>>                  </destination>
>>                </client>
>>              </bridge>
>>            </action>
>>          </rule>
>>        </refer>
>>     </request>
>>   </rules>
>> </scenario>
>>
>> So I believe I've done everything you've suggested?  The only thing that was a little strange is that when I compiled from the svn, I had to edit /parser/parse_fline.h.  I had found items such as INVITE_LEN in there, and my compiler complained that REFER_LEN, as well as several other variables, were undefined.  I modified this section of parse_fline.h to the following:
>>
>> #define INVITE  "INVITE"
>> #define CANCEL  "CANCEL"
>> #define ACK             "ACK"
>> #define BYE             "BYE"
>> #define INFO    "INFO"
>> #define PRACK   "PRACK"
>> #define REFER   "REFER"
>> #define SUBSCRIBE       "SUBSCRIBE"
>> #define NOTIFY  "NOTIFY"
>> #define MESSAGE "MESSAGE"
>>
>> #define INVITE_LEN 6
>> #define CANCEL_LEN 6
>> #define ACK_LEN 3
>> #define BYE_LEN 3
>> #define INFO_LEN 4
>> #define PRACK_LEN 5
>> #define REFER_LEN 5
>> #define SUBSCRIBE_LEN 9
>> #define NOTIFY_LEN 6
>> #define MESSAGE_LEN 7
>>
>>   
>>     
> I forgot to commit the parse_fline.h file on friday. I have commited it 
> today. You can delete yours and update from svn.
>
> Regards,
> Anca
>   
>> Please advise,
>>
>> Jeff
>>
>> -----Original Message-----
>> From: users-bounces at lists.opensips.org [mailto:users-bounces at lists.opensips.org] On Behalf Of Anca Vamanu
>> Sent: Monday, November 09, 2009 2:34 AM
>> To: OpenSIPS users mailling list
>> Subject: Re: [OpenSIPS-Users] Transfer issue
>>
>> Hi Jeff,
>>
>>
>> It seems that the b2b module just does simple forward of REFER request 
>> in your setup.
>> Have you loaded the refer scenario? You can find it here: 
>> http://www.opensips.org/Resources/B2buaTutorial#toc15. You have to put 
>> in in a file and then set the 'script_scenario' parameter to the path of 
>> the file:
>>
>> modparam("b2b_logic", "script_scenario", "path_to_scenario_refer.xml")
>>
>> The you have to call the b2b_init_request function with the "refer" 
>> parameter:
>> b2b_init_request("refer");
>>
>> Regards,
>> Anca
>>
>>
>> Jeff Kronlage wrote:
>>   
>>     
>>> Anca,
>>>
>>> Thanks again for your work on this.  I've gotten the b2b modules working and I'm attempting to use the REFER scenario, but I'm having some confusion regarding how a REFER with a B2BUA should be handled.
>>>
>>> My test environment looks like this:
>>>
>>> UA1 (softphone) ---INVITE--> [Opensips] ---PSTN_GATEWAY(UA2)--> POTS Phone
>>> ..... (Session progress/OK/etc) ....
>>> UA1 (softphone) ---ACK-->    [Opensips] ---> PSTN_GATEWAY(UA2)
>>>
>>> At this point, the first call is setup.
>>>
>>> UA1 (softphone) ---REFER UA2 to UA3-->  [Opensips] **b2b module called**
>>> B2B             ---REFER B2B to UA3-->  PSTN_GATEWAY (UA2)
>>> B2B             <--404 NOT FOUND--  PSTN_GATEWAY (UA2)
>>> B2B             ---404 NOT FOUND->  UA1 (softphone) 
>>>
>>> Obviously this fails.  Note this same problem occurs on two completely separate gateways with different hardware. My questions are:
>>>
>>> 1) Shouldn't the b2b scenario send an INVITE off to UA3, wait for the OK/ACK, then simply REFER UA2 to UA3?  It seems to me that a B2B -> UA3 refer (which is what I appear to be getting) is out-of-dialog, and many gateways can't start a dialog with a REFER anyway.
>>> 2) If not, any ideas on what I'm doing wrong?
>>>
>>> The pertinent parts of my sip dump are below, beginning with the first REFER, are below:
>>>
>>>         REFER sip:18002441111 at 208.94.157.10:5060;transport=udp SIP/2.0
>>>         Via: SIP/2.0/UDP 70.57.173.114:63390;branch=z9hG4bK-d8754z-501a700165366947-1---d8754z-;rport
>>>         Max-Forwards: 70
>>>         Route: <sip:64.111.16.50;lr;ftag=a837e85e;did=847.0253b4b4>
>>>         Contact: <sip:7194760273 at 70.57.173.114:63390>
>>>         To: <sip:18002441111 at myproxyabc:5060>;tag=b9d5ed0-13c4-4af6e7b5-46585e8b-24ef0427
>>>         From: "3CXPhone"<sip:7194760273 at myproxyabc.com:5060>;tag=a837e85e
>>>         Call-ID: NDY4YWZhMzRjMDQzZmM2MTU0YTg5YzRlZmFlMzU5NDc.
>>>         CSeq: 4 REFER
>>>         Proxy-Authorization: <omitted>
>>>         User-Agent: 3CXVoipPhone 4.0.9530.0
>>>         Refer-To: <sip:18887779569 at prxdev.sip.data102.com:5060>
>>>         Referred-By: "3CXPhone"<sip:7194760273 at prxdev.sip.data102.com:5060>
>>>         Content-Length: 0
>>>
>>>         SIP/2.0 100 Trying
>>>         Via: SIP/2.0/UDP 70.57.173.114:63390;branch=z9hG4bK-d8754z-501a700165366947-1---d8754z-;rport=63390
>>>         To: <sip:18002441111 at myproxyabc.com:5060>;tag=b9d5ed0-13c4-4af6e7b5-46585e8b-24ef0427
>>>         From: "3CXPhone"<sip:7194760273 at myproxyabc.com:5060>;tag=a837e85e
>>>         Call-ID: NDY4YWZhMzRjMDQzZmM2MTU0YTg5YzRlZmFlMzU5NDc.
>>>         CSeq: 4 REFER
>>>         Server: OpenSIPS (1.6.1-notls (i386/linux))
>>>         Content-Length: 0
>>>
>>>         REFER sip:18002441111 at 208.94.157.10:5060 SIP/2.0
>>>         Via: SIP/2.0/UDP 64.111.16.50;branch=z9hG4bK7ea5.271c79b2.0
>>>         To: sip:18002441111 at 208.94.157.10:5060
>>>         From: <sip:7194760273 at myproxyabc.com:5060>;tag=b9952cfdcb0f3026fcffe5bf74779956-dca7
>>>         CSeq: 2 REFER
>>>         Call-ID: B2B.462.0.1257695261
>>>         Content-Length: 0
>>>         User-Agent: OpenSIPS (1.6.1-notls (i386/linux))
>>>         Contact: <sip:opensips at myproxyabc.com:5060>
>>>
>>>         SIP/2.0 404 Not Found
>>>         From: <sip:7194760273 at myproxyabc.com:5060>;tag=b9952cfdcb0f3026fcffe5bf74779956-dca7
>>>         To: <sip:18002441111 at 208.94.157.10:5060>;tag=b9d5ed0-13c4-4af6e7c2-465890d5-3ca2cb05
>>>         Call-ID: B2B.462.0.1257695261
>>>         CSeq: 2 REFER
>>>         Via: SIP/2.0/UDP 64.111.16.50;branch=z9hG4bK7ea5.271c79b2.0
>>>         Content-Length: 0
>>>
>>> As always, help is much appreciated!
>>>
>>> Jeff K
>>>
>>> -----Original Message-----
>>> From: users-bounces at lists.opensips.org [mailto:users-bounces at lists.opensips.org] On Behalf Of Anca Vamanu
>>> Sent: Friday, November 06, 2009 9:49 AM
>>> To: OpenSIPS users mailling list
>>> Subject: Re: [OpenSIPS-Users] Transfer issue
>>>
>>> Hi,
>>>
>>> The REFER handing support has been added in B2BUA. Please update from 
>>> svn to use this feature.
>>> To enable it you have to load a simple scenario document that describes 
>>> the behavior of the B2BUA when a REFER message is received and then call 
>>> b2b_init_request("refer") for the initial Invite message.
>>> I have also updated the documentation page and you can find there also 
>>> the scenario document for this feature: 
>>> http://www.opensips.org/Resources/B2buaTutorial#toc15.
>>>
>>> Regards,
>>> Anca
>>>
>>>
>>> Jeff Kronlage wrote:
>>>   
>>>     
>>>       
>>>> Hi Bogdan,
>>>>
>>>> Thanks for the fantastic news.
>>>>
>>>> I don't suppose you have any samples of how to interpret a REFER and perform a transfer?
>>>>
>>>> I've started pouring through the documentation for the B2BUA, but I'm still grinding through it :)
>>>>
>>>> Thanks,
>>>>
>>>> Jeff
>>>>
>>>> -----Original Message-----
>>>> From: users-bounces at lists.opensips.org [mailto:users-bounces at lists.opensips.org] On Behalf Of Bogdan-Andrei Iancu
>>>> Sent: Saturday, October 24, 2009 11:18 AM
>>>> To: OpenSIPS users mailling list
>>>> Subject: Re: [OpenSIPS-Users] Transfer issue
>>>>
>>>> Hi Iñaki,
>>>>
>>>> Actually this is why the B2BUA module was designed in opensips - in most 
>>>> of the cases you need to control/change the dialog(s) but without any 
>>>> media dependencies/penalties (like you have now in most of the IP-PBXs).
>>>>
>>>> So you actually can have a highly scalable signalling B2BUA - the 
>>>> opensips module could be used to locally (on opensips) interpret the 
>>>> REFER and do the call transfer, totally transparent to the other party.
>>>>
>>>> Regards,
>>>> Bogdan
>>>>
>>>> Iñaki Baz Castillo wrote:
>>>>   
>>>>     
>>>>       
>>>>         
>>>>> El Sábado, 24 de Octubre de 2009, Jeff Kronlage escribió:
>>>>>   
>>>>>     
>>>>>       
>>>>>         
>>>>>           
>>>>>>  Our setup has been initially
>>>>>>  engineered for thousands of concurrent calls, and we're hoping to avoid
>>>>>>  having a dozen Asterisk machines :)
>>>>>>     
>>>>>>       
>>>>>>         
>>>>>>           
>>>>>>             
>>>>> What you are looking for is the dream all want: a scalable SIP B2BUA (no media 
>>>>> handling), so a cluster of these B2BUA's would be located behind a proxy 
>>>>> (which does load balancing and failover). And it would be greater if the B2BUA 
>>>>> share information (about current dialogs and so) in some way (memcache? common 
>>>>> database?...).
>>>>>
>>>>> You could implement it with SipServlets (see Sailin SIP application server or 
>>>>> others), or FreeSwitch which allows calls without handling the media...
>>>>> Of course, Asterisk is not the most suitable solution: it involves media 
>>>>> handling ("canreinvite" is a hack), it has a very poor SIP stack... and 
>>>>> basically it's designed to be a single PBX box.
>>>>>
>>>>>
>>>>>
>>>>>   
>>>>>     
>>>>>       
>>>>>         
>>>>>           
>>>> _______________________________________________
>>>> Users mailing list
>>>> Users at lists.opensips.org
>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>
>>>> _______________________________________________
>>>> Users mailing list
>>>> Users at lists.opensips.org
>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>
>>>>   
>>>>     
>>>>       
>>>>         
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>   
>>>     
>>>       
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>   
>>     
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>   




More information about the Users mailing list