microsoft/teams.net

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
v2.0.8

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

65lines · modecode

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