Skip to content

Commit 2f13fb0

Browse files
authored
Merge pull request #232333 from jpeng-ms/main
[Communication][Chat] Added Inline image Interop
2 parents 788b5b1 + 3c2ced4 commit 2f13fb0

12 files changed

+419
-50
lines changed

articles/communication-services/concepts/interop/guest/capabilities.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ In this article, you will learn which capabilities are supported for Teams exter
3131
| | Send and receive Loop components ||
3232
| | Send and receive Emojis ||
3333
| | Send and receive Stickers ||
34-
| | Send and receive Stickers ||
3534
| | Send and receive Teams messaging extensions ||
3635
| | Use typing indicators | ✔️ |
3736
| | Read receipt ||
@@ -40,6 +39,12 @@ In this article, you will learn which capabilities are supported for Teams exter
4039
| | React to chat message ||
4140
| | [Data Loss Prevention (DLP)](/microsoft-365/compliance/dlp-microsoft-teams) | ✔️*|
4241
| | [Customer Managed Keys (CMK)](/microsoft-365/compliance/customer-key-overview) | ✔️ |
42+
| Chat with Teams Interoperability | Send and receive text messages | ✔️ |
43+
| | Send and receive rich text messages | ✔️ |
44+
| | Send and receive typing indicators | ✔️ |
45+
| | [Receive inline images](../../../tutorials/chat-interop/meeting-interop-features-inline-image.md) | ✔️** |
46+
| | Receive read receipts ||
47+
| | Receive shared files ||
4348
| Mid call control | Turn your video on/off | ✔️ |
4449
| | Mute/Unmute mic | ✔️ |
4550
| | Switch between cameras | ✔️ |
@@ -168,6 +173,10 @@ When Teams external users leave the meeting, or the meeting ends, they can no lo
168173

169174
*Azure Communication Services provides developers tools to integrate Microsoft Teams Data Loss Prevention that is compatible with Microsoft Teams. For more information, go to [how to implement Data Loss Prevention (DLP)](../../../how-tos/chat-sdk/data-loss-prevention.md)
170175

176+
**Inline image support is currently in public preview and is available in the Chat SDK for JavaScript only. Preview APIs and SDKs are provided without a service-level agreement. We recommend that you don't use them for production workloads. Some features might not be supported, or they might have constrained capabilities. For more information, review [Supplemental Terms of Use for Microsoft Azure Previews.](https://azure.microsoft.com/support/legal/preview-supplemental-terms/)
177+
178+
**If the Teams external user sends a message with images uploaded via "Upload from this device" menu or via drag-and-drop (such as dragging images directly to the send box) in the Teams, then these scenarios would be covered under the file sharing capability, which is currently not supported.
179+
171180
## Server capabilities
172181

173182
The following table shows supported server-side capabilities available in Azure Communication Services:

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

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ You must be a member of the owning organization of both entities to use this fea
2222

2323
## Joining the meeting chat
2424

25-
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 will add 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 will not 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.
25+
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 will not 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.
2626

2727
## Add Chat to the Teams calling app
2828

29-
In your module level build.gradle add the dependency on the chat sdk.
29+
In your module level `build.gradle`, add the dependency on the chat sdk.
3030

3131
> [!IMPORTANT]
3232
> 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:
@@ -181,7 +181,7 @@ Replace the code in activity_main.xml with the following snippet. It adds inputs
181181

182182
### Import packages and define state variables
183183

184-
To the content of `MainActivity.java`, add the following additional imports:
184+
To the content of `MainActivity.java`, add the following imports:
185185

