<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" 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=Windows-1252">
<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:Aptos;
        panose-1:2 11 0 4 2 2 2 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:10.0pt;
        font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt">The SQL Cacher module I mentioned does exactly this already. It seems you’ve just created a very simplified version of that module in your script. I’d recommend checking it out:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><a href="https://opensips.org/docs/modules/3.2.x/sql_cacher.html">https://opensips.org/docs/modules/3.2.x/sql_cacher.html</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:black">Ben Newlin</span><span style="font-size:11.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<div id="mail-editor-reference-message-container">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><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 Alexey <slackway2me@gmail.com><br>
<b>Date: </b>Friday, February 9, 2024 at 12:46 PM<br>
<b>To: </b>OpenSIPS users mailling list <users@lists.opensips.org><br>
<b>Subject: </b>Re: [OpenSIPS-Users] variable/avp value check<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:11.0pt"> EXTERNAL EMAIL - Please use caution with links and attachments <br>
<br>
Hi list,<br>
the problem was solved.<br>
<br>
<br>
Highlights:<br>
<br>
1. Select data from DB using timer_route with timeout (for regular data updates)<br>
and store it in AVP. This AVP is seen in timer_route only. So, put all<br>
its values<br>
into the local_cache (with the same timeout), to be able to use it in<br>
the main route.<br>
<br>
timer_route[id_update, 300] {<br>
    # get all IDs of customers who have some feature (our inner logic)<br>
    # and store all them in a single AVP.<br>
    avp_db_query("select customer_id from customers","$avp(goldencustomers)");<br>
<br>
        # put each AVP's index value into a separate local_cache<br>
attribute (record) with value "1".<br>
        for ($var(blahblah) in $(avp(goldencustomers)[*]))<br>
        cache_store ("local","goldencustomers_$var(blahblah)","1",300);<br>
}<br>
<br>
--------------------------------------------------------------------------------<br>
<br>
2. Get needed parts of SIP-headers according to our inner logic...<br>
Don't forget to reset variables before applying the value!<br>
(See "Hints" section:<br>
</span><a href="https://www.opensips.org/Documentation/Script-CoreVar-3-2#varscript"><span style="font-size:11.0pt">https://protect-us.mimecast.com/s/k5ViCPN5YqtK1MXRWtzXLjI?domain=opensips.org</span></a><span style="font-size:11.0pt"> )<br>
<br>
# main route<br>
route {<br>
...<br>
<br>
# initial INVITES section<br>
...<br>
    $var(customerfullid) = NULL;<br>
    $var(customerfullid) = $(fn{s.select,0, }); # get "Customer-1234<br>
from full CallerID. index 0, separator is space.<br>
<br>
    $var(customerid) = NULL;<br>
    $var(customerid) = $(var(customerfullid){s.select,1,-}); # get<br>
1234 from "Customer-1234<br>
<br>
    $var(ret) = NULL;<br>
    cache_fetch("local", "goldencustomers_$var(blahblah)", $var(ret));<br>
# check if there is a local_cache attribute value for INVITE with such<br>
ID in 'From:' header<br>
    if ($var(ret) == "1") {<br>
        xlog("L_INFO", "[$ci] attr value from cache_local is:<br>
$var(ret) . $var(customerfullid) has privileges. goto route<br>
customers_gold");<br>
        route(customers_gold);<br>
    } else {<br>
        xlog("L_INFO", "[$ci] attr value from cache_local is:<br>
$var(ret) . $var(customerfullid) has no privileges. goto route<br>
customers_all");<br>
        route(customers_all);<br>
    }<br>
...<br>
} #main route END<br>
<br>
--------------------------------------------------------------------------------<br>
<br>
3. Additional routes.<br>
<br>
# do not apply global call-limits here<br>
route[customers_gold] {<br>
    xlog("L_INFO", "[$ci] This is $route . This $var(customerfullid)<br>
has privileges. Global call-limits not applied.");<br>
    ...<br>
}<br>
<br>
# apply global call-limits here<br>
route[customers_all] {<br>
    xlog("L_INFO", "[$ci] This is $route . This $var(customerfullid)<br>
has no privileges. Global call-limits applied.");<br>
   ... # call-limit logic<br>
}<br>
<br>
<br>
<br>
<br>
-- <br>
best regards, Alexey<br>
</span><a href="https://alexeyka.zantsev.com"><span style="font-size:11.0pt">https://protect-us.mimecast.com/s/OVrDCQW5OrCk1rPpOSPre_u?domain=alexeyka.zantsev.com</span></a><span style="font-size:11.0pt"><br>
<br>
_______________________________________________<br>
Users mailing list<br>
Users@lists.opensips.org<br>
</span><a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users"><span style="font-size:11.0pt">https://protect-us.mimecast.com/s/pwfNCR65LvivDBW1EuP_nPb?domain=lists.opensips.org</span></a><span style="font-size:11.0pt"><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</body>
</html>