[SR-Users] Sending PUSH notification asynchronously

Daniel-Constantin Mierla miconda at gmail.com
Thu Mar 19 09:28:23 CET 2015


You can delegate to send of the push to a rtimer process using mqueue --
see same presentation, the section about tweeting.

Cheers,
Daniel

On 19/03/15 09:14, Mickael Marrache wrote:
>
> I already looked at your presentation, the PUSH is send synchronously.
>
>  
>
> What I'm trying to achieve is sending the PUSH asynchronously. So,
> when I receive an incoming call and the callee has no registration, I
> would like to suspend the transaction and then delegate PUSH sending
> to another process.
>
>  
>
> In your presentation, I see the following:
>
>  
>
> route[PUSHASYNC] {
>
> if (!is_method("INVITE"))
>
> return;
>
> if(registered("location"))
>
> return;
>
> route(SENDPUSH);
>
> if(!t_suspend()) {
>
> xlog("failed suspending trasaction [$T(id_index):$T(id_label)]\n");
>
> send_reply("501", "Unknown destination");
>
> exit;
>
> }
>
> xdbg("suspended transaction [$T(id_index):$T(id_label)] $fU => $rU\n");
>
> $sht(vtp=>join::$rU) = "" + $T(id_index) + ":" + $T(id_label);
>
> xdbg("htale key value [$sht(vtp=>join::$rU)]\n");
>
> exit;
>
> }
>
>  
>
> The route block is not execute asynchronously since it is called by
> the calling block using regular way (i.e. route(PUSHASYNC)).
> Therefore, all these operations are executed by the same process which
> is a worker process. I would like to delegate execution of all the
> route block to a separate process (at least execution of the SENDPUSH
> route block).
>
>  
>
> Mickael
>
>  
>
> *From:*sr-users [mailto:sr-users-bounces at lists.sip-router.org] *On
> Behalf Of *Daniel-Constantin Mierla
> *Sent:* Thursday, March 19, 2015 10:04 AM
> *To:* Kamailio (SER) - Users Mailing List
> *Subject:* Re: [SR-Users] Sending PUSH notification asynchronously
>
>  
>
> Hello,
>
> don't do explicit t_suspend() if you are calling the
> async_task_route() because it is done internally.
>
> I presented a way for async push notifications during the Kamailio
> World Conference 2014, see:
>
>   -
> http://www.kamailio.org/events/2014-KamailioWorld/day2/26-Daniel-Constantin.Mierla-Kamailio.cfg-Async.pdf
>
> A video should be also on youtube.
>
> Cheers,
> Daniel
>
> On 19/03/15 08:49, Mickael Marrache wrote:
>
>     Hi,
>
>      
>
>     I'm trying to add PUSH support to my system using Kamailio.
>
>      
>
>     When a call is received and the callee has no active registration,
>     a PUSH is sent to the callee endpoint. In order to send this PUSH,
>     my proxy sends an HTTP requests to another server that will send
>     the PUSH.
>
>      
>
>     So, my route block is as follows:
>
>      
>
>     route[PUSH] {
>
>             #Send PUSH notification using a custom module I wrote
>
>      
>
>             #Suspend transaction execution.
>
>             t_on_failure("MANAGE_FAILURE");
>
>             if(!t_suspend()) {
>
>                     send_reply("503", "Service Unavailable");
>
>                     exit;
>
>             }
>
>      
>
>             $sht(push=>join::$rU) = "" + $T(id_index) + ":" +
>     $T(id_label);
>
>             exit;
>
>     }
>
>      
>
>     I would like to execute this route block asynchronously (i.e. in a
>     separate process).
>
>      
>
>     I tried using the async_task_route command, and I can see the
>     route block is execute in a separate process, however some stuffs
>     are broken (e.g. transaction timeout, failure route). So, I
>     thought it may be related to the fact asynchronous execution is
>     implemented using t_suspend/t_continue and in this case,
>     t_suspend/t_continue would be called twice.
>
>      
>
>     The important point is to make the interaction with the PUSH
>     server asynchronous.
>
>      
>
>     Any idea?
>
>      
>
>     Thanks,
>
>     Mickael
>
>
>
>
>     _______________________________________________
>
>     SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>
>     sr-users at lists.sip-router.org <mailto:sr-users at lists.sip-router.org>
>
>     http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
>
> -- 
> Daniel-Constantin Mierla
> http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> - http://www.linkedin.com/in/miconda
> Kamailio World Conference, May 27-29, 2015
> Berlin, Germany - http://www.kamailioworld.com

-- 
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio World Conference, May 27-29, 2015
Berlin, Germany - http://www.kamailioworld.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20150319/4c4b6d4e/attachment.html>


More information about the sr-users mailing list