<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hi Li,</p>
    <p>For passing around data between the b2b request route and
      local_route, in the context of an ongoing B2B session, you can use
      the $b2b_logic.ctx variable[1]. That would take care of
      transferring the Cseq from step 1 to step 2 and the id from step 3
      to step 4.</p>
    <p>As for your cseq map, you can use the cachedb_local module, and
      maybe the $b2b_logic.key variable alongside Cseq2 for building a
      proper key.<br>
    </p>
    <p>[1]
      <a class="moz-txt-link-freetext" href="https://opensips.org/docs/modules/3.3.x/b2b_logic.html#b2b_logic.key">https://opensips.org/docs/modules/3.3.x/b2b_logic.html#b2b_logic.key</a></p>
    <p>Regards,</p>
    <pre class="moz-signature" cols="72">-- 
Vlad Patrascu
OpenSIPS Core Developer
<a class="moz-txt-link-freetext" href="http://www.opensips-solutions.com">http://www.opensips-solutions.com</a></pre>
    <div class="moz-cite-prefix">On 22.07.2022 23:02, Li Cai wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:SA1PR09MB80004620A34C1A7EE463113E8E909@SA1PR09MB8000.namprd09.prod.outlook.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <style>@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}span.EmailStyle18
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}div.WordSection1
        {page:WordSection1;}ol
        {margin-bottom:0cm;}ul
        {margin-bottom:0cm;}</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal"><span lang="EN-US">Hi experts,<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">I’m working on the
            implementation for ‘2.4.6 Multiple REFER Requests in a
            Dialog’ of RFC3515 in a B2B SIP Proxy. Right now, I got
            stuck with two problems in the solution. Please see the
            paragraph from RFC-  <o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:"Courier
            New";color:black;mso-fareast-language:EN-CA">   A REFER
            creates an implicit subscription sharing the dialog<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:"Courier
            New";color:black;mso-fareast-language:EN-CA">  
            identifiers in the REFER request.  If more than one REFER is
            issued<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:"Courier
            New";color:black;mso-fareast-language:EN-CA">   in the
            same dialog (a second attempt at transferring a call for<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:"Courier
            New";color:black;mso-fareast-language:EN-CA">  
            example), the dialog identifiers do not provide enough
            information to<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:"Courier
            New";color:black;mso-fareast-language:EN-CA">  
            associate the resulting NOTIFYs with the proper REFER.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:"Courier
            New";color:black;mso-fareast-language:EN-CA"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:"Courier
            New";color:black;mso-fareast-language:EN-CA">   Thus,
            for the second and subsequent REFER requests a UA receives
            in a<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:"Courier
            New";color:black;mso-fareast-language:EN-CA">   given
            dialog, it MUST include an id parameter[2] in the Event
            header<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:"Courier
            New";color:black;mso-fareast-language:EN-CA">   field
            of each NOTIFY containing the sequence number (the number
            from<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:"Courier
            New";color:black;mso-fareast-language:EN-CA">   the
            CSeq header field value) of the REFER this NOTIFY is
            associated<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:"Courier
            New";color:black;mso-fareast-language:EN-CA">   with. 
            This id parameter MAY be included in NOTIFYs to the first<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:"Courier
            New";color:black;mso-fareast-language:EN-CA">   REFER a
            UA receives in a given dialog.  A SUBSCRIBE sent to refresh<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:"Courier
            New";color:black;mso-fareast-language:EN-CA">   or
            terminate this subscription MUST contain this id parameter.<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">Different from the
            definition in RFC, the NOTIFY forwarded by the proxy
            contains the same Id in Event header as the other side.
            Please see the below chart –<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">                         
                               B2BProxy<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">        
                                                       |        
            <o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">                <-
            REFER 2 (Cseq=2) |                  <-REFER 1
             (Cseq=1003)<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"> 
                                       . . .                  |         
            . . .<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">->NOTIFY 1 (event:<b>id=2</b>) 
                    |  ->NOTIFY 2 (<u>event<b>:id=2</b>)</u><o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">The current problem is,
            the above NOTIFY on the right side should
            <u>include ‘id=1003’ instead of ‘id=2’</u>.<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">The solution I’m trying
            is as in the following flow –<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">      1.         get
            CSeq 1 of REFER 1 in route[b2b_request]{}  -><o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">      2.         get
            CSeq 2 of REFER 2 in local_route{},  then save the
            pair(key=CSeq2, value=CSeq1) in a map set-><o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">      3.         get Id
             from NOTIFY 1 event in route[b2b_request]{}  -><o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">      4.         use Id
             as key then get matched CSeq1 from the map set, use
            remove_hf() and append_hf() to modify the event header in
            local_route{}<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">My two questions are:<o:p></o:p></span></p>
        <ol style="margin-top:0cm" type="1" start="1">
          <li class="MsoListParagraph"
            style="margin-left:0cm;mso-list:l1 level1 lfo2"><span
              lang="EN-US">To transfer Cseq 1 from step1 to step2, I
              tried a variable in the AVP type but it didn’t work. The
              script variable can work but it doesn’t fit because the
              processing is based on per request.  Can I ask if you have
              any suggest on how to transfer the value from
              route[b2b_request]{} to local_route{}?  <o:p></o:p></span></li>
          <li class="MsoListParagraph"
            style="margin-left:0cm;mso-list:l1 level1 lfo2"><span
              lang="EN-US">In the step2, I tried to create and operate a
              JSON map set to save the CSeq pairs. But the JSON data
              didn’t work for me.<o:p></o:p></span></li>
        </ol>
        <p class="MsoListParagraph"><span lang="EN-US">            My
            source : <o:p></o:p></span></p>
        <p class="MsoListParagraph"><span lang="EN-US">                                    $json(csList)
            = ””;       # Initialize the data set, not sure if it’s
            correct<o:p></o:p></span></p>
        <p class="MsoListParagraph"><span lang="EN-US">                                   
            $json(csList/”$cs”) = “$avp(csNum)”;<o:p></o:p></span></p>
        <p class="MsoListParagraph"><span lang="EN-US">            The
            error I got:<o:p></o:p></span></p>
        <p class="MsoListParagraph"><span lang="EN-US">                                   
            ERROR:core:do_assign: setting PV failed<o:p></o:p></span></p>
        <p class="MsoListParagraph"><span lang="EN-US">                                   
            ERROR:core:do_assign: error at
            /usr/local//et/opensips/opensips.cfg:531<o:p></o:p></span></p>
        <p class="MsoListParagraph"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoListParagraph"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">Thank you very much for
            the help! Any your suggests are very welcomed.
            <o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">Thanks,<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">Li<o:p></o:p></span></p>
        <p class="MsoListParagraph"><span lang="EN-US">      <o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p></o:p></span></p>
      </div>
      NOTICE TO RECIPIENT: This email, including attachments, may
      contain information which is confidential, proprietary,
      attorney-client privileged and / or controlled under U.S. export
      laws and regulations and may be restricted from disclosure by
      applicable State and Federal law. Nothing in this email shall
      create any legal binding agreement between the parties unless
      expressly stated herein and provided by an authorized
      representative of Comtech Telecommunications Corp. or its
      subsidiaries. If you are not the intended recipient of this
      message, be advised that any dissemination, distribution, or use
      of the contents of this message is strictly prohibited. If you
      received this message in error, please notify us immediately by
      return email and permanently delete all copies of the original
      email and any attached documentation from any computer or other
      media.
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
Users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a>
<a class="moz-txt-link-freetext" href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre>
    </blockquote>
  </body>
</html>