microsoft/teams.net

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
v2.0.0-preview.13

Branches

Tags

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

Clone

HTTPS

Download ZIP

Libraries/Microsoft.Teams.Apps/Activities/Invokes/Search/SearchActivity.cs

58lines · modecode

1using Microsoft.Teams.Api.Activities;
2using Microsoft.Teams.Api.Activities.Invokes;
3using Microsoft.Teams.Api.Search;
4using Microsoft.Teams.Apps.Routing;
5
6namespace Microsoft.Teams.Apps.Activities.Invokes;
7
8[AttributeUsage(AttributeTargets.Method, Inherited = true)]
9public class SearchAttribute() : InvokeAttribute(Api.Activities.Invokes.Name.Search, typeof(SearchActivity))
10{
11 public override object Coerce(IContext<IActivity> context) => context.ToActivityType<SearchActivity>();
12}
13
14public static partial class AppInvokeActivityExtensions
15{
16 public static App OnSearch(this App app, Func<IContext<SearchActivity>, Task> handler)
17 {
18 app.Router.Register(new Route()
19 {
20 Name = string.Join("/", [ActivityType.Invoke, Name.Search]),
21 Type = app.Status is null ? RouteType.System : RouteType.User,
22 Handler = async context =>
23 {
24 await handler(context.ToActivityType<SearchActivity>());
25 return null;
26 },
27 Selector = activity => activity is SearchActivity
28 });
29
30 return app;
31 }
32
33 public static App OnSearch(this App app, Func<IContext<SearchActivity>, Task<Response<SearchResponse>>> handler)
34 {
35 app.Router.Register(new Route()
36 {
37 Name = string.Join("/", [ActivityType.Invoke, Name.Search]),
38 Type = app.Status is null ? RouteType.System : RouteType.User,
39 Handler = async context => await handler(context.ToActivityType<SearchActivity>()),
40 Selector = activity => activity is SearchActivity
41 });
42
43 return app;
44 }
45
46 public static App OnSearch(this App app, Func<IContext<SearchActivity>, Task<SearchResponse>> handler)
47 {
48 app.Router.Register(new Route()
49 {
50 Name = string.Join("/", [ActivityType.Invoke, Name.Search]),
51 Type = app.Status is null ? RouteType.System : RouteType.User,
52 Handler = async context => await handler(context.ToActivityType<SearchActivity>()),
53 Selector = activity => activity is SearchActivity
54 });
55
56 return app;
57 }
58}