<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: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=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 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:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:111364935;
        mso-list-type:hybrid;
        mso-list-template-ids:605171922 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></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="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hello,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m trying to implement RLS with integrated XCAP server. I have successfully run the Kamailio instance with the following snippet.<o:p></o:p></p>
<p class="MsoNormal">Since I had no RLS clients available, I have tried to test this with SIPp. The attached pcap trace is the result.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Test:<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman"">
</span></span><![endif]>Send an XCAP signal over http to Kamailio.<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman"">
</span></span><![endif]>Register and subscribe Kamailio.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The test does store the xml received over http in the xcap table in the database. But rls module does not store the data neither in rls_presentity or rls_watcher.<o:p></o:p></p>
<p class="MsoNormal">When I sent the Subscribe with sipp, the server throws error that subscription was not found in the database.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I would like to know if I’m doing something wrong to implement this service. Is there any brief tutorial on how to implement this?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Kamailio.cfg snippet:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">##Presence<o:p></o:p></p>
<p class="MsoNormal">modparam("presence", "server_address", PRESENCE_IP)<o:p></o:p></p>
<p class="MsoNormal">modparam("presence", "clean_period", 65)<o:p></o:p></p>
<p class="MsoNormal">modparam("presence", "db_update_period", 60)<o:p></o:p></p>
<p class="MsoNormal">modparam("presence", "max_expires", 75)<o:p></o:p></p>
<p class="MsoNormal">modparam("presence", "fallback2db", 1)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">modparam("presence_xml", "db_url", DBURL)<o:p></o:p></p>
<p class="MsoNormal">modparam("presence_xml", "force_active", 0)<o:p></o:p></p>
<p class="MsoNormal">modparam("presence_xml", "integrated_xcap_server", 1)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">##rls modparams<o:p></o:p></p>
<p class="MsoNormal">modparam("rls", "db_url", DBURL)<o:p></o:p></p>
<p class="MsoNormal">modparam("rls", "waitn_time", 10)<o:p></o:p></p>
<p class="MsoNormal">modparam("rls", "integrated_xcap_server", 1)<o:p></o:p></p>
<p class="MsoNormal">modparam("rls", "max_notify_body_length", 32000)<o:p></o:p></p>
<p class="MsoNormal">modparam("rls", "to_presence_code", 10)<o:p></o:p></p>
<p class="MsoNormal">modparam("rls", "server_address", RLS_URI)<o:p></o:p></p>
<p class="MsoNormal">modparam("rls", "outbound_proxy", PUA_OUTBOUND_PROXY)<o:p></o:p></p>
<p class="MsoNormal">modparam("rls", "xcap_root", XCAP_ROOT)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">##XCAP modparams<o:p></o:p></p>
<p class="MsoNormal">modparam("xcap_server", "db_url", DBURL)<o:p></o:p></p>
<p class="MsoNormal">modparam("xcap_client", "db_url", DBURL)<o:p></o:p></p>
<p class="MsoNormal">modparam("xcap_client", "query_period", 50)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">route[PRESENCE]<o:p></o:p></p>
<p class="MsoNormal">{<o:p></o:p></p>
<p class="MsoNormal">if(!is_method("PUBLISH|SUBSCRIBE"))<o:p></o:p></p>
<p class="MsoNormal"> return;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">#!ifdef WITH_PRESENCE<o:p></o:p></p>
<p class="MsoNormal"> if (!t_newtran())<o:p></o:p></p>
<p class="MsoNormal"> {<o:p></o:p></p>
<p class="MsoNormal"> sl_reply_error();<o:p></o:p></p>
<p class="MsoNormal"> exit;<o:p></o:p></p>
<p class="MsoNormal"> };<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> if(is_method("PUBLISH"))<o:p></o:p></p>
<p class="MsoNormal"> {<o:p></o:p></p>
<p class="MsoNormal"> handle_publish();<o:p></o:p></p>
<p class="MsoNormal"> t_release();<o:p></o:p></p>
<p class="MsoNormal"> }<o:p></o:p></p>
<p class="MsoNormal"> else<o:p></o:p></p>
<p class="MsoNormal"> if( is_method("SUBSCRIBE"))<o:p></o:p></p>
<p class="MsoNormal"> {<o:p></o:p></p>
<p class="MsoNormal"> $var(ret_code)= rls_handle_subscribe();<o:p></o:p></p>
<p class="MsoNormal"> xlog("Subscribe: $var(ret_code)");<o:p></o:p></p>
<p class="MsoNormal"> if($var(ret_code)== 10)<o:p></o:p></p>
<p class="MsoNormal"> handle_subscribe();<o:p></o:p></p>
<p class="MsoNormal"> t_release();<o:p></o:p></p>
<p class="MsoNormal"> }<o:p></o:p></p>
<p class="MsoNormal"> exit;<o:p></o:p></p>
<p class="MsoNormal">#!endif<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> # if presence enabled, this part will not be executed<o:p></o:p></p>
<p class="MsoNormal"> if (is_method("PUBLISH") || $rU==$null)<o:p></o:p></p>
<p class="MsoNormal"> {<o:p></o:p></p>
<p class="MsoNormal"> sl_send_reply("404", "Not here");<o:p></o:p></p>
<p class="MsoNormal"> exit;<o:p></o:p></p>
<p class="MsoNormal"> }<o:p></o:p></p>
<p class="MsoNormal"> return;<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">In the [xhttp:request]:<o:p></o:p></p>
<p class="MsoNormal">switch($rm) {<o:p></o:p></p>
<p class="MsoNormal"> case "PUT":<o:p></o:p></p>
<p class="MsoNormal"> xcaps_put("$var(uri)", "$hu", "$rb");<o:p></o:p></p>
<p class="MsoNormal"> if($xcapuri(u=>auid)=~"pres-rules")<o:p></o:p></p>
<p class="MsoNormal"> {<o:p></o:p></p>
<p class="MsoNormal"> xlog("===== xhttp put: refreshing watchers for $var(uri)\n");<o:p></o:p></p>
<p class="MsoNormal"> pres_update_watchers("$var(uri)", "presence");<o:p></o:p></p>
<p class="MsoNormal"> pres_refresh_watchers("$var(uri)", "presence", 1);<o:p></o:p></p>
<p class="MsoNormal"> }<o:p></o:p></p>
<p class="MsoNormal"> else if ($xcapuri(u=>auid)=~"resource-lists"<o:p></o:p></p>
<p class="MsoNormal"> || $xcapuri(u=>auid)=~"rls-services")<o:p></o:p></p>
<p class="MsoNormal"> {<o:p></o:p></p>
<p class="MsoNormal"> xlog("==== xhttp put: refreshing rls watchers $var(uri)\n");<o:p></o:p></p>
<p class="MsoNormal"> rls_update_subs("$var(uri)", "presence");<o:p></o:p></p>
<p class="MsoNormal"> }<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> exit;<o:p></o:p></p>
<p class="MsoNormal"> break;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Gnaneshwar Gatla | InTouch Health | Software Developer<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">6330 Hollister Ave. Goleta CA, 93117 | P: 805.562.8686 ext: 199<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>