Skip to content

Commit cabb630

Browse files
authored
Merge pull request #206995 from radubulboaca/master
Update rooms concept doc for public preview
2 parents 2d63055 + 30ef06c commit cabb630

File tree

4 files changed

+119
-55
lines changed

4 files changed

+119
-55
lines changed
Binary file not shown.
44.8 KB
Loading

articles/communication-services/concepts/rooms/room-concept.md

Lines changed: 115 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -2,82 +2,142 @@
22
title: Azure Communication Services Rooms overview
33
titleSuffix: An Azure Communication Services concept document
44
description: Learn about the Azure Communication Services Rooms.
5-
author: nmurav
6-
manager: antval
5+
author: farrukhghaffar
6+
manager: nmurav
77
services: azure-communication-services
88

9-
ms.author: nmurav
10-
ms.date: 11/24/2021
9+
ms.author: FAGHAFFA
10+
ms.date: 07/24/2022
1111
ms.topic: conceptual
1212
ms.service: azure-communication-services
1313
---
14-
1514
# Rooms overview
1615

17-
[!INCLUDE [Private Preview Disclaimer](../../includes/private-preview-include-section.md)]
18-
19-
Azure Communication services provide a concept of rooms for developers who are building structured conversations. Rooms support only voice and video calling in Private Preview.
20-
Here are main scenarios where Rooms are useful:
16+
[!INCLUDE [Public Preview Notice](../../includes/public-preview-include.md)]
2117

22-
- **Service-managed communication.** Rooms help service platforms deliver meeting-style experiences while still being suitably generic for a wide variety of industry applications. Services can create and manage rooms for patients seeking medical advice, financial planners working with clients, and lawyers providing legal services.
23-
- **Ability to have Invite-only experiences.** Rooms allow your services to control which users can join the rooms. Board members can discuss sensitive topics confidentially.
18+
Azure Communication Services provides a concept of a room for developers who are building structured conversations such as virtual appointments or virtual events. Rooms currently allow voice and video calling.
2419

20+
Here are the main scenarios where rooms are useful:
2521

26-
## When to use Rooms
27-
Not every solution needs a Room. Some scenarios, like building basic one-to-one or one-to-few ad-hoc interactions, can be created using the Calling or Chat SDKs without the need for rooms.
22+
- **Rooms enable scheduled communication experience.** Rooms help service platforms deliver meeting-style experiences while still being suitably generic for a wide variety of industry applications. Services can schedule and manage rooms for patients seeking medical advice, financial planners working with clients, and lawyers providing legal services.
23+
- **Rooms enable an invite-only experience.** Rooms allow your services to control which users can join the room for a virtual appointment with doctors or financial consultants. Developers can use the "Join Policy" for a room, to either let all or only a subset of users with assigned Communication Services identities to join a room call.
24+
- **Rooms enable structured communications through roles and permissions.** Rooms allow developers to assign predefined roles to users to exercise a higher degree of control and structure in communication. Ensure only presenters can speak and share content in a large meeting or in a virtual conference.
2825

29-
Use rooms when you need:
30-
- Control who can access a calling session on server side
31-
- Need coordinates that can be expired at a specific moment of time
32-
- Have a call to which only invited users can join
26+
## When to use rooms
3327

34-
:::image type="content" source="../media/rooms/decision-tree.png" alt-text="Diagram showing decision tree to select a Room.":::
28+
Use rooms when you need any of the following capabilities:
29+
- Control which users can join room calls.
30+
- Need scheduling/coordinates that are enabled and expire at a specified time and date.
31+
- Need structured communication through roles and permissions for users.
3532

36-
Note while you can use either group CallID or rooms if you just need an ephemeral coordinate. We recommend using rooms API for all new solutions you are building.
33+
:::image type="content" source="../media/rooms/room-decision-tree.png" alt-text="Diagram showing decision tree to select a Room.":::
3734

38-
| Capability | 1:N Call | 1:N Call <br>with ephemeral ID</br> | Room call |
35+
| Capability | 1:N Call | 1:N Call <br>with ephemeral ID</br> | Room call |
3936
| ------ | :------: | :------: | :------: |
40-
| Interactive participants | 350 | 350 | 350 |
41-
| Ephemeral ID to distribute to participants | No | Yes (Group ID) | Yes (Room ID) |
42-
| Invitee only participation | No | No | Yes <br>(Mandatory in private preview)</br> |
43-
| API to create. remove, update, delete the call | No | No | Rooms API |
44-
| Set validity period for a call | No | No | Yes <br> Up to six months </br> |
45-
37+
| Interactive participants | 350 | 350 | 350 |
38+
| Ephemeral ID to distribute to participants || ✔️ <br>(Group ID)</br> | ✔️ <br>(Room ID)</br> |
39+
| Invitee only participation ||| ✔️ |
40+
| All users in communication service resource to join a call || ✔️ | ✔️ |
41+
| Set validity period for a call ||| ✔️ <br> Up to six months </br> |
42+
| Set user roles and permissions for a call ||| ✔️ |
43+
| API to create, remove, update, delete the call ||| ✔️ <br> Rooms API <br> |
4644

