microsoft/teams.net

Public

mirrored fromhttps://github.com/microsoft/teams.netAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
samples/migration-bot

Branches

Tags

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

Clone

HTTPS

Download ZIP

core/src/Microsoft.Teams.Bot.Apps/Handlers/ConversationUpdateHandler.Activity.cs

214lines · modecode

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4using System.Text.Json;
5using System.Text.Json.Serialization;
6using Microsoft.Teams.Bot.Apps.Schema;
7using Microsoft.Teams.Bot.Core.Schema;
8
9namespace Microsoft.Teams.Bot.Apps.Handlers;
10
11/// <summary>
12/// Represents a conversation update activity.
13/// </summary>
14public class ConversationUpdateActivity : TeamsActivity
15{
16 /// <summary>
17 /// Convenience method to create a ConversationUpdateActivity from a CoreActivity.
18 /// </summary>
19 /// <param name="activity">The CoreActivity to convert.</param>
20 /// <returns>A ConversationUpdateActivity instance.</returns>
21 public static new ConversationUpdateActivity FromActivity(CoreActivity activity)
22 {
23 ArgumentNullException.ThrowIfNull(activity);
24 return new ConversationUpdateActivity(activity);
25 }
26
27 /// <summary>
28 /// Default constructor.
29 /// </summary>
30 [JsonConstructor]
31 public ConversationUpdateActivity() : base(TeamsActivityType.ConversationUpdate)
32 {
33 }
34
35 /// <summary>
36 /// Internal constructor to create ConversationUpdateActivity from CoreActivity.
37 /// </summary>
38 /// <param name="activity">The CoreActivity to convert.</param>
39 protected ConversationUpdateActivity(CoreActivity activity) : base(activity)
40 {
41 /*
42 if (activity.Properties.TryGetValue("topicName", out var topicName))
43 {
44 TopicName = topicName?.ToString();
45 activity.Properties.Remove("topicName");
46 }
47
48 if (activity.Properties.TryGetValue("historyDisclosed", out var historyDisclosed) && historyDisclosed != null)
49 {
50 if (historyDisclosed is JsonElement je)
51 {
52 if (je.ValueKind == JsonValueKind.True)
53 HistoryDisclosed = true;
54 else if (je.ValueKind == JsonValueKind.False)
55 HistoryDisclosed = false;
56 }
57 else if (historyDisclosed is bool boolValue)
58 {
59 HistoryDisclosed = boolValue;
60 }
61 else if (bool.TryParse(historyDisclosed.ToString(), out var result))
62 {
63 HistoryDisclosed = result;
64 }
65 activity.Properties.Remove("historyDisclosed");
66 }
67 */
68
69 if (activity.Properties.TryGetValue("membersAdded", out object? membersAdded) && membersAdded != null)
70 {
71 if (membersAdded is JsonElement je)
72 {
73 MembersAdded = JsonSerializer.Deserialize<IList<TeamsConversationAccount>>(je.GetRawText());
74 }
75 else
76 {
77 MembersAdded = membersAdded as IList<TeamsConversationAccount>;
78 }
79 activity.Properties.Remove("membersAdded");
80 }
81
82 if (activity.Properties.TryGetValue("membersRemoved", out object? membersRemoved) && membersRemoved != null)
83 {
84 if (membersRemoved is JsonElement je)
85 {
86 MembersRemoved = JsonSerializer.Deserialize<IList<TeamsConversationAccount>>(je.GetRawText());
87 }
88 else
89 {
90 MembersRemoved = membersRemoved as IList<TeamsConversationAccount>;
91 }
92 activity.Properties.Remove("membersRemoved");
93 }
94 }
95
96 //TODO : review properties
97 /*
98 /// <summary>
99 /// Gets or sets the updated topic name of the conversation.
100 /// </summary>
101 [JsonPropertyName("topicName")]
102 public string? TopicName { get; set; }
103
104 /// <summary>
105 /// Gets or sets a value indicating whether the prior history is disclosed.
106 /// </summary>
107 [JsonPropertyName("historyDisclosed")]
108 public bool? HistoryDisclosed { get; set; }
109 */
110
111 /// <summary>
112 /// Gets or sets the collection of members added to the conversation.
113 /// </summary>
114 [JsonPropertyName("membersAdded")]
115 public IList<TeamsConversationAccount>? MembersAdded { get; set; }
116
117 /// <summary>
118 /// Gets or sets the collection of members removed from the conversation.
119 /// </summary>
120 [JsonPropertyName("membersRemoved")]
121 public IList<TeamsConversationAccount>? MembersRemoved { get; set; }
122}
123
124/// <summary>
125/// String constants for conversation event types.
126/// </summary>
127public static class ConversationEventTypes
128{
129 /// <summary>
130 /// Channel created event.
131 /// </summary>
132 public const string ChannelCreated = "channelCreated";
133
134 /// <summary>
135 /// Channel deleted event.
136 /// </summary>
137 public const string ChannelDeleted = "channelDeleted";
138
139 /// <summary>
140 /// Channel renamed event.
141 /// </summary>
142 public const string ChannelRenamed = "channelRenamed";
143
144
145 /// <summary>
146 /// Channel shared event.
147 /// </summary>
148 public const string ChannelShared = "channelShared";
149
150 /// <summary>
151 /// Channel unshared event.
152 /// </summary>
153 public const string ChannelUnShared = "channelUnshared";
154
155 /// <summary>
156 /// Channel member added event.
157 /// </summary>
158 public const string ChannelMemberAdded = "channelMemberAdded";
159
160 /// <summary>
161 /// Channel member removed event.
162 /// </summary>
163 public const string ChannelMemberRemoved = "channelMemberRemoved";
164
165 //TODO : review these events
166 /*
167 /// <summary>
168 /// Channel restored event.
169 /// </summary>
170 public const string ChannelRestored = "channelRestored";
171 */
172
173 /// <summary>
174 /// Team member added event.
175 /// </summary>
176 public const string TeamMemberAdded = "teamMemberAdded";
177
178 /// <summary>
179 /// Team member removed event.
180 /// </summary>
181 public const string TeamMemberRemoved = "teamMemberRemoved";
182
183 /// <summary>
184 /// Team archived event.
185 /// </summary>
186 public const string TeamArchived = "teamArchived";
187
188 /// <summary>
189 /// Team deleted event.
190 /// </summary>
191 public const string TeamDeleted = "teamDeleted";
192
193 /// <summary>
194 /// Team renamed event.
195 /// </summary>
196 public const string TeamRenamed = "teamRenamed";
197
198 /// <summary>
199 /// Team unarchived event.
200 /// </summary>
201 public const string TeamUnarchived = "teamUnarchived";
202
203 /*TODO : review these events
204 /// <summary>
205 /// Team hard deleted event.
206 /// </summary>
207 public const string TeamHardDeleted = "teamHardDeleted";
208
209 /// <summary>
210 /// Team restored event.
211 /// </summary>
212 public const string TeamRestored = "teamRestored";
213 */
214}
215