microsoft/teams.net

Public

mirrored from https://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

Libraries/Microsoft.Teams.Apps/Activities/Invokes/AdaptiveCards/ActionActivity.cs

107lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT License.
3
4using Microsoft.Teams.Api.Activities;
5using Microsoft.Teams.Api.Activities.Invokes;
6using Microsoft.Teams.Api.AdaptiveCards;
7using Microsoft.Teams.Apps.Routing;
8
9namespace Microsoft.Teams.Apps.Activities.Invokes;
10
11public static partial class AdaptiveCard
12{
13 [AttributeUsage(AttributeTargets.Method, Inherited = true)]
14 public class ActionAttribute() : InvokeAttribute(Api.Activities.Invokes.Name.AdaptiveCards.Action, typeof(AdaptiveCards.ActionActivity))
15 {
16 public override object Coerce(IContext<IActivity> context) => context.ToActivityType<AdaptiveCards.ActionActivity>();
17 }
18}
19
20public static partial class AppInvokeActivityExtensions
21{
22 public static App OnAdaptiveCardAction(this App app, Func<IContext<AdaptiveCards.ActionActivity>, Task> handler)
23 {
24 app.Router.Register(new Route()
25 {
26 Name = string.Join("/", [ActivityType.Invoke, Name.AdaptiveCards.Action]),
27 Type = app.Status is null ? RouteType.System : RouteType.User,
28 Handler = async context =>
29 {
30 await handler(context.ToActivityType<AdaptiveCards.ActionActivity>());
31 return null;
32 },
33 Selector = activity => activity is AdaptiveCards.ActionActivity
34 });
35
36 return app;
37 }
38
39 public static App OnAdaptiveCardAction(this App app, Func<IContext<AdaptiveCards.ActionActivity>, Task<Response<ActionResponse>>> handler)
40 {
41 app.Router.Register(new Route()
42 {
43 Name = string.Join("/", [ActivityType.Invoke, Name.AdaptiveCards.Action]),
44 Type = app.Status is null ? RouteType.System : RouteType.User,
45 Handler = async context => await handler(context.ToActivityType<AdaptiveCards.ActionActivity>()),
46 Selector = activity => activity is AdaptiveCards.ActionActivity
47 });
48
49 return app;
50 }
51
52 public static App OnAdaptiveCardAction(this App app, Func<IContext<AdaptiveCards.ActionActivity>, Task<ActionResponse>> handler)
53 {
54 app.Router.Register(new Route()
55 {
56 Name = string.Join("/", [ActivityType.Invoke, Name.AdaptiveCards.Action]),
57 Type = app.Status is null ? RouteType.System : RouteType.User,
58 Handler = async context => await handler(context.ToActivityType<AdaptiveCards.ActionActivity>()),
59 Selector = activity => activity is AdaptiveCards.ActionActivity
60 });
61
62 return app;
63 }
64
65 public static App OnAdaptiveCardAction(this App app, Func<IContext<AdaptiveCards.ActionActivity>, CancellationToken, Task> handler)
66 {
67 app.Router.Register(new Route()
68 {
69 Name = string.Join("/", [ActivityType.Invoke, Name.AdaptiveCards.Action]),
70 Type = app.Status is null ? RouteType.System : RouteType.User,
71 Handler = async context =>
72 {
73 await handler(context.ToActivityType<AdaptiveCards.ActionActivity>(), context.CancellationToken);
74 return null;
75 },
76 Selector = activity => activity is AdaptiveCards.ActionActivity
77 });
78
79 return app;
80 }
81
82 public static App OnAdaptiveCardAction(this App app, Func<IContext<AdaptiveCards.ActionActivity>, CancellationToken, Task<Response<ActionResponse>>> handler)
83 {
84 app.Router.Register(new Route()
85 {
86 Name = string.Join("/", [ActivityType.Invoke, Name.AdaptiveCards.Action]),
87 Type = app.Status is null ? RouteType.System : RouteType.User,
88 Handler = async context => await handler(context.ToActivityType<AdaptiveCards.ActionActivity>(), context.CancellationToken),
89 Selector = activity => activity is AdaptiveCards.ActionActivity
90 });
91
92 return app;
93 }
94
95 public static App OnAdaptiveCardAction(this App app, Func<IContext<AdaptiveCards.ActionActivity>, CancellationToken, Task<ActionResponse>> handler)
96 {
97 app.Router.Register(new Route()
98 {
99 Name = string.Join("/", [ActivityType.Invoke, Name.AdaptiveCards.Action]),
100 Type = app.Status is null ? RouteType.System : RouteType.User,
101 Handler = async context => await handler(context.ToActivityType<AdaptiveCards.ActionActivity>(), context.CancellationToken),
102 Selector = activity => activity is AdaptiveCards.ActionActivity
103 });
104
105 return app;
106 }
107}