microsoft/teams.net

Public

mirrored from https://github.com/microsoft/teams.netAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
cg/integration-test-caching

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

core/src/Microsoft.Teams.Apps/Schema/Entities/OMessageEntity.Extensions.cs

63lines · modecode

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4namespace Microsoft.Teams.Apps.Schema.Entities;
5
6/// <summary>
7/// OMessage entity extension methods.
8/// </summary>
9public static class OMessageEntityExtensions
10{
11 /// <summary>
12 /// Gets the first message entity from the activity.
13 /// </summary>
14 public static OMessageEntity? GetMessageEntity(this TeamsActivity activity)
15 {
16 ArgumentNullException.ThrowIfNull(activity);
17 if (activity.Entities == null)
18 {
19 return null;
20 }
21
22 return activity.Entities.FirstOrDefault(e => e.Type == "https://schema.org/Message" && e is OMessageEntity) as OMessageEntity;
23 }
24
25 /// <summary>
26 /// Internal helper to get or create the root message entity for an activity.
27 /// </summary>
28 internal static OMessageEntity GetOrCreateRootMessageEntity(TeamsActivity activity)
29 {
30 ArgumentNullException.ThrowIfNull(activity);
31
32 activity.Entities ??= [];
33
34 OMessageEntity? messageEntity = activity.Entities.FirstOrDefault(
35 e => e.Type == "https://schema.org/Message" && e.OType == "Message"
36 ) as OMessageEntity;
37
38 if (messageEntity is null)
39 {
40 messageEntity = new OMessageEntity();
41 activity.Entities.Add(messageEntity);
42 }
43
44 return messageEntity;
45 }
46
47 /// <summary>
48 /// Internal helper to add AI-generated content label to the message entity.
49 /// </summary>
50 internal static OMessageEntity AddAIGeneratedContent(TeamsActivity activity)
51 {
52 ArgumentNullException.ThrowIfNull(activity);
53
54 OMessageEntity messageEntity = GetOrCreateRootMessageEntity(activity);
55 messageEntity.AdditionalType ??= [];
56 if (!messageEntity.AdditionalType.Contains("AIGeneratedContent"))
57 {
58 messageEntity.AdditionalType.Add("AIGeneratedContent");
59 }
60
61 return messageEntity;
62 }
63}
64