// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. using Microsoft.Teams.Api.Activities; using Microsoft.Teams.Api.Activities.Invokes; using Microsoft.Teams.Apps.Routing; namespace Microsoft.Teams.Apps.Activities.Invokes; public static partial class Message { [AttributeUsage(AttributeTargets.Method, Inherited = true)] public class FetchTaskAttribute() : InvokeAttribute(Api.Activities.Invokes.Name.Messages.FetchTask, typeof(Messages.FetchTaskActivity)) { public override object Coerce(IContext context) => context.ToActivityType(); } } public static partial class AppInvokeActivityExtensions { /// /// Registers a handler for message/fetchTask activities. /// The bot should return a task module response containing the dialog to show the user. /// public static App OnMessageFetchTask(this App app, Func, CancellationToken, Task> handler) { app.Router.Register(new Route() { Name = string.Join("/", [ActivityType.Invoke, Name.Messages.FetchTask]), Type = app.Status is null ? RouteType.System : RouteType.User, Handler = async context => await handler(context.ToActivityType(), context.CancellationToken), Selector = activity => activity is Messages.FetchTaskActivity }); return app; } }