|
2 | 2 | title: Azure Communication Services Rooms overview
|
3 | 3 | titleSuffix: An Azure Communication Services concept document
|
4 | 4 | description: Learn about the Azure Communication Services Rooms.
|
5 |
| -author: nmurav |
6 |
| -manager: antval |
| 5 | +author: farrukhghaffar |
| 6 | +manager: nmurav |
7 | 7 | services: azure-communication-services
|
8 | 8 |
|
9 |
| -ms.author: nmurav |
10 |
| -ms.date: 11/24/2021 |
| 9 | +ms.author: FAGHAFFA |
| 10 | +ms.date: 07/24/2022 |
11 | 11 | ms.topic: conceptual
|
12 | 12 | ms.service: azure-communication-services
|
13 | 13 | ---
|
14 |
| - |
15 | 14 | # Rooms overview
|
16 | 15 |
|
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)] |
21 | 17 |
|
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. |
24 | 19 |
|
| 20 | +Here are the main scenarios where rooms are useful: |
25 | 21 |
|
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. |
28 | 25 |
|
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 |
33 | 27 |
|
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. |
35 | 32 |
|
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."::: |
37 | 34 |
|
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 | |
39 | 36 | | ------ | :------: | :------: | :------: |
|
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> | |
46 | 44 |
|
47 |
| -## Managing the Rooms |
48 | 45 |
|
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 |
59 | 47 |
|
| 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 | ❌ | ✔️ | |
60 | 58 |
|
61 | 59 | The picture below illustrates the concept of managing and joining the rooms.
|
62 | 60 |
|
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."::: |
64 | 62 |
|
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. |
77 | 139 |
|
78 | 140 | ## 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). |
0 commit comments