<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@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;}
@font-face
        {font-family:Menlo;
        panose-1:2 11 6 9 3 8 4 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></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]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Oleg,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">OpenSIPS stores all the changes you make to the INVITE and applies them all together right before sending it out. This is to be more efficient. So you cannot usually see these types of changes during processing. This means if you want to
 keep using those headers in your script you need to remember them yourself.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The easiest way to do this from your code is to just access the same $json variable in the BALANCE route. JSON variables in OpenSIPS are just like $var in that they are persistent within an OpenSIPS process [1] (so make sure you initialize!).
 So as long as you are not calling any async function in between, the values will all still be there.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Alternatively, you can store the values in AVPs [2]. Assuming you are using TM, AVPs are attached to the transaction and will persist through branches and replies, in case you need the values there as well. AVPs are stacks, so the model
 I have used for data like this is to have 2 AVPs – one for the keys and one for the values – and keep them in sync.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[1] - <a href="https://opensips.org/html/docs/modules/2.4.x/json.html#pv_json">
https://opensips.org/html/docs/modules/2.4.x/json.html#pv_json</a><o:p></o:p></p>
<p class="MsoNormal">[2] - <a href="https://www.opensips.org/Documentation/Script-CoreVar-2-4#toc2">
https://www.opensips.org/Documentation/Script-CoreVar-2-4#toc2</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:black">Ben Newlin </span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">Users <users-bounces@lists.opensips.org> on behalf of Oleg Podguyko via Users <users@lists.opensips.org><br>
<b>Reply-To: </b>Oleg Podguyko <podguiko@mail.ru>, OpenSIPS users mailling list <users@lists.opensips.org><br>
<b>Date: </b>Thursday, September 26, 2019 at 1:49 PM<br>
<b>To: </b>"users@lists.opensips.org" <users@lists.opensips.org><br>
<b>Subject: </b>[OpenSIPS-Users] Take the value of the newly added SIP X-header for the log<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Hello everebody!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">My opensips works as proxy. Get INVITE from one side and communicates with a remote web server via rest. Opensips sends a request to the web server and receives a lot of custom data, which it converts to SIP X-header. In the end I get 10
 different SIP X-headers<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">$var(i) = 0; <br>
            while( $json(resp/headers[$var(i)]) )<br>
            {<br>
                $var(header)=$json(resp/headers[$var(i)]/header);<br>
                $var(value)=$json(resp/headers[$var(i)]/value);<br>
                $var(i) = $var(i) + 1;           <br>
                # add sip headers<br>
                append_hf("$var(header):$var(value)\r\n");<br>
            } <br>
        route(BALANCE);<br>
        route(RELAY);  <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> Everything works. Now, In the next route (BALANCE), I want to output the header that was just added to the log<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Menlo;color:#333333;background:#F8F8F8">xlog("L_INFO", "$X-My-Custom-Header: $(hdr(X-My-Custom-Header))");</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">But in the log I always see null. Although in the INVITE wich opensips sends, all SIP X-header in place. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Does this mean I can't get the value of the newly added SIP X-header? What should I do to get these values?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal">--<br>
Олег Подгуйко<o:p></o:p></p>
</div>
</div>
</div>
</div>
</body>
</html>