<div dir="ltr">Hi Babil,<br><br>I use the rest_post() method to send a query to my server:<br><br>    &gt; rest_post(&quot;$var(pns_push_url)&quot;, &quot;{ \&quot;user\&quot;: { \&quot;uri\&quot;:\&quot;$var(uri)\&quot;, \&quot;type\&quot;:\&quot;INCOMING_CALL\&quot; } }&quot;, &quot;application/json&quot;, &quot;$var(ct)&quot;, &quot;$var(rcode)&quot;);<br><br>You can use async with rest_post if it takes too long.<div>The server is just a Ruby on Rails server that uses the houston gem to send the notifications: <a href="https://github.com/nomad/houston">https://github.com/nomad/houston</a><div><br></div><div>About having Alice retying... How do you do so? Do you send multiple INVITEs to the SIP server until Bob becomes online?<br><div><br></div><div>Jose</div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-03-02 14:48 GMT+01:00 Babil (Golam Sarwar) <span dir="ltr">&lt;<a href="mailto:gsbabil@gmail.com" target="_blank">gsbabil@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi José,<br>
thank you. I have a somewhat similar implementation but on top of OpenSIPS<br>
1.11.<br>
<br>
I run a daemon that waits for signals from OpenSIPS for triggering push<br>
notifications. Then the rest of the REST-API call (implementing the APN<br>
functionality) is handled within that separate daemon&#39;s thread. OpenSIPS is<br>
blocked for minimum amount of time during the REST call. How do you make your<br>
REST calls from the OpenSIPS script? Can you add an example?<br>
<br>
Also, in order to wake up Bob and receive calls, in my system I have basically<br>
made Alice to retry a given number of times. Since in my scenario, I control<br>
my SIP clients, it is feasible. But this may not apply to your case.<br>
<span class=""><br>
<br>
On 3/2/16 5:13 AM, José Expósito wrote:<br>
&gt; Hi Babil,<br>
&gt;<br>
&gt; Thank you very much for your answer.<br>
&gt;<br>
&gt; I have another server that offers a RESTful API to send the push notifications,<br>
&gt; store the tokens, etc.<br>
&gt;<br>
</span>&gt; I&#39;m using OpenSIPS *2.1.2*<br>
<span class="">&gt;<br>
&gt; Jose<br>
&gt;<br>
&gt; 2016-03-02 14:00 GMT+01:00 Babil (Golam Sarwar) &lt;<a href="mailto:gsbabil@gmail.com">gsbabil@gmail.com</a><br>
</span>&gt; &lt;mailto:<a href="mailto:gsbabil@gmail.com">gsbabil@gmail.com</a>&gt;&gt;:<br>
<div class="HOEnZb"><div class="h5">&gt;<br>
&gt;     Hi José,<br>
&gt;     what is your mechanism to initiate sending the push? For example, what<br>
&gt;     function/script are you calling? Please also add the OpenSIPS version you are<br>
&gt;     using.<br>
&gt;<br>
&gt;     On 3/2/16 4:47 AM, José Expósito wrote:<br>
&gt;     &gt; Hi all,<br>
&gt;     &gt;<br>
&gt;     &gt; I&#39;m trying to implement Apple Push Notifications with OpenSIPS.<br>
&gt;     &gt;<br>
&gt;     &gt; At the moment, when Alice calls Bob and Bob is offline, I send the push<br>
&gt;     &gt; notification to Bob and call async sleep until Bob becomes online and I<br>
&gt;     proceed<br>
&gt;     &gt; whit the call as usual:<br>
&gt;     &gt;<br>
&gt;     &gt;     &gt; if (!lookup(&quot;location&quot;,&quot;m&quot;)) {<br>
&gt;     &gt;     &gt;     if (is_method(&quot;INVITE&quot;)) {<br>
&gt;     &gt;     &gt;         # Sends the notification here<br>
&gt;     &gt;     &gt;         t_reply(&quot;100&quot;, &quot;Trying&quot;);<br>
&gt;     &gt;     &gt;         t_reply(&quot;180&quot;, &quot;Ringing&quot;);<br>
&gt;     &gt;     &gt;         async(sleep(&quot;5&quot;), wait_bob);<br>
&gt;     &gt;     &gt; }<br>
&gt;     &gt;     &gt;<br>
&gt;     &gt;     &gt; [...]<br>
&gt;     &gt;     &gt;<br>
&gt;     &gt;     &gt; route[wait_bob] {<br>
&gt;     &gt;     &gt;     if (!lookup(&quot;location&quot;,&quot;m&quot;)) {<br>
&gt;     &gt;     &gt;         async(sleep(&quot;2&quot;), wait_bob);<br>
&gt;     &gt;     &gt;     }<br>
&gt;     &gt;     &gt;     if (!t_relay()) { # This establishes the call as usual when Bob<br>
&gt;     &gt;     becomes online<br>
&gt;     &gt;     &gt;         send_reply(&quot;500&quot;,&quot;Internal Error&quot;);<br>
&gt;     &gt;     &gt;     }<br>
&gt;     &gt;     &gt;    exit;<br>
&gt;     &gt;     &gt; }<br>
&gt;     &gt;<br>
&gt;     &gt;<br>
&gt;     &gt; This mechanism works without problems, but, when integrating and RTP proxy<br>
&gt;     &gt; OpenSIPS is randomly crashing after a while.<br>
&gt;     &gt;<br>
&gt;     &gt; That&#39;s why I&#39;m trying to avoid the use of async sleep and switch to another<br>
&gt;     &gt; mechanism.<br>
&gt;     &gt;<br>
&gt;     &gt; As usual, how do you solve this problem?<br>
&gt;     &gt; Is there any  way to send a new (re)INVITE when Bob becomes online?<br>
&gt;     &gt;<br>
&gt;     &gt; I&#39;m trying to use create_dialog() when Bob registers, but it doesn&#39;t look to<br>
&gt;     &gt; work -I&#39;m probably using it wrong.<br>
&gt;     &gt;<br>
&gt;     &gt; Thank you very much in advance<br></div></div></blockquote></div></div></div></div>