DesignXMPP conference

Version 11 (Saúl Ibarra Corretgé, 01/29/2013 10:29 pm)

1 2 Adrian Georgescu
h1. SIP-XMPP Multiparty Chat
2 3 Adrian Georgescu
3 3 Adrian Georgescu
This is done by bridging MUC functionality from XMPP with MSRP-Switch functionality using SIP.
4 3 Adrian Georgescu
5 4 Adrian Georgescu
  * SIP users can create ad-hoc conference rooms using SylkServer MSRP chat and invite users from both SIP and XMPP domains
6 4 Adrian Georgescu
 * XMPP users can create multiparty conferences using SylkServer MUC capability and invite users from both XMPP and SIP worlds
7 5 Saúl Ibarra Corretgé
8 5 Saúl Ibarra Corretgé
h2. Joining a conference
9 5 Saúl Ibarra Corretgé
10 5 Saúl Ibarra Corretgé
A conference room will be created if it doesn't exist previously. For joining a conference, an XMPP endpoint will send a presence stanza with the URI of the room. SylkServer handles conferences as part of the conference application, so it will create a new SIP session which will join the conference.Usually the SIP INVITE will loop in the proxy and enter SylkServer again, but this time the executed application will be "conference".
11 5 Saúl Ibarra Corretgé
12 9 Saúl Ibarra Corretgé
The XMPP gateway application will receive SIP NOTIFY requests with "RFC 4575":https://tools.ietf.org/html/rfc4575 payload specifying the participants in the room, and this will be translated into presence stanza elements. Likewise, all MSRP messages received on the SIP session will be translated into _groupchat_ message stanzas.
13 5 Saúl Ibarra Corretgé
14 10 Saúl Ibarra Corretgé
!{ 700px, center}xmppgw_muc_x2s.png!
15 10 Saúl Ibarra Corretgé
16 5 Saúl Ibarra Corretgé
h2. Inviting new participants
17 5 Saúl Ibarra Corretgé
18 11 Saúl Ibarra Corretgé
SylkServer allows for XMPP users to invite SIP endpoints or vice versa. This is accomplished in the same fashion as joining a conference: it takes place on the _conference_ application, which is based on SIP. Here is the sequence of actions which are performed for inviting a SIP or XMPP endpoint to a conference room, from an XMPP endpoints standpoint:
19 11 Saúl Ibarra Corretgé
20 11 Saúl Ibarra Corretgé
# A message stanza with the _invite_ element pointing to the desired user
21 11 Saúl Ibarra Corretgé
# SylkServer sends a out of dialog REFER request towards the conference room URI and indicates the use that needs to be invited in a Refer-To header
22 11 Saúl Ibarra Corretgé
# When the REFER request arrives back at SylkServer, it will create an outgoing SIP session towards the URI in the Refer-To header, it also indicates that the session comes from a conference server by adding the _isfocus_ contact header parameter
23 11 Saúl Ibarra Corretgé
# If the invited user was a SIP endpoint, it will accept the session and join the conference
24 11 Saúl Ibarra Corretgé
# If the invited user was a XMPP endpoint, the SIP INVITE will enter SylkServer yet again, but this time it will be handled by the XMPP gateway application
25 11 Saúl Ibarra Corretgé
# The XMPP gateway application detects the INVITE as an invitation to join a conference because it contains a Referred-By header and the _isfocus_ contact header parameter
26 11 Saúl Ibarra Corretgé
# SylkServer sends a message stanza to the invited user indicating who invited him
27 11 Saúl Ibarra Corretgé
28 11 Saúl Ibarra Corretgé