Supported: join, gruu, replaces
Content-Length: 0
F11 INVITE sip:3402934234@conf.example.com SIP/2.0
Via: SIP/2.0/UDP client.biloxi.com;branch=z9hG4bKh3887
Max-Forwards: 70
To: <sip:3402934234@conf.example.com>
From: Bob <sip:bob@biloxi.example.com>;tag=32411
Call-ID: 5d4324fa84b4c76e66710
CSeq: 764 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER,
SUBSCRIBE, NOTIFY
Allow-Events: dialog
Accept: application/sdp, message/sipfrag
Supported: replaces, join
Content-Type: application/sdp
Content-Length: ...
(SDP not shown)
5.8. Join Header Field: Dialing in to a Conference Using a (3rd Party)
Dialog Identifier
Under some circumstances, a participant wanting to join a conference
may only know a dialog identifier of one of the legs of the
conference. The information may have been learned using the dialog
package [18] or some non-SIP means to retrieve this information from
another conference participant.
A UA can request to be added to a conference by sending a request to
the focus containing a Join [7] header field containing a dialog ID
of one leg of the conference (a dialog between another participant
and the focus).
There are other scenarios in which a UA can use the Join header for
certain conferencing call control scenarios. See [7] for further
examples and details.
An example is shown in Figure 8. It is assumed that Alice is a
participant of the conference. The dialog identifier between Alice
and the focus is abbreviated as A-F and is known by Bob. Bob
requests to be added to the conference by sending an INVITE message
F1 to the focus containing a Join header that contains the dialog
identifier A-F. Bob is added into the conference by the focus.
Alice Focus Bob Carol
| | | |
|<==================>| | |
| | | |
| Bob requests to be added to the conference. |
| | | |
| | INVITE Join:A-F F1| |
| |<-------------------| |
| | 180 Ringing F2 | |
| |------------------->| |
| | 200 OK Contact:Conf-ID;isfocus F3 |
| |------------------->| |
| | ACK F4 | |
| |<-------------------| |
| | RTP | |
| NOTIFY F5 |<==================>| |
|<-------------------| SUBSCRIBE sip:Conf-ID F6 |
| 200 OK F7 |<-------------------| |
|------------------->| 200 OK F8 | |
| |------------------->| |
| | NOTIFY F9 | |
| |------------------->| |
| | 200 OK F10 | |
| |<-------------------| |
Figure 8. Adding a Participant to an Existing Conference using Join.
F1 INVITE sip:3402934234@conf.example.com SIP/2.0
Via: SIP/2.0/UDP client.biloxi.com;branch=z9hG4bKh3832
Max-Forwards: 70
To: <sip:3402934234@conf.example.com>
From: Bob <sip:bob@biloxi.example.com>;tag=32411
Call-ID: d432fa84b4c76e66710
CSeq: 8 INVITE
Contact: <sip:bob@client.biloxi.example.com>
Join: 3434034-293553453;to-tag=fdj3l34;from-tag=12f331
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER,
SUBSCRIBE, NOTIFY
Allow-Events: dialog
Accept: application/sdp, message/sipfrag
Supported: replaces, join
Content-Type: application/sdp
Content-Length: ...
(SDP not shown)
5.9. Replaces Header Field: Switching User Agents within a Conference
Participants in a conference may want to change the user agent (i.e.,
the endpoint or the device) with which they participate in the
conference. This could be done by simply sending a BYE from one user
agent to leave the conference and an INVITE from the other user agent
to rejoin. However, the SIP Replaces [6] primitive is perfectly
suited to this operation.
An example is shown in Figure 9. It is assumed that Alice is a
participant of the conference using user agent #1. The dialog
identifier between Alice’s user agent #1 and the focus is abbreviated
as A-F. Alice switches to user agent #2 and sends an INVITE message
F1 to the focus containing a Replaces header that contains the dialog
identifier A-F. Note that this dialog identifier could be learned
through some non-SIP mechanism, or by use of SUBSCRIBE/NOTIFY and the
dialog event package [18]. Alice’s user agent #2 is added into the
conference by the focus. The focus sends a BYE to user agent #1.
User agent #1 then automatically terminates the subscription by
sending a SUBSCRIBE with Expires:0 to terminate the subscription.
Note that the participant list (roster) has not necessarily changed
during this scenario, unless detailed information about Alice user
agents (i.e. endpoints) is included in the conference state
notifications. For a full discussion of conference package
notifications, refer to [9].
Alice UA#1 Focus Alice UA#2 Carol
| | | |
|<==================>| | |
| | | |
| Alice switches user agents during the conference. |
| | | |
| | INVITE sip:Conf-ID Replaces:A-F F1 |
| |<-------------------| |
| | 200 OK Contact:Conf-ID;isfocus F2 |
| |------------------->| |
| | ACK F3 | |
| |<-------------------| |
| | RTP | |
| |<==================>| |
| BYE F4 | | |
|<-------------------| | |
| 200 OK F5 | | |
|------------------->| | |
| SUBSCRIBE Expires:0 F6 | |
|------------------->| | |
| 200 OK F7 | | |
|<-------------------| | |
| NOTIFY Subscription-State:terminated F8 | |
|<-------------------| | |
| 200 OK F9 | | |
|------------------->| | |
| | SUBSCRIBE sip:Conf-ID F10 |
| |<-------------------| |
| | 200 OK F11 | |
| |------------------->| |
| | NOTIFY F12 | |
| |------------------->| |
| | 200 OK F13 | |
| |<-------------------| |
Figure 9. Switching a User Agent within a Conference.
5.10. Replaces Header Field: Transferring a Point-to-Point Session into
a Conference
This call flow shows how a point-to-point call can be transferred to
a conference call involving an external focus.
Alice and Bob have an established session with a dialog identifier
A-B. Alice joins the conference with the focus by sending an INVITE
to the Conference URI. Alice then sends a REFER request to the focus
to send an INVITE request to the other participant. Alice includes
an escaped Replaces header field in the URI included in the Refer-To
header field. Bob receives the INVITE from the focus and matches the
dialog in the Replaces header field with the dialog with Alice. As a
result, Bob accepts the INVITE, joins the conference, and sends a BYE
to Alice to tear down their point-to-point dialog.
Alice Focus Bob Carol
| | | |
| Alice is in a session with Bob | |
|<=======================================>| |
| | | |
| Alice joins the conference | |
| | | |
| INVITE sip:Conf-ID F1 | |
|------------------->| | |
| 200 OK Contact:sip:Conf-ID;isfocus F2 | |
|<-------------------| | |
| ACK F3 | | |
|------------------->| | |
| SUBSCRIBE F4 | | |
|------------------->| | |
| 200 OK F5 | | |
|<-------------------| | |
| NOTIFY F6 | | |
|<-------------------| | |
| 200 OK F7 | | |
|------------------->| | |
|<==================>| | |
| | | |
| Alice asks focus to REFER Bob into conference |
| | | |
| REFER sip:Conf-ID Refer-To:Bob?Replaces=A-B F8 |
|------------------->| | |
| 202 Accepted F9 | | |
|<-------------------| | |
| NOTIFY (Trying) F10| | |
|<-------------------| | |
| 200 OK F11 | | |
|------------------->| | |
| | | |
| Focus invites Bob to the conference |
| | | |
| | INVITE sip:Conf-ID Replaces:A-B F12 |
| |------------------->| |
| | 200 OK F13 | |
| |<-------------------| |
| | ACK F14 | |
| |------------------->| |
| | RTP | |
| |<==================>| |
| BYE F15 | |
|<----------------------------------------| |
| 200 OK F16 | |
|---------------------------------------->| |
| NOTIFY (200) F17 | | |
|<-------------------| | |
| 200 OK F18 | | |
|------------------->| | |
| NOTIFY F19 | | |
|<-------------------| | |
| 200 OK F20 | | |
|------------------->| | |
| | SUBSCRIBE sip:Conf-ID F21 |
| |<-------------------| |
| | 200 OK F22 | |
| |------------------->| |
| | NOTIFY F23 | |
| |------------------->| |
| | 200 OK F24 | |
| |<-------------------| |
| | | |
Figure 10. Transitioning a Point to Point Session into a Conference.
5.11. REFER with BYE: Requesting That the Focus Remove a Participant
from a Conference
To request that the focus remove a participant from the specified
conference, a properly authorized SIP UA (typically the conference
owner) can send a REFER to the conference URI with a Refer-To