186186
```
187187
import android.graphics.Typeface;
@@ -254,7 +254,7 @@ Update the end of the `MainActivity.joinTeamsMeeting()` method with the code bel
254254

255255
### Enable sending messages
256256

257-
Add the `sendMessage()` method to `MainActivity`. It will use the `ChatThreadClient` to send messages on behalf of the user.
257+
Add the `sendMessage()` method to `MainActivity`. It uses the `ChatThreadClient` to send messages on behalf of the user.
258258

259259
```
260260
private void sendMessage() {
@@ -273,15 +273,15 @@ Add the `sendMessage()` method to `MainActivity`. It will use the `ChatThreadCli
273273
### Enable polling for messages and rendering them in the application
274274

275275
> [!IMPORTANT]
276-
> 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.
276+
> 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.
277277
278278
We can obtain the following data from the message list returned by the `GetMessages` API:
279279
- The `text` and `html` messages on the thread since joining
280280
- Changes to the thread roster
281281
- Updates to the thread topic
282282

283283

284-
To the `MainActivity` class, add a handler and a runnable task that will be run at 3 second intervals:
284+
To the `MainActivity` class, add a handler and a runnable task that will be run at 3-second intervals:
285285

286286
```
287287
private Handler handler = new Handler();
@@ -301,7 +301,7 @@ To the `MainActivity` class, add a handler and a runnable task that will be run
301301

302302
Note that the task has already been started at the end of the `MainActivity.joinTeamsMeeting()` method updated in the initialization step.
303303

304-
Finally, we will add the method for querying all accessible messages on the thread, parsing them by message type and displaying the `html` and `text` ones:
304+
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:
305305

306306
```
307307
private void retrieveMessages() throws InterruptedException {
@@ -381,16 +381,16 @@ Finally, we will add the method for querying all accessible messages on the thre
381381
}
382382
```
383383

384-
Display names of the chat thread participants are not set by the Teams client. The names will be 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.
384+
Display names of the chat thread participants are not 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.
385385

386386
## Get a Teams meeting chat thread for a Communication Services user
387387

388388
The Teams meeting details can be retrieved using Graph APIs, detailed in [Graph documentation](/graph/api/onlinemeeting-createorget?tabs=http&view=graph-rest-beta&preserve-view=true). The Communication Services Calling SDK accepts a full Teams meeting link or a meeting ID. They are returned as part of the `onlineMeeting` resource, accessible under the [`joinWebUrl` property](/graph/api/resources/onlinemeeting?view=graph-rest-beta&preserve-view=true)
389389

390-
With the [Graph APIs](/graph/api/onlinemeeting-createorget?tabs=http&view=graph-rest-beta&preserve-view=true), you can also obtain the `threadID`. The response will have a `chatInfo` object that contains the `threadID`.
390+
With the [Graph APIs](/graph/api/onlinemeeting-createorget?tabs=http&view=graph-rest-beta&preserve-view=true), you can also obtain the `threadID`. The response has a `chatInfo` object that contains the `threadID`.
391391

392392
You can also get the required meeting information and thread ID from the **Join Meeting** URL in the Teams meeting invite itself.
393-
A Teams meeting link looks like this: `https://teams.microsoft.com/l/meetup-join/meeting_chat_thread_id/1606337455313?context=some_context_here`. The `threadId` will be where `meeting_chat_thread_id` is in the link. Ensure that the `meeting_chat_thread_id` is unescaped before use. It should be in the following format: `19:meeting_ZWRhZDY4ZGUtYmRlNS00OWZaLTlkZTgtZWRiYjIxOWI2NTQ4@thread.v2`
393+
A Teams meeting link looks like this: `https://teams.microsoft.com/l/meetup-join/meeting_chat_thread_id/1606337455313?context=some_context_here`. The `threadId` is where `meeting_chat_thread_id` is in the link. Ensure that the `meeting_chat_thread_id` is unescaped before use. It should be in the following format: `19:meeting_ZWRhZDY4ZGUtYmRlNS00OWZaLTlkZTgtZWRiYjIxOWI2NTQ4@thread.v2`
394394

395395

396396
## Run the code
@@ -399,9 +399,10 @@ The app can now be launched using the "Run App" button on the toolbar (Shift+F10
399399

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

402-
After you join the Team's meeting you will need to admit the user to the meeting in your Team's client. Once the user is admitted and has joined the chat you will be 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 has joined the chat, you are able to send and receive messages.
403403

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

406406
> [!NOTE]
407-
> Currently only sending, receiving, and editing messages is supported for interoperability scenarios with Teams. Other features like typing indicators and Communication Services users adding or removing other users from the Teams meeting are not yet supported.
407+
> 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)
408+

0 commit comments

Comments
 (0)