// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Integration.AspNet.Core; using Microsoft.Teams.Core; using PABot; using PABot.Bots; using PABot.Dialogs; WebApplicationBuilder builder = WebApplication.CreateBuilder(args); // Register TeamsBotApplication and all dependencies (uses MsalBot and MsalAgent configuration sections) builder.Services.AddTeamsBotApplications(); // Register adapter using the TeamsBotApplication builder.Services.AddSingleton(sp => { return new AdapterWithErrorHandler( sp.GetRequiredService(), sp.GetRequiredService(), sp.GetRequiredService(), sp.GetRequiredService>(), sp.GetRequiredService(), sp.GetRequiredService()); }); // Register bot state and dialog builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); // Register bot (pick between TeamsBot & EchoBot) // builder.Services.AddTransient>(); // builder.Services.AddTransient(); builder.Services.AddTransient(); WebApplication app = builder.Build(); // Map endpoint with BotAdapter authorization policy app.MapPost("/api/messages", (HttpRequest request, HttpResponse response, IBot bot, CancellationToken ct, IBotFrameworkHttpAdapter adapter) => adapter.ProcessAsync(request, response, bot, ct)).RequireAuthorization("BotAdapter"); app.Run();