microsoft/teams.net

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
copilot/move-activity-classes-to-core-again

Branches

Tags

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

Clone

HTTPS

Download ZIP

core/samples/CompatBot/EchoBot.cs

66lines · modecode

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4using Microsoft.Bot.Builder;
5using Microsoft.Bot.Builder.Teams;
6using Microsoft.Bot.Core;
7using Microsoft.Bot.Schema;
8
9namespace CompatBot;
10
11public class ConversationData
12{
13 public int MessageCount { get; set; } = 0;
14
15}
16
17internal class EchoBot(ConversationState conversationState, ILogger<EchoBot> logger) : TeamsActivityHandler
18{
19 public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default)
20 {
21 await base.OnTurnAsync(turnContext, cancellationToken);
22
23 await conversationState.SaveChangesAsync(turnContext, false, cancellationToken);
24 }
25
26 protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
27 {
28 logger.LogInformation("EchoBot OnMessageActivityAsync " + BotApplication.Version);
29
30 IStatePropertyAccessor<ConversationData> conversationStateAccessors = conversationState.CreateProperty<ConversationData>(nameof(ConversationData));
31 ConversationData conversationData = await conversationStateAccessors.GetAsync(turnContext, () => new ConversationData(), cancellationToken);
32
33 string replyText = $"Echo from BF Compat [{conversationData.MessageCount++}]: {turnContext.Activity.Text}";
34 await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
35 // await turnContext.SendActivityAsync(MessageFactory.Text($"Send a proactive message `/api/notify/{turnContext.Activity.Conversation.Id}`"), cancellationToken);
36 }
37
38 protected override async Task OnMessageReactionActivityAsync(ITurnContext<IMessageReactionActivity> turnContext, CancellationToken cancellationToken)
39 {
40 await turnContext.SendActivityAsync(MessageFactory.Text("Message reaction received."), cancellationToken);
41 }
42
43 protected override async Task OnInstallationUpdateActivityAsync(ITurnContext<IInstallationUpdateActivity> turnContext, CancellationToken cancellationToken)
44 {
45 await turnContext.SendActivityAsync(MessageFactory.Text("Installation update received."), cancellationToken);
46 await turnContext.SendActivityAsync(MessageFactory.Text($"Send a proactive messages to `/api/notify/{turnContext.Activity.Conversation.Id}`"), cancellationToken);
47 }
48
49 protected override async Task OnInstallationUpdateAddAsync(ITurnContext<IInstallationUpdateActivity> turnContext, CancellationToken cancellationToken)
50 {
51 await turnContext.SendActivityAsync(MessageFactory.Text("Installation update Add received."), cancellationToken);
52 await turnContext.SendActivityAsync(MessageFactory.Text($"Send a proactive messages to `/api/notify/{turnContext.Activity.Conversation.Id}`"), cancellationToken);
53 }
54
55 //protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
56 //{
57 // await turnContext.SendActivityAsync(MessageFactory.Text("Welcome."), cancellationToken);
58 // await turnContext.SendActivityAsync(MessageFactory.Text($"Send a proactive messages to `/api/notify/{turnContext.Activity.Conversation.Id}`"), cancellationToken);
59 //}
60
61 //protected override async Task OnTeamsMeetingStartAsync(MeetingStartEventDetails meeting, ITurnContext<IEventActivity> turnContext, CancellationToken cancellationToken)
62 //{
63 // await turnContext.SendActivityAsync(MessageFactory.Text("Welcome to meeting: "), cancellationToken);
64 // await turnContext.SendActivityAsync(MessageFactory.Text($"{meeting.Title} {meeting.MeetingType}"), cancellationToken);
65 //}
66}
67