[OpenSIPS-Users] Best way to Integrate Presence with IM in VoIP environment

Saúl Ibarra Corretgé saul at ag-projects.com
Fri Apr 27 11:18:13 CEST 2012


Hi Duane,

On Apr 26, 2012, at 9:48 AM, duane.larson at gmail.com wrote:

> I wanted to get everyones opinion on what they think is the best way to implement Presence with an IM client. Is it possible to do the following 
> 

Disclaimer: I'm quite biased here, for obvious reasons :-)

> Use SIP for VoIP (obviously) and use XMPP for IM. I would want to make sure that OpenSIPS could send Notify information to the XMPP clients telling them that someone is currently on the phone. I know you can use the pua_dialoginfo module to publish info about dialog states but I am not sure if what I am thinking (SIP with XMPP integration) is possible. So on OpenSIPS you would have a multidomain setup and the same would go for XMPP. So user bob at companyA.com would be set up on both OpenSIPS and XMPP. Bob's XMPP client (pidgin or whatever) would have buddies from companyA.com. XMPP would work as normal when it came to IM's and Presence, but I want to make it so that if alice at companyA.com calls someone OpenSIPS sends a XMPP Notify to the XMPP server and then the XMPP server notifies bob and his client shows that alice is busy or on phone or whatever. 
> 
> Is this possible? If so how would Bob subscribe to Alice so that he could see her XMPP Client Presence along with her phone dialog presence and it be a single buddy on his list? 
> 

If you use SIP for VoIP and XMPP for IM you are effectively using 2 protocols, thus you'll have a SIP account and an XMPP account.

When you login with your XMPP account you use a resource identifier, so the full JID looks something like this: user at domain.tld/resource. Now, you say you want OpenSIPS to publish presence information for this XMPP account, but how do we know to what resource it applies? This would require cooperation between your SIP proxy and your XMPP server.

I think you have 2 ways to do this, depending if you go dual-stack or single-stack:

Dual-stack (SIP for VoIP, XMPP for IM):
    - Make the client update the presence state every time you are on a call. Each client could do this and since presence is per-device it makes sense.
    - If you want to go this path you may want to check CUSAX (http://tools.ietf.org/html/draft-ivov-xmpp-cusax-00) from the Jitsi folks.

Single stack (SIP for everything):
    - Use SIP for VoIP, IM and presence and a gateway to communicate with the XMPP universe
    - The gateway must be transparent, that is, subscribing to sip:user at x2s.domain.tld is out of the question

We are currently working in a transparent XMPP gateway in order to seamlessly communicate with XMPP from a SIP client. You can find more details here: http://sipsimpleclient.com/projects/sipsimpleclient/wiki/DesignXMPP


Regards,

--
Saúl Ibarra Corretgé
AG Projects






More information about the Users mailing list