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é |