Skip to content

Commit a560364

Browse files
committed
Final Chat section
Completed all titles and Acrolinx edits
1 parent 8a6e88a commit a560364

12 files changed

+199
-192
lines changed

articles/communication-services/how-tos/chat-sdk/data-loss-prevention.md

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
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.
55
author: angiurgiu
66
ms.author: agiurg
77
ms.date: 01/10/2023
@@ -10,14 +10,16 @@ ms.service: azure-communication-services
1010
ms.subservice: chat
1111
ms.custom: template-how-to
1212
---
13-
# How to integrate with Microsoft Teams Data Loss Prevention policies
13+
14+
# Integrate with data loss prevention policies
15+
1416
[!INCLUDE [Public Preview Disclaimer](../../includes/public-preview-include-document.md)]
1517

16-
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.
1719

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.
1921

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.
2123

2224
#### Data Loss Prevention with subscribing to real-time chat notifications
2325
```javascript
@@ -47,4 +49,5 @@ for await (const message of messages) {
4749
```
4850
4951
## Next steps
52+
5053
- [Learn how to enable Microsoft Teams Data Loss Prevention](/microsoft-365/compliance/dlp-microsoft-teams)

articles/communication-services/quickstarts/chat/includes/meeting-interop-android.md

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
---
2-
title: Quickstart - Join a Teams meeting
2+
title: Join a Teams meeting
33
author: agiurg
44
ms.author: agiurg
55
ms.date: 07/20/2021
66
ms.topic: include
77
ms.service: azure-communication-services
88
---
99

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.
1111

1212
## Sample Code
1313

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).
1515

1616
## Prerequisites
1717

@@ -20,28 +20,27 @@ If you'd like to skip ahead to the end, you can download this quickstart as a sa
2020

2121
## Enable Teams interoperability
2222

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).
2424

2525
You must be a member of the owning organization of both entities to use this feature.
2626

2727
## Joining the meeting chat
2828

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.
3030

3131
## Add Chat to the Teams calling app
3232

3333
In your module level `build.gradle`, add the dependency on the chat SDK.
3434

3535
> [!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:
3737
>
3838
> ```groovy
3939
> implementation ("com.azure.android:azure-communication-chat:2.0.3") {
4040
> exclude group: 'com.microsoft', module: 'trouter-client-android'
4141
> }
4242
> ```
4343
44-
4544
## Add the Teams UI layout
4645
4746
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
232231

233232
After joining the meeting, instantiate the `ChatThreadClient` and make the chat components visible.
234233

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:
236235

237236
```
238237
private void joinTeamsMeeting() {
@@ -278,15 +277,15 @@ Add the `sendMessage()` method to `MainActivity`. It uses the `ChatThreadClient`
278277
### Enable polling for messages and rendering them in the application
279278

280279
> [!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.
282281
283282
We can obtain the following data from the message list returned by the `GetMessages` API:
284283
- The `text` and `html` messages on the thread since joining
285284
- Changes to the thread roster
286285
- Updates to the thread topic
287286

288287

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:
290289

291290
```
292291
private Handler handler = new Handler();
@@ -304,7 +303,7 @@ To the `MainActivity` class, add a handler and a runnable task that will be run
304303
};
305304
```
306305

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.
308307

309308
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:
310309

@@ -357,7 +356,7 @@ Finally, we add the method for querying all accessible messages on the thread, p
357356
// Wait until the operation completes
358357
latch.await(1, TimeUnit.MINUTES);
359358
// 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
361360
Collections.reverse(newChatMessages);
362361
for (ChatMessage chatMessage : newChatMessages)
363362
{
@@ -386,7 +385,7 @@ Finally, we add the method for querying all accessible messages on the thread, p
386385
}
387386
```
388387

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.
390389

391390
## Get a Teams meeting chat thread for a Communication Services user
392391

@@ -396,14 +395,14 @@ With the [Graph APIs](/graph/api/onlinemeeting-createorget?tabs=http&view=graph-
396395

397396
## Run the code
398397

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).
400399

401400
To join the Teams meeting and chat, enter your Team's meeting link and the thread ID in the UI.
402401

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.
404403

405404
:::image type="content" source="../join-teams-meeting-chat-quickstart-android.png" alt-text="Screenshot of the completed Android Application.":::
406405

407406
> [!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)
409408

articles/communication-services/quickstarts/chat/includes/meeting-interop-javascript.md

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
---
2-
title: Quickstart - Join a Teams meeting
2+
title: Join a Teams meeting
33
author: eboltonmaggs
44
ms.author: eboltonmaggs
55
ms.date: 04/30/2024
66
ms.topic: include
77
ms.service: azure-communication-services
88
---
99

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.
1111

1212
## 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).
1415

1516
## Prerequisites
1617

@@ -19,7 +20,7 @@ Find the finalized code for this quickstart on [GitHub](https://github.com/Azure
1920

2021
## Joining the meeting chat
2122

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.
2324

2425
## Create a new Node.js application
2526

@@ -53,19 +54,21 @@ The `--save` option lists the library as a dependency in your **package.json** f
5354

5455
## Set up the app framework
5556

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**:
5758

5859
```console
5960
6061
```
6162

62-
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.
6364

6465
## Add the Teams UI controls
6566

6667
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.
6972

7073
```html
7174
<!DOCTYPE html>
@@ -331,7 +334,7 @@ sendMessageButton.addEventListener("click", async () => {
331334

332335
```
333336
334-
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:
335338
336339
```
337340
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
349352

350353
:::image type="content" source="../join-teams-meeting-chat-quickstart.png" alt-text="Screenshot of the completed JavaScript Application.":::
351354

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.
353356

354357
> [!NOTE]
355-
> 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)
358+
> 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).

0 commit comments

Comments
 (0)