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/concepts/chat/concepts.md
+22-20Lines changed: 22 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,11 +2,11 @@
2
2
title: Chat concepts in Azure Communication Services
3
3
titleSuffix: An Azure Communication Services concept document
4
4
description: Learn about Communication Services Chat concepts.
5
-
author: tophpalmer
6
-
manager: chpalm
5
+
author: kperla97
6
+
manager: sundraman
7
7
services: azure-communication-services
8
8
ms.author: chpalm
9
-
ms.date: 06/30/2021
9
+
ms.date: 02/27/2023
10
10
ms.topic: conceptual
11
11
ms.service: azure-communication-services
12
12
ms.subservice: chat
@@ -18,34 +18,36 @@ Azure Communication Services Chat can help you add real-time text communication
18
18
19
19
The Chat APIs provide an **auto-scaling** service for persistently stored text and data communication. Other key features include:
20
20
21
-
-**Custom Identity and Addressing** - Azure Communication Services provides generic [identities](../identity-model.md)that are used to address communication endpoints. Clients use these identities to authenticate to the Azure service and communicate with each other in `chat threads` you control.
21
+
-**Custom Identity and Addressing** - Azure Communication Services provides generic [identities](../identity-model.md) to address communication endpoints. Clients use these identities to authenticate to the Azure service and communicate with each other in `chat threads` you control.
22
22
-**Encryption** - Chat SDKs encrypt traffic and prevents tampering on the wire.
23
23
-**Microsoft Teams Meetings** - Chat SDKs can [join Teams meetings](../../quickstarts/chat/meeting-interop.md) and communicate with Teams chat messages.
24
24
-**Real-time Notifications** - Chat SDKs use efficient persistent connectivity (WebSockets) to receive real-time notifications such as when a remote user is typing. When apps are running in the background, built-in functionality is available to [fire pop-up notifications](../notifications.md) ("toasts") to inform end users of new threads and messages.
25
-
**Service & Bot Extensibility** - REST APIs and server SDKs allow services to send and receive messages. Bots can be added easily with [Azure Bot Framework integration](../../quickstarts/chat/quickstart-botframework-integration.md).
25
+
-**Service & Bot Extensibility** - REST APIs and server SDKs allow services to send and receive messages. It is easy to add bots with [Azure Bot Framework integration](../../quickstarts/chat/quickstart-botframework-integration.md).
26
26
27
27
28
28
29
29
## Chat overview
30
30
31
31
Chat conversations happen within **chat threads**. Chat threads have the following properties:
32
32
33
-
- A chat thread is uniquely identified by its `ChatThreadId`.
33
+
- A chat thread identity is its `ChatThreadId`.
34
34
- Chat threads have between zero to 250 users as participants who can send messages to it.
35
35
- A user can be a part an unlimited number of chat threads.
36
36
- Only thread participants can send or receive messages, add participants, or remove participants.
37
-
- Users are automatically added as a participant to any chat threads that they create.
37
+
- Users are added as a participant to any chat threads that they create.
38
38
39
39
### User access
40
-
Typically the thread creator and participants have same level of access to the thread and can execute all related operations available in the SDK, including deleting it. Participants don't have write access to messages sent by other participants, which means only the message sender can update or delete their sent messages. If another participant tries to do that, they'll get an error.
40
+
Typically the thread creator and participants have same level of access to the thread and can execute all related operations available in the SDK, including deleting it. Participants don't have write access to messages sent by other participants, which means only the message sender can update or delete their sent messages. If another participant tries to do that, they get an error.
41
41
42
42
### Chat Data
43
-
Azure stores chat messages until explicitly deleted. Chat thread participants can use `ListMessages` to view message history for a particular thread. Users that are removed from a chat thread will be able to view previous message history but cannot send or receive new messages. To learn more about data being stored by Communication Services, refer to the [data residency and privacy page](../privacy.md).
43
+
Azure Communication Services stores chat messages for 90 days. Chat thread participants can use `ListMessages` to view message history for a particular thread. However, the API does not return messages once the 90 day period has passed. Users that are removed from a chat thread are able to view previous message history for 90 days but cannot send or receive new messages. To learn more about data being stored in Azure Communication Services chat service, refer to the [data residency and privacy page](../privacy.md).
44
+
45
+
For customers that use Virtual appointments, refer to our Teams Interoperability [user privacy](/azure/communication-services/concepts/interop/guest/privacy#chat-storage) for storage of chat messages in Teams meetings.
44
46
45
47
### Service limits
46
48
- The maximum number of participants allowed in a chat thread is 250.
47
49
- The maximum message size allowed is approximately 28 KB.
48
-
- For chat threads with more than 20 participants, read receipts and typing indicator features aren't supported.
50
+
- For chat threads with more than 20 participants, read receipts and typing indicator features are not supported.
49
51
50
52
## Chat architecture
51
53
@@ -54,14 +56,14 @@ There are two core parts to chat architecture: 1) Trusted Service and 2) Client
54
56
:::image type="content" source="../../media/chat-architecture.svg" alt-text="Diagram showing Communication Services' chat architecture.":::
55
57
56
58
-**Trusted service:** To properly manage a chat session, you need a service that helps you connect to Communication Services by using your resource connection string. This service is responsible for creating chat threads, adding and removing participants, and issuing access tokens to users. More information about access tokens can be found in our [access tokens](../../quickstarts/access-tokens.md) quickstart.
57
-
-**Client app:** The client application connects to your trusted service and receives the access tokens that are used by users to connect directly to Communication Services. Once your trusted service has created the chat thread and added users as participants, they can use the client app to connect to the chat thread and send messages. Use real-time notifications feature, which we will discuss below, in your client app to subscribe to message & thread updates from other participants.
59
+
-**Client app:** The client application connects to your trusted service and receives the access tokens that are used by users to connect directly to Communication Services. After creating the chat thread and adding users as participants, they can use the client application to connect to the chat thread and send messages. Use real-time notifications feature, which we discuss below, in your client application to subscribe to message & thread updates from other participants.
58
60
59
61
60
62
## Message types
61
63
62
-
As part of message history, Chat shares user-generated messages as well as system-generated messages. System messages are generated when a chat thread is updated and identify when a participant was added or removed or when the chat thread topic was updated. When you call `List Messages` or `Get Messages` on a chat thread, the result will contain both kind of messages in chronological order.
64
+
As part of message history, Chat shares user-generated messages and system-generated messages. System messages are generated when a chat thread is updated and identify when a participant was added or removed or when the chat thread topic was updated. When you call `List Messages` or `Get Messages` on a chat thread, the result contains both kind of messages in chronological order.
63
65
64
-
For user-generated messages, the message type can be set in `SendMessageOptions` when sending a message to chat thread. If no value is provided, Communication Services will default to `text` type. Setting this value is important when sending HTML. When `html` is specified, Communication Services will sanitize the content to ensure that it's rendered safely on client devices.
66
+
For user-generated messages, the message type can be set in `SendMessageOptions` when sending a message to chat thread. If no value is provided, Communication Services will default to `text` type. Setting this value is important when sending HTML. When `html` is specified, Communication Services sanitize the content to ensure that it's rendered safely on client devices.
65
67
-`text`: A plain text message composed and sent by a user as part of a chat thread.
66
68
-`html`: A formatted message using html, composed and sent by a user as part of chat thread.
67
69
@@ -88,22 +90,22 @@ Some SDKs (like the JavaScript Chat SDK) support real-time notifications. This f
88
90
89
91
## Push notifications
90
92
To send push notifications for messages missed by your users while they were away, Communication Services provides two different ways to integrate:
91
-
- Use an Event Grid resource to subscribe to chat related events (post operation) which can be plugged into your custom app notification service. For more details, see [Server Events](../../../event-grid/event-schema-communication-services.md?bc=/azure/bread/toc.json&toc=/azure/communication-services/toc.json).
93
+
- Use an Event Grid resource to subscribe to chat related events (post operation) which can be plugged into your custom app notification service. For more information, see [Server Events](../../../event-grid/event-schema-communication-services.md?bc=/azure/bread/toc.json&toc=/azure/communication-services/toc.json).
92
94
- Connect a Notification Hub resource with Communication Services resource to send push notifications and notify your application users about incoming chats and messages when the mobile app is not running in the foreground.
93
95
94
96
IOS and Android SDK can support the below event:
95
97
-`chatMessageReceived` - when a new message is sent to a chat thread by a participant.
96
98
97
-
Android SDK can support the below additional events:
99
+
Android SDK can support additional events:
98
100
-`chatMessageEdited` - when a message is edited in a chat thread.
99
101
-`chatMessageDeleted` - when a message is deleted in a chat thread.
100
-
-`chatThreadCreated` - when a chat thread is created by a Communication Services user.
101
-
-`chatThreadDeleted` - when a chat thread is deleted by a Communication Services user.
102
+
-`chatThreadCreated` - when a Communication Services user creates a chat thread.
103
+
-`chatThreadDeleted` - when a Communication Services user deletes a chat thread.
102
104
-`chatThreadPropertiesUpdated` - when chat thread properties are updated; currently, only updating the topic for the thread is supported.
103
105
-`participantsAdded` - when a user is added as a chat thread participant.
104
106
-`participantsRemoved` - when an existing participant is removed from the chat thread.
105
107
106
-
For more details, see [Push Notifications](../notifications.md).
108
+
For more information, see [Push Notifications](../notifications.md).
107
109
108
110
> [!NOTE]
109
111
> Currently sending chat push notifications with Notification Hub is generally available in Android version 1.1.0 and in IOS version 1.3.0.
@@ -116,9 +118,9 @@ You can use [Azure Cognitive APIs](../../../cognitive-services/index.yml) with t
116
118
- Help a support agent prioritize tickets by detecting a negative sentiment of an incoming message from a customer.
117
119
- Analyze the incoming messages for key detection and entity recognition, and prompt relevant info to the user in your app based on the message content.
118
120
119
-
One way to achieve this is by having your trusted service act as a participant of a chat thread. Let's say you want to enable language translation. This service will be responsible for listening to the messages being exchanged by other participants [1], calling Cognitive APIs to translate the content to desired language[2,3] and sending the translated result as a message in the chat thread[4].
121
+
One way to achieve this is by having your trusted service act as a participant of a chat thread. Let's say you want to enable language translation. This service is responsible for listening to the messages exchanged by other participants [1], calling Cognitive APIs to translate content to desired language[2,3] and sending the translated result as a message in the chat thread[4].
120
122
121
-
This way, the message history will contain both original and translated messages. In the client application, you can add logic to show the original or translated message. See [this quickstart](../../../cognitive-services/translator/quickstart-translator.md) to understand how to use Cognitive APIs to translate text to different languages.
123
+
This way, the message history contains both original and translated messages. In the client application, you can add logic to show the original or translated message. See [this quickstart](../../../cognitive-services/translator/quickstart-translator.md) to understand how to use Cognitive APIs to translate text to different languages.
122
124
123
125
:::image type="content" source="../media/chat/cognitive-services.png" alt-text="Diagram showing Cognitive Services interacting with Communication Services.":::
0 commit comments