You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/communication-services/how-tos/chat-sdk/data-loss-prevention.md
+10-7Lines changed: 10 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
---
2
-
title: Integrate Azure Communication Services with Microsoft Teams Data Loss Prevention
3
-
titleSuffix: An Azure Communication Services how-to guide
4
-
description: Learn how to integrate with Microsoft Teams Data Loss Prevention policies by subscribing to Real-time Chat Notifications
2
+
title: Integrate with data loss prevention policies
3
+
titleSuffix: An Azure Communication Services article
4
+
description: This article describes how to integrate with Microsoft Teams Data Loss Prevention policies by subscribing to Real-time Chat Notifications.
Microsoft Teams administrator can configure policies for data loss prevention (DLP) to prevent leakage of sensitive information from Teams users during Teams meetings. Developers have the option to integrate chat functionality in Teams meetings with Azure Communication Services. This can be done either through the Azure Communication Services UI library or through a custom integration. This article describes how to incorporate data loss prevention without using the UI library.
18
+
Microsoft Teams administrator can configure policies for data loss prevention (DLP) to prevent leakage of sensitive information from Teams users during Teams meetings. Developers can integrate chat functionality in Teams meetings with Azure Communication Services. You can implement it either through the Azure Communication Services UI library or through a custom integration. This article describes how to incorporate data loss prevention without using the UI library.
17
19
18
-
You need to set up your application to listen for real-time updates on message edits. If a Teams user sends a message containing sensitive content, the message will be automatically replaced with a blank message and flagged with a "policyViolation" result. Your application should update its user interface to reflect that the message has been blocked. For example, display a message such as "Message was blocked as it contains sensitive information." Be aware that there may be a brief delay, usually a couple of seconds, between when a message is sent and when a policy violation is detected and applied. You can find an example of such code below.
20
+
You need to set up your application to listen for real-time updates on message edits. If a Teams user sends a message containing sensitive content, the message is automatically replaced with a blank message and flagged with a "policyViolation" result. Your application must update its user interface to reflect that the message is blocked. For example, display a message such as "Message was blocked as it contains sensitive information." There may be a brief delay, usually a couple of seconds, between when a message is sent and when a policy violation is detected and applied. You can find an example in the following code.
19
21
20
-
It's important to note that DLP policies apply only to messages sent by Teams users and do not prevent Azure Communications users from sending out sensitive information.
22
+
DLP policies apply only to messages sent by Teams users and don't prevent Azure Communications users from sending out sensitive information.
21
23
22
24
#### Data Loss Prevention with subscribing to real-time chat notifications
23
25
```javascript
@@ -47,4 +49,5 @@ for await (const message of messages) {
47
49
```
48
50
49
51
## Next steps
52
+
50
53
- [Learn how to enable Microsoft Teams Data Loss Prevention](/microsoft-365/compliance/dlp-microsoft-teams)
Copy file name to clipboardExpand all lines: articles/communication-services/quickstarts/chat/includes/meeting-interop-android.md
+15-16Lines changed: 15 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,17 +1,17 @@
1
1
---
2
-
title: Quickstart - Join a Teams meeting
2
+
title: Join a Teams meeting
3
3
author: agiurg
4
4
ms.author: agiurg
5
5
ms.date: 07/20/2021
6
6
ms.topic: include
7
7
ms.service: azure-communication-services
8
8
---
9
9
10
-
In this quickstart, you'll learn how to chat in a Teams meeting using the Azure Communication Services Chat SDK for Android.
10
+
This article describes how to add Teams meeting chat to your app using the Azure Communication Services Chat SDK for Android.
11
11
12
12
## Sample Code
13
13
14
-
If you'd like to skip ahead to the end, you can download this quickstart as a sample on [GitHub](https://github.com/Azure-Samples/communication-services-android-quickstarts/tree/main/join-chat-to-teams-meeting).
14
+
Download this code at GitHub Azure Samples [Join your chat app to a Teams meeting](https://github.com/Azure-Samples/communication-services-android-quickstarts/tree/main/join-chat-to-teams-meeting).
15
15
16
16
## Prerequisites
17
17
@@ -20,28 +20,27 @@ If you'd like to skip ahead to the end, you can download this quickstart as a sa
20
20
21
21
## Enable Teams interoperability
22
22
23
-
A Communication Services user that joins a Teams meeting as a guest user can access the meeting's chat only when they've joined the Teams meeting call. See the [Teams interop](../../voice-video-calling/get-started-teams-interop.md) documentation to learn how to add a Communication Services user to a Teams meeting call.
23
+
A Communication Services user that joins a Teams meeting as a guest user can access the meeting chat only after they join the Teams meeting call. For more information about how to add a Communication Services user to a Teams meeting call, see [Teams interop](../../voice-video-calling/get-started-teams-interop.md).
24
24
25
25
You must be a member of the owning organization of both entities to use this feature.
26
26
27
27
## Joining the meeting chat
28
28
29
-
Once Teams interoperability is enabled, a Communication Services user can join the Teams call as an external user using the Calling SDK. Joining the call adds them as a participant to the meeting chat as well, where they can send and receive messages with other users on the call. The user doesn't have access to chat messages that were sent before they joined the call. To join the meeting and start chatting, you can follow the next steps.
29
+
Once you enable Teams interoperability, a Communication Services user can join the Teams call as an external user using the Calling SDK. Joining the call also adds them as a participant to the meeting chat. From chat they can send and receive messages with other users on the call. The user doesn't have access to chat messages that were sent before they joined the call. To enable your end-users to join the Teams meetings and start chatting, complete the following steps.
30
30
31
31
## Add Chat to the Teams calling app
32
32
33
33
In your module level `build.gradle`, add the dependency on the chat SDK.
34
34
35
35
> [!IMPORTANT]
36
-
> Known issue: When using Android Chat and Calling SDK together in the same application, the Chat SDK's real-time notifications feature won't work. You'll get a dependency resolution issue. While we're working on a solution, you can turn off the real-time notifications feature by adding the following exclusions to the Chat SDK dependency in the app's `build.gradle` file:
36
+
> Known issue: When you're using Android Chat and Calling SDK together in the same application, the Chat SDK's real-time notifications feature don't work. You generate a dependency resolution issue. While we're working on a solution, you can turn off the real-time notifications feature by adding the following exclusions to the Chat SDK dependency in the app's `build.gradle` file:
Replace the code in activity_main.xml with the following snippet. It adds inputs for the thread ID and for sending messages, a button for sending the typed message and a basic chat layout.
@@ -232,7 +231,7 @@ Replace `<COMMUNICATION_SERVICES_RESOURCE_ENDPOINT>` with the endpoint for your
232
231
233
232
After joining the meeting, instantiate the `ChatThreadClient` and make the chat components visible.
234
233
235
-
Update the end of the `MainActivity.joinTeamsMeeting()` method with the code below:
234
+
Update the end of the `MainActivity.joinTeamsMeeting()` method with the following code:
236
235
237
236
```
238
237
private void joinTeamsMeeting() {
@@ -278,15 +277,15 @@ Add the `sendMessage()` method to `MainActivity`. It uses the `ChatThreadClient`
278
277
### Enable polling for messages and rendering them in the application
279
278
280
279
> [!IMPORTANT]
281
-
> Known issue: Since the Chat SDK's real-time notifications feature does not work together with the Calling SDK's, we will have to poll the `GetMessages` API at predefined intervals. In our sample we will use 3-second intervals.
280
+
> Known issue: Since the Chat SDK's real-time notifications feature doesn't work together with the Calling SDKs, you need to poll the `GetMessages` API at predefined intervals. In this sample, we use 3-second intervals.
282
281
283
282
We can obtain the following data from the message list returned by the `GetMessages` API:
284
283
- The `text` and `html` messages on the thread since joining
285
284
- Changes to the thread roster
286
285
- Updates to the thread topic
287
286
288
287
289
-
To the `MainActivity` class, add a handler and a runnable task that will be run at 3-second intervals:
288
+
To the `MainActivity` class, add a handler and a runnable task that runs at 3-second intervals:
290
289
291
290
```
292
291
private Handler handler = new Handler();
@@ -304,7 +303,7 @@ To the `MainActivity` class, add a handler and a runnable task that will be run
304
303
};
305
304
```
306
305
307
-
Note that the task has already been started at the end of the `MainActivity.joinTeamsMeeting()` method updated in the initialization step.
306
+
The task already started at the end of the `MainActivity.joinTeamsMeeting()` method updated in the initialization step.
308
307
309
308
Finally, we add the method for querying all accessible messages on the thread, parsing them by message type and displaying the `html` and `text` ones:
310
309
@@ -357,7 +356,7 @@ Finally, we add the method for querying all accessible messages on the thread, p
357
356
// Wait until the operation completes
358
357
latch.await(1, TimeUnit.MINUTES);
359
358
// Returned messages should be ordered by the createdOn field to be guaranteed a proper chronological order
360
-
// For the purpose of this demo we will just reverse the list of returned messages
359
+
// For the purpose of this demo we just reverse the list of returned messages
361
360
Collections.reverse(newChatMessages);
362
361
for (ChatMessage chatMessage : newChatMessages)
363
362
{
@@ -386,7 +385,7 @@ Finally, we add the method for querying all accessible messages on the thread, p
386
385
}
387
386
```
388
387
389
-
Display names of the chat thread participants aren't set by the Teams client. The names are returned as null in the API for listing participants, in the `participantsAdded` event and in the `participantsRemoved` event. The display names of the chat participants can be retrieved from the `remoteParticipants` field of the `call` object.
388
+
The Teams client doesn't set the display names of the chat thread participants. The names are returned as null in the API for listing participants, in the `participantsAdded` event and in the `participantsRemoved` event. The display names of the chat participants can be retrieved from the `remoteParticipants` field of the `call` object.
390
389
391
390
## Get a Teams meeting chat thread for a Communication Services user
392
391
@@ -396,14 +395,14 @@ With the [Graph APIs](/graph/api/onlinemeeting-createorget?tabs=http&view=graph-
396
395
397
396
## Run the code
398
397
399
-
The app can now be launched using the "Run App" button on the toolbar (Shift+F10).
398
+
You can now launch the app from the **Run App** button on the toolbar (Shift+F10).
400
399
401
400
To join the Teams meeting and chat, enter your Team's meeting link and the thread ID in the UI.
402
401
403
-
After joining the Team's meeting, you need to admit the user to the meeting in your Team's client. Once the user is admitted and has joined the chat, you're able to send and receive messages.
402
+
After joining the Team's meeting, you need to admit the user to the meeting in your Team's client. Once the user is admitted and joins the chat, they can send and receive messages.
404
403
405
404
:::image type="content" source="../join-teams-meeting-chat-quickstart-android.png" alt-text="Screenshot of the completed Android Application.":::
406
405
407
406
> [!NOTE]
408
-
> Certain features are currently not supported for interoperability scenarios with Teams. Learn more about the supported features, please see [Teams meeting capabilities for Teams external users](../../../concepts/interop/guest/capabilities.md)
407
+
> Certain features are currently not supported for interoperability scenarios with Teams. For more information about supported features, see [Teams meeting capabilities for Teams external users](../../../concepts/interop/guest/capabilities.md)
Copy file name to clipboardExpand all lines: articles/communication-services/quickstarts/chat/includes/meeting-interop-javascript.md
+14-11Lines changed: 14 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,16 +1,17 @@
1
1
---
2
-
title: Quickstart - Join a Teams meeting
2
+
title: Join a Teams meeting
3
3
author: eboltonmaggs
4
4
ms.author: eboltonmaggs
5
5
ms.date: 04/30/2024
6
6
ms.topic: include
7
7
ms.service: azure-communication-services
8
8
---
9
9
10
-
In this quickstart, you'll learn how to chat in a Teams meeting using the Azure Communication Services Chat SDK for JavaScript.
10
+
This article describes how to chat in a Teams meeting using the Azure Communication Services Chat SDK for JavaScript.
11
11
12
12
## Sample Code
13
-
Find the finalized code for this quickstart on [GitHub](https://github.com/Azure-Samples/communication-services-javascript-quickstarts/tree/main/join-chat-to-teams-meeting).
13
+
14
+
Download this code at GitHub Azure Samples [Join your chat app to a Teams meeting](https://github.com/Azure-Samples/communication-services-javascript-quickstarts/tree/main/join-chat-to-teams-meeting).
14
15
15
16
## Prerequisites
16
17
@@ -19,7 +20,7 @@ Find the finalized code for this quickstart on [GitHub](https://github.com/Azure
19
20
20
21
## Joining the meeting chat
21
22
22
-
A Communication Services user can join a Teams meeting as an anonymous user using the Calling SDK. Joining the meeting adds them as a participant to the meeting chat as well, where they can send and receive messages with other users in the meeting. The user won't have access to chat messages that were sent before they joined the meeting and they won't be able to send or receive messages after the meeting ends. To join the meeting and start chatting, you can follow the next steps.
23
+
A Communication Services user can join a Teams meeting as an anonymous user via the Calling SDK. Joining the meeting also adds them as a participant to the meeting chat, where they can send and receive messages with other users in the meeting. The user doesn't have access to chat messages that were sent before they joined the meeting and they can't send or receive messages after the meeting ends. To join the meeting and start chatting, you can follow the next steps.
23
24
24
25
## Create a new Node.js application
25
26
@@ -53,19 +54,21 @@ The `--save` option lists the library as a dependency in your **package.json** f
53
54
54
55
## Set up the app framework
55
56
56
-
This quickstart uses webpack to bundle the application assets. Run the following command to install the webpack, webpack-cli and webpack-dev-server npm packages and list them as development dependencies in your **package.json**:
57
+
This sample uses webpack to bundle the application assets. Run the following command to install the webpack, webpack-cli, and webpack-dev-server npm packages and list them as development dependencies in your **package.json**:
Create an **index.html** file in the root directory of your project. We use this file to configure a basic layout that will allow the user to join a meeting and start chatting.
63
+
Create an **index.html** file in the root directory of your project. We use this file to configure a basic layout that enables the user to join a meeting and start chatting.
63
64
64
65
## Add the Teams UI controls
65
66
66
67
Replace the code in index.html with the following snippet.
67
-
The text box at the top of the page will be used to enter the Teams meeting context. The 'Join Teams Meeting' button is used to join the specified meeting.
68
-
A chat pop-up appears at the bottom of the page. It can be used to send messages on the meeting thread, and it displays in real time any messages sent on the thread while the Communication Services user is a member.
68
+
69
+
Use the text box at the top of the page to enter the Teams meeting context. End users can join the specified meeting by clicking the **Join Teams Meeting** button.
70
+
71
+
A chat pop-up appears at the bottom of the page. End users can use it to send messages on the meeting thread. It displays in real time any messages sent on the thread while the Communication Services user is a member.
Display names of the chat thread participants aren't set by the Teams client. The names are returned as null in the API for listing participants, in the `participantsAdded` event and in the `participantsRemoved` event. The display names of the chat participants can be retrieved from the `remoteParticipants` field of the `call` object. On receiving a notification about a roster change, you can use this code to retrieve the name of the user that was added or removed:
337
+
The Teams client doesn't set the display names of the chat thread participants. The names are returned as null in the API for listing participants, in the `participantsAdded` event and in the `participantsRemoved` event. The display names of the chat participants can be retrieved from the `remoteParticipants` field of the `call` object. On receiving a notification about a roster change, you can use this code to retrieve the name of the user that was added or removed:
335
338
336
339
```
337
340
var displayName =call.remoteParticipants.find(p=>p.identifier.communicationUserId=='<REMOTE_USER_ID>').displayName;
@@ -349,7 +352,7 @@ Open your browser and navigate to `http://localhost:8080/`. You should see app l
349
352
350
353
:::image type="content" source="../join-teams-meeting-chat-quickstart.png" alt-text="Screenshot of the completed JavaScript Application.":::
351
354
352
-
Insert the Teams meeting link into the text box. Press*Join Teams Meeting* to join the Teams meeting. After the Communication Services user has been admitted into the meeting, you can chat from within your Communication Services application. Navigate to the box at the bottom of the page to start chatting. For simplicity, the application only shows the last two messages in the chat.
355
+
Insert the Teams meeting link into the text box. Users can click **Join Teams Meeting** to join the Teams meeting. After the Communication Services user is admitted into the meeting, you can chat from within your Communication Services application. Navigate to the box at the bottom of the page to start chatting. For simplicity, the application only shows the last two messages in the chat.
353
356
354
357
> [!NOTE]
355
-
> Certain features are currently not supported for interoperability scenarios withTeams. Learn more about the supported features, please see [Teams meeting capabilities for Teams external users](../../../concepts/interop/guest/capabilities.md)
358
+
> Certain features are currently not supported for interoperability scenarios withTeams. For more information about supported features, see [Teams meeting capabilities for Teams external users](../../../concepts/interop/guest/capabilities.md).
0 commit comments