microsoft/teams.net

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
e2efe052792ba394b46f2004d1390a3cdfcd0c1e

Branches

Tags

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

Clone

HTTPS

Download ZIP

core/samples/MeetingsBot/Program.cs

69lines · modecode

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4using Microsoft.Teams.Bot.Apps;
5using Microsoft.Teams.Bot.Apps.Handlers;
6using Microsoft.Teams.Bot.Apps.Schema;
7
8WebApplicationBuilder webAppBuilder = WebApplication.CreateSlimBuilder(args);
9webAppBuilder.Services.AddTeamsBotApplication();
10WebApplication webApp = webAppBuilder.Build();
11
12TeamsBotApplication teamsApp = webApp.UseTeamsBotApplication();
13
14// ==================== MEETING HANDLERS ====================
15
16teamsApp.OnMeetingStart(async (context, cancellationToken) =>
17{
18 MeetingStartValue? meeting = context.Activity.Value;
19 Console.WriteLine($"[MeetingStart] Title: {meeting?.Title}");
20 await context.SendActivityAsync($"Meeting started: **{meeting?.Title}**", cancellationToken);
21});
22
23teamsApp.OnMeetingEnd(async (context, cancellationToken) =>
24{
25 MeetingEndValue? meeting = context.Activity.Value;
26 Console.WriteLine($"[MeetingEnd] Title: {meeting?.Title}, EndTime: {meeting?.EndTime:u}");
27 await context.SendActivityAsync($"Meeting ended: **{meeting?.Title}**\nEnd time: {meeting?.EndTime:u}", cancellationToken);
28});
29
30teamsApp.OnMeetingParticipantJoin(async (context, cancellationToken) =>
31{
32 IList<MeetingParticipantMember> members = context.Activity.Value?.Members ?? [];
33 string names = string.Join(", ", members.Select(m => m.User.Name ?? m.User.Id));
34 Console.WriteLine($"[MeetingParticipantJoin] Members: {names}");
35 await context.SendActivityAsync($"Participant(s) joined: {names}", cancellationToken);
36});
37
38teamsApp.OnMeetingParticipantLeave(async (context, cancellationToken) =>
39{
40 IList<MeetingParticipantMember> members = context.Activity.Value?.Members ?? [];
41 string names = string.Join(", ", members.Select(m => m.User.Name ?? m.User.Id));
42 Console.WriteLine($"[MeetingParticipantLeave] Members: {names}");
43 await context.SendActivityAsync($"Participant(s) left: {names}", cancellationToken);
44});
45
46//TODO : review if we can trigger these
47// ==================== COMMAND HANDLERS ====================
48/*
49
50teamsApp.OnCommand(async (context, cancellationToken) =>
51{
52 var commandId = context.Activity.Value?.CommandId ?? "unknown";
53 Console.WriteLine($"[Command] CommandId: {commandId}");
54 await context.SendActivityAsync($"Received command: **{commandId}**", cancellationToken);
55});
56
57teamsApp.OnCommandResult(async (context, cancellationToken) =>
58{
59 var commandId = context.Activity.Value?.CommandId ?? "unknown";
60 var error = context.Activity.Value?.Error;
61 Console.WriteLine($"[CommandResult] CommandId: {commandId}, HasError: {error is not null}");
62
63 if (error is not null)
64 await context.SendActivityAsync($"Command **{commandId}** failed: {error.Message}", cancellationToken);
65 else
66 await context.SendActivityAsync($"Command **{commandId}** completed successfully.", cancellationToken);
67});
68*/
69webApp.Run();
70