microsoft/teams.net

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
core/sso-in-channels

Branches

Tags

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

Clone

HTTPS

Download ZIP

Libraries/Microsoft.Teams.Apps/Activities/CommandResultActivity.cs

51lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT License.
3
4using Microsoft.Teams.Api.Activities;
5using Microsoft.Teams.Apps.Routing;
6
7namespace Microsoft.Teams.Apps.Activities;
8
9[AttributeUsage(AttributeTargets.Method, Inherited = true)]
10public class CommandResultAttribute() : ActivityAttribute(ActivityType.CommandResult, typeof(CommandResultActivity))
11{
12 public override object Coerce(IContext<IActivity> context) => context.ToActivityType<CommandResultActivity>();
13}
14
15public static partial class AppActivityExtensions
16{
17 [Obsolete("Use the handler with the cancellation token")]
18 public static App OnCommandResult(this App app, Func<IContext<CommandResultActivity>, Task> handler)
19 {
20 app.Router.Register(new Route()
21 {
22 Name = ActivityType.CommandResult,
23 Type = app.Status is null ? RouteType.System : RouteType.User,
24 Handler = async context =>
25 {
26 await handler(context.ToActivityType<CommandResultActivity>());
27 return null;
28 },
29 Selector = activity => activity is CommandResultActivity
30 });
31
32 return app;
33 }
34
35 public static App OnCommandResult(this App app, Func<IContext<CommandResultActivity>, CancellationToken, Task> handler)
36 {
37 app.Router.Register(new Route()
38 {
39 Name = ActivityType.CommandResult,
40 Type = app.Status is null ? RouteType.System : RouteType.User,
41 Handler = async context =>
42 {
43 await handler(context.ToActivityType<CommandResultActivity>(), context.CancellationToken);
44 return null;
45 },
46 Selector = activity => activity is CommandResultActivity
47 });
48
49 return app;
50 }
51}