[OpenSIPS-Users] OpenSIPS & Apple Push Notifications Service

Bogdan-Andrei Iancu bogdan at voice-system.ro
Tue Oct 5 10:33:11 CEST 2010


Hi Paul,

Paul Wise wrote:
> Hi all,
>
> We would like to implement support in our server for Apple's Push
> Notifications Service (APNS). The way this will work is that when a call
> comes into OpenSIPS for one user (from another user or another domain)
> and that user is not registered/online, we wake up (or launch) our SIP
> app on the user's iPhone by sending a push notification to Apple, who
> forward the notification to the user's iPhone. Our SIP app then starts
> up, registers to OpenSIPS and receives the call/text. Most of this is
> easy, some quick perl functions to generate APNS packets in OpenSIPS,
> socat to connect to Apple and forward the packets, monit to keep socat
> running, cron+socat to download feedback information for when people
> uninstall our SIP iPhone app, msilo for storing MESSAGE requests before.
>
> The part that I haven't be able to figure out how to do yet is how to
> connect the incoming call to a user when they have registered.
>
> I thought maybe direct the call initially to an asterisk media server
> (for a ringing tone), wait for a timeout, check if the user is now
> online and if so connect them. Then rinse and repeat. This seems a bit
> hacky, I'd prefer for the REGISTER handling to immediately direct the
> call to the right contact to reduce unnecessary delays.
>
> Has any one done this before or have any ideas for implementation?
>   

Unfortunately this is impossible as there is no mechanism to control a 
call from the script in the way of creating new branches for it (like 
during the user registration, to search the INVITE transaction for that 
user - still in ringing - and fork a new branch to the user  location).

What you can do is a kind a busy waiting : send the call to a ringing 
tone in asterisk (without accepting the call, but just keep it in 180 
/183) and after 2 sec timeout -> failure route -> check again if 
registration was done -> if not send again to asterisk and repeat the 
loop; if yes, let the call go to the end device.


Regards,
Bogdan


>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>   


-- 
Bogdan-Andrei Iancu
OpenSIPS Bootcamp
15 - 19 November 2010, Edison, New Jersey, USA
www.voice-system.ro




More information about the Users mailing list