<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hello,<br>
<br>
<div class="moz-cite-prefix">On 9/5/12 5:12 PM, Stoyan Mihaylov
wrote:<br>
</div>
<blockquote
cite="mid:CAPScudZABNSPWa+eL1sORoP7P8dNqfaMDo1Of7c8B+7A98a7MA@mail.gmail.com"
type="cite">Following examples, I tried to add processing of
offline messages.
<div>Structure of my system is:</div>
<div>SIP client
<->Kamailio<->Asterisk<->Kamailio<->SIP
client</div>
<div>Where Kamailio in above is same server, but SIP clients are
different.</div>
<div>Now I have no problems with audio, video calls and messages,
if both clients are online.</div>
<div>All messages received from client are sent to Asterisk, where
I can or not process them and then I forward back to Kamailio.
When messages came from Asterisk server, then they are sent
directly to end user.</div>
<div>Sending messages to end user - I call this function, only if
message come from allow_source_address():</div>
<div>
<div>route[MSILO_MESSAGE]{</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>if
(lookup("location")){</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>xlog("
Relying");</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>t_relay();</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>}else{</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>xlog("Storing
MSILO_MESSAGE $ru-$tu-$ou");</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>m_store("$ru");</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>t_relay();</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>t_reply("202",
"Accepted");</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>};</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>exit();</div>
<div>}</div>
</div>
<div>When client register: </div>
<div>
<div>route[REGISTRAR] {</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>if
(is_method("REGISTER"))</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>if(isflagset(FLT_NATS))</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>setbflag(FLB_NATB);</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>#
uncomment next line to do SIP NAT pinging </div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>##
setbflag(FLB_NATSIPPING);</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>if
(!save("location",0x04))</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>sl_reply_error();</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>#
MSILO - dumping user's offline messages</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>if
(m_dump("$fu")){</div>
<div>
<span class="Apple-tab-span" style="white-space:pre"> </span>xlog("MSILO:
offline messages for $fu dumped - if they were \n");</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>}else{</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>xlog("MSILO:
no offline messages dumped\n");</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>};</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>exit;</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
<div>}</div>
</div>
<div>I am sending message to offline contact, and I see record in
silo table. Record looks perfect.</div>
<div>Then offline contact become online, I see in debug MSILO:
offline messages for {offlined contact} dumped - if they were </div>
<div>But client do not receive nothing.</div>
<div>In case all contacts are online, then message go to contact,
and is not stored in silo.</div>
<div>Setup of msilio is:</div>
<div>
<div>loadmodule "msilo.so"</div>
<div>
<br>
</div>
<div>modparam("msilo","db_url",DBURL)</div>
<div>modparam("msilo","from_address",<a class="moz-txt-link-rfc2396E" href="sip:registrar@MYDOMAIN">"sip:registrar@MY DOMAIN"</a>)</div>
<div>modparam("msilo","contact_hdr","Contact: registrar@MY
DOMAIN:5060;msilo=yes\r\n")</div>
<div>modparam("msilo","content_type_hdr","Content-Type:
text/plain\r\n")</div>
<div>modparam("msilo","offline_message","***$rU***$rb***")</div>
</div>
<div>By the way - I receive in Asterisk offline message.</div>
<div>Obviously, I am doing something wrong, but I cant understand
what.</div>
<div>Any help is welcome.</div>
<div>Version of Kamailio is:</div>
<div>
<div>#~> kamailio -V</div>
<div>version: kamailio 3.2.3 (x86_64/linux) 59f87e</div>
<div>flags: STATS: Off, USE_IPV6, USE_TCP, USE_TLS, TLS_HOOKS,
USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM,
SHM_MMAP, PKG_MALLOC, DBG_QM_MALLOC, USE_FUTEX,
FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER,
USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES</div>
<div>ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144,
MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT
PKG_SIZE 4MB</div>
<div>poll method support: poll, epoll_lt, epoll_et, sigio_rt,
select.</div>
<div>id: 59f87e </div>
<div>compiled on 14:43:47 Jul 19 2012 with gcc 4.5.2</div>
</div>
<div><br>
</div>
</blockquote>
any reason you are calling t_relay() after m_store()?<br>
<br>
Watch the sip traffic with ngrep, I expect they are looping in the
first step and you don't handle that properly in the config?<br>
<br>
Cheers,<br>
Daniel<br>
<pre class="moz-signature" cols="72">--
Daniel-Constantin Mierla - <a class="moz-txt-link-freetext" href="http://www.asipto.com">http://www.asipto.com</a>
<a class="moz-txt-link-freetext" href="http://twitter.com/#!/miconda">http://twitter.com/#!/miconda</a> - <a class="moz-txt-link-freetext" href="http://www.linkedin.com/in/miconda">http://www.linkedin.com/in/miconda</a>
Kamailio Advanced Training, Berlin, Nov 5-8, 2012 - <a class="moz-txt-link-freetext" href="http://asipto.com/u/kat">http://asipto.com/u/kat</a>
Kamailio Advanced Training, Miami, USA, Nov 12-14, 2012 - <a class="moz-txt-link-freetext" href="http://asipto.com/u/katu">http://asipto.com/u/katu</a></pre>
</body>
</html>