<div>Hi all,</div>
<div>&nbsp;</div>
<div>I use two X-Lite SIP clients with Contact list supported. I want to use&nbsp;chat (text mode)&nbsp;with each&nbsp;sip clients(X-Lite) via Openser.</div>
<div>I study the documents of Openser (&nbsp;<a href="http://openser.org/docs/">http://openser.org/docs/</a> ), I think the modules ( presence, pua, pua_usrloc, pua_mi ) should what I need.</div>
<div>But I don&#39;t know how to set it up. I can&#39;t see any online or offline information for both Xlite1 and Xlite2. Of couse, I add both of them as friends in contact list on X-Lite software.</div>
<div>&nbsp;</div>
<div>Can anyone kind to give me some tips or any URL to reference please?</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>Xlite1&nbsp; ==chat==&gt; Openser ==Chat==&gt; Xlite2</div>
<div>&nbsp;</div>
<div># -- presence params --<br>loadmodule &quot;presence.so&quot;<br>modparam(&quot;presence&quot;, &quot;db_url&quot;, &quot;mysql://openser:openserrw@localhost/openser&quot;)<br>modparam(&quot;presence&quot;, &quot;max_expires&quot;, 3600)
<br>modparam(&quot;presence&quot;, &quot;force_active&quot;, 1)<br>modparam(&quot;presence&quot;, &quot;server_address&quot;, &quot;sip:<a href="http://127.0.0.1:5060">127.0.0.1:5060</a>&quot; )</div>
<div>&nbsp;</div>
<div>#### I don&#39;t know how to configure&nbsp;them in DB</div>
<div># loadmodule &quot;pua.so&quot;<br># modparam(&quot;pua&quot;, &quot;db_url&quot;, &quot;mysql://openser:openserrw@localhost/openser&quot;)<br># loadmodule &quot;pua_mi.so&quot;<br># loadmodule &quot;pua_usrloc.so&quot;
</div>
<div>&nbsp;</div>
<div>route[0]</div>
<div>{</div>
<div>&nbsp;xlog(&quot;L_INFO&quot;, &quot;New request - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>&nbsp;force_rport();<br>&nbsp;if(msg:len &gt; max_len)<br>&nbsp;{<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;xlog(&quot;L_INFO&quot;, &quot;Message too big - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);
<br>&nbsp;&nbsp;sl_send_reply(&quot;513&quot;, &quot;Message Too Big&quot;);<br>&nbsp;&nbsp;exit;<br>&nbsp;}<br>&nbsp;if (!mf_process_maxfwd_header(&quot;10&quot;))<br>&nbsp;{<br>&nbsp;&nbsp;xlog(&quot;L_INFO&quot;, &quot;Too many hops - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);
<br>&nbsp;&nbsp;sl_send_reply(&quot;483&quot;, &quot;Too Many Hops&quot;);<br>&nbsp;&nbsp;exit;<br>&nbsp;}<br>&nbsp;if(!is_method(&quot;REGISTER&quot;))<br>&nbsp;{<br>&nbsp;&nbsp;if(nat_uac_test(&quot;19&quot;))<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;record_route(&quot;;nat=yes&quot;);<br>&nbsp;&nbsp;}
<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;record_route();<br>&nbsp;&nbsp;}<br>&nbsp;}<br>&nbsp;if(is_method(&quot;CANCEL&quot;) || is_method(&quot;BYE&quot;))<br>&nbsp;{<br>&nbsp;&nbsp;end_media_session();<br>&nbsp;}</div>
<div>&nbsp;if (is_method(&quot;NOTIFY&quot;)) {<br>&nbsp;&nbsp;sl_send_reply(&quot;200&quot;, &quot;OK&quot;);<br>&nbsp;&nbsp;exit;<br>&nbsp;};</div>
<div>
<p>&nbsp;if(loose_route())<br>&nbsp;{<br>&nbsp;&nbsp;if(!has_totag())<br>&nbsp;&nbsp;{&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;xlog(&quot;L_INFO&quot;, &quot;Initial loose-routing rejected - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>&nbsp;&nbsp;&nbsp;sl_send_reply(&quot;403&quot;, &quot;Initial Loose-Routing Rejected&quot;);
<br>&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;if(nat_uac_test(&quot;19&quot;) || search(&quot;^Route:.*;nat=yes&quot;))<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;fix_nated_contact();<br>&nbsp;&nbsp;&nbsp;if(!search(&quot;^Content-Length:[ ]*0&quot;))<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;setbflag(6);<br>&nbsp;&nbsp;&nbsp;}
<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;if(is_method(&quot;BYE&quot;))<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;setflag(24); # account failed transactions<br>&nbsp;&nbsp;&nbsp;setflag(25); # account successful transactions<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;# mark as loose-routed for acc<br>&nbsp;&nbsp;setflag(26);<br>&nbsp;&nbsp;route(11);
<br>&nbsp;}<br>&nbsp;if(is_method(&quot;REGISTER&quot;))<br>&nbsp;{<br>&nbsp;&nbsp;route(10);<br>&nbsp;}<br>&nbsp;setflag(24); # account failed transactions<br>&nbsp;setflag(25); # account successful transactions</p>
<p>&nbsp;if(is_method(&quot;INVITE&quot;))<br>&nbsp;{<br>&nbsp;&nbsp;route(12);<br>&nbsp;}<br>&nbsp;if(is_method(&quot;CANCEL&quot;) || is_method(&quot;ACK&quot;))<br>&nbsp;{<br>&nbsp;&nbsp;route(16);<br>&nbsp;}</p>
<p>&nbsp;## Added for Presence<br>&nbsp;if(is_method(&quot;PUBLISH&quot;) || is_method(&quot;SUBSCRIBE&quot;) || is_method(&quot;MESSAGE&quot;))<br>&nbsp;{<br>&nbsp;&nbsp;route(19);<br>&nbsp;}</p>
<p>&nbsp;route(17);<br>}<br></p></div>
<div>route[19]<br>{<br>&nbsp;xlog(&quot;L_INFO&quot;, &quot;route[19] Presence Handling Router - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>&nbsp;# absorb retransmissions<br>&nbsp;if (! t_newtran())<br>&nbsp;{<br>&nbsp;&nbsp;&nbsp; sl_reply_error();
<br>&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;};<br>&nbsp;<br>&nbsp;if(is_method(&quot;PUBLISH&quot;))<br>&nbsp;{<br>&nbsp;&nbsp;handle_publish();<br>&nbsp;&nbsp;t_release();<br>&nbsp;} else if(is_method(&quot;SUBSCRIBE&quot;)) {<br>&nbsp;&nbsp;handle_subscribe();<br>&nbsp;&nbsp;t_release();<br>&nbsp;};<br>&nbsp;exit;
<br>}<br>&nbsp;</div>
<div><br clear="all"><br>-- <br><br>Best Regards<br>Charles </div>