47-
## Managing the Rooms
4845

49-
Rooms are managed via Rooms SDK or Rooms API. In the initial release, the rooms allows only have voice and video calls within the Room.
50-
51-
Use the **Rooms API/SDK** in your server application for Room:
52-
- Creation
53-
- Modification
54-
- Deletion
55-
- Defining and updating the set of participants
56-
- Setting and modifying the Room validity (up to six months).
57-
58-
Use the **JS Calling SDKs** (with other Calling SDKs and chat support on the roadmap) to join the room.
46+
## Managing rooms and joining room calls
5947

48+
**Rooms API/SDK** is used to accomplish actions such as creating a room, adding participants, and setting up schedule etc. Calling SDK is used to initiate the call within a Room from the client side. Most actions available in a one-to-one or group-calls in **Calling SDKs** are also available in room calls. Full list of capabilities offered in Calling SDK is listed in the [Calling SDK Overview](../voice-video-calling/calling-sdk-features.md#detailed-capabilities).
49+
50+
| Capability | Calling SDK | Rooms API/SDK |
51+
|----------------------------------------------|--------|--------|
52+
| Join a room call with voice and video | ✔️ ||
53+
| List participants that joined the rooms call | ✔️ ||
54+
| Create room || ✔️ |
55+
| List all participants that are invited to the room || ✔️ |
56+
| Add or remove a VoIP participant || ✔️ |
57+
| Assign roles to room participants || ✔️ |
6058

6159
The picture below illustrates the concept of managing and joining the rooms.
6260

63-
:::image type="content" source="../media/rooms/rooms-management.png" alt-text="Diagram showing Rooms Management.":::
61+
:::image type="content" source="../media/rooms/rooms-management.png" alt-text="Diagram showing Rooms Management.":::
6462

65-
## Runtime operations
66-
67-
Most actions available in regular one-to-one or group calls in JS Calling SDK are also available in rooms. You cannot promote the existing one-to-one or group call to a room call or Invite an ad hoc user to join a Room (you need to add the user using the Rooms API)
68-
Full list of capabilities that are available in JS SDK are listed in the [Calling SDK Overview](../voice-video-calling/calling-sdk-features.md#detailed-capabilities).
69-
70-
| Capability | JS Calling SDK | Rooms API/SDK |
71-
|----------------------------------------------| :--------: | :---------: |
72-
| Join a Room call with voice and video | ✔️ ||
73-
| List participants that joined the Rooms call | ✔️ ||
74-
| List all participants that are invited to the Room call || ✔️ |
75-
| Add or remove a VoIP participant || ✔️ |
76-
| Add or remove a new PSTN participant |||
63+
### Rooms API/SDKs
64+
65+
Rooms are created and managed via rooms APIs or SDKs. Use the rooms API/SDKs in your server application for `room` operations:
66+
- Create
67+
- Modify
68+
- Delete
69+
- Set and update the list of participants
70+
- Set and modify the Room validity
71+
- Control who gets to join a room, using `roomJoinPolicy`. Details below.
72+
- Assign roles and permissions to users. Details below.
73+
74+
### Calling SDKs
75+
76+
Use the [Calling SDKs](../voice-video-calling/calling-sdk-features.md) to join the room call. Room calls can be joined using the Web, iOS or Android Calling SDKs. You can find quick start samples for joining room calls [here](../../quickstarts/rooms/join-rooms-call.md).
77+
78+
## Control access to room calls
79+
80+
Rooms can be set to operate in two levels of control over who is allowed to join a room call.
81+
82+
| Room type | roomJoinPolicy value | Who can participate in Room?
83+
|-------------------------------------| --------------------------------- | ------------------------------------------------------------------------------ |
84+
| **Private Room** | `inviteOnly` | User must be explicitly added to the room roster, to be able to join a room |
85+
| **Open Room** | `communicationServiceUsers` | All valid users created under company's Azure Communication Service resource are allowed to join this room |
86+
87+
## Predefined participant roles and permissions
88+
89+
Room participants can be assigned one of the following roles: **Presenter**, **Attendee** and **Consumer**. By default, a user is assigned an **Attendee** role, if no other role is assigned.
90+
91+
The tables below provide detailed capabilities mapped to the roles. At a high level, **Presenter** role has full control, **Attendee** capabilities are limited to audio and video, while **Consumer** can only receive audio, video and screen sharing.
92+
93+
| Capability | Role: Presenter | Role: Attendee | Role: Consumer
94+
|---------------------------------------------| :--------: | :--------: | :--------: |
95+
| **Mid call controls** | | |
96+
| - Turn video on/off | ✔️ | ✔️ ||
97+
| - Mute/Unmute mic | ✔️ | ✔️ ||
98+
| - Switch between cameras | ✔️ | ✔️ ||
99+
| - Active speaker | ✔️ | ✔️ | ✔️ |
100+
| - Choose speaker for calls | ✔️ | ✔️ | ✔️ |
101+
| - Choose mic for calls | ✔️ | ✔️ ||
102+
| - Show participants state (idle, connecting, connected, On-hold, Disconnecting, Disconnected etc.) | ✔️ | ✔️ | ✔️ |
103+
| - Show call state (Early media, Incoming, Connecting, Ringing, Connected, Hold, Disconnecting, Disconnected | ✔️ | ✔️ | ✔️ |
104+
| - Show if a participant is muted | ✔️ | ✔️ | ✔️ |
105+
| - Show the reason why a participant left a call | ✔️ | ✔️ | ✔️ |
106+
| **Screen sharing** | | |
107+
| - Share screen | ✔️ * |||
108+
| - Share an application | ✔️ * |||
109+
| - Share a browser tab | ✔️ * |||
110+
| - Participants can view shared screen | ✔️ | ✔️ | ✔️ |
111+
| **Roster management** | | |
112+
| - Remove a participant | ✔️ |||
113+
| **Device management** | | |
114+
| - Ask for permission to use audio and/or video | ✔️ | ✔️ ||
115+
| - Get camera list | ✔️ | ✔️ ||
116+
| - Set camera | ✔️ | ✔️ ||
117+
| - Get selected camera | ✔️ | ✔️ ||
118+
| - Get mic list | ✔️ * | ✔️ * ||
119+
| - Set mic | ✔️ * | ✔️ * ||
120+
| - Get selected mic | ✔️ * | ✔️ * ||
121+
| - Get speakers list | ✔️ * | ✔️ * | ✔️ * |
122+
| - Set speaker | ✔️ * | ✔️ * | ✔️ * |
123+
| - Get selected speaker | ✔️ | ✔️ | ✔️ |
124+
| **Video rendering** | | |
125+
| - Render a video in multiple places (local camera or remote stream) | ✔️ | ✔️ | ✔️ <br>(Only Remote)</br> |
126+
| - Set/Update video scaling mode | ✔️ | ✔️ | ✔️ <br>(Only Remote)</br> |
127+
| - Render remote video stream | ✔️ | ✔️ | ✔️ |
128+
129+
*) Only available on the web calling SDK. Not available on iOS and Android calling SDKs
130+
131+
## Event handling
132+
133+
[Voice and video calling events](../../../event-grid/communication-services-voice-video-events.md) published via [Event Grid](../../../event-grid/event-schema-communication-services.md) are annotated with room call information.
134+
135+
- **CallStarted** is published when a room call starts.
136+
- **CallEnded** is published when a room call ends.
137+
- **CallParticipantAdded** is published when a new participant joins a room call.
138+
- **CallParticipantRemoved** is published when a participant drops from a room call.
77139

78140
## Next steps:
79-
- Use the [QuickStart to create, manage and join a room.](../../quickstarts/rooms/get-started-rooms.md)
80-
- Review the [Network requirements for media and signaling](../voice-video-calling/network-requirements.md)
81-
82-
83-
141+
- Use the [QuickStart to create, manage and join a room](../../quickstarts/rooms/get-started-rooms.md).
142+
- Learn how to [join a room call](../../quickstarts/rooms/join-rooms-call.md).
143+
- Review the [Network requirements for media and signaling](../voice-video-calling/network-requirements.md).

articles/communication-services/toc.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,10 @@ items:
209209
href: concepts/detailed-call-flows.md
210210
- name: Known issues
211211
href: concepts/known-issues.md
212+
- name: Rooms
213+
items:
214+
- name: Rooms overview
215+
href: concepts/rooms/room-concept.md
212216
- name: UI Library
213217
items:
214218
- name: UI Library overview

0 commit comments

Comments
 (0)