microsoft/teams.net

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
copilot/setup-copilot-instructions

Branches

Tags

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

Clone

HTTPS

Download ZIP

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

93lines · 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
8public static partial class Search
9{
10 [AttributeUsage(AttributeTargets.Method, Inherited = true)]
11 public class Answer() : SearchAttribute
12 {
13 public override bool Select(IActivity activity)
14 {
15 if (activity is SearchActivity search)
16 {
17 return search.Value.Kind.IsSearchAnswer;
18 }
19
20 return false;
21 }
22 }
23}
24
25public static partial class AppInvokeActivityExtensions
26{
27 public static App OnAnswerSearch(this App app, Func<IContext<SearchActivity>, Task> handler)
28 {
29 app.Router.Register(new Route()
30 {
31 Name = string.Join("/", [ActivityType.Invoke, Name.Search, SearchType.SearchAnswer]),
32 Type = app.Status is null ? RouteType.System : RouteType.User,
33 Handler = async context =>
34 {
35 await handler(context.ToActivityType<SearchActivity>());
36 return null;
37 },
38 Selector = activity =>
39 {
40 if (activity is SearchActivity search)
41 {
42 return search.Value.Kind.IsSearchAnswer;
43 }
44
45 return false;
46 }
47 });
48
49 return app;
50 }
51
52 public static App OnAnswerSearch(this App app, Func<IContext<SearchActivity>, Task<Response<SearchResponse>>> handler)
53 {
54 app.Router.Register(new Route()
55 {
56 Name = string.Join("/", [ActivityType.Invoke, Name.Search, SearchType.SearchAnswer]),
57 Type = app.Status is null ? RouteType.System : RouteType.User,
58 Handler = async context => await handler(context.ToActivityType<SearchActivity>()),
59 Selector = activity =>
60 {
61 if (activity is SearchActivity search)
62 {
63 return search.Value.Kind.IsSearchAnswer;
64 }
65
66 return false;
67 }
68 });
69
70 return app;
71 }
72
73 public static App OnAnswerSearch(this App app, Func<IContext<SearchActivity>, Task<SearchResponse>> handler)
74 {
75 app.Router.Register(new Route()
76 {
77 Name = string.Join("/", [ActivityType.Invoke, Name.Search, SearchType.SearchAnswer]),
78 Type = app.Status is null ? RouteType.System : RouteType.User,
79 Handler = async context => await handler(context.ToActivityType<SearchActivity>()),
80 Selector = activity =>
81 {
82 if (activity is SearchActivity search)
83 {
84 return search.Value.Kind.IsSearchAnswer;
85 }
86
87 return false;
88 }
89 });
90
91 return app;
92 }
93}