using BotSharp.Abstraction.Planning; using BotSharp.Abstraction.Routing; using BotSharp.Abstraction.Routing.Models; using BotSharp.Abstraction.Routing.Settings; using BotSharp.Abstraction.Settings; using BotSharp.Core.Planning; using BotSharp.Core.Routing.Hooks; using Microsoft.Extensions.Configuration; namespace BotSharp.Core.Routing; public class RoutingPlugin : IBotSharpPlugin { public string Id => "87352ece-2c1c-477c-8236-2e047e11dcab"; public SettingsMeta Settings => new SettingsMeta("Router"); public object GetNewSettingsInstance() => new RoutingSettings(); public void RegisterDI(IServiceCollection services, IConfiguration config) { services.AddScoped(); // Register router services.AddScoped(provider => { var settingService = provider.GetRequiredService(); return settingService.Bind("Router"); }); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(provider => { var settingService = provider.GetRequiredService(); var routingSettings = settingService.Bind("Router"); if (routingSettings.Planner == nameof(HFPlanner)) return provider.GetRequiredService(); else return provider.GetRequiredService(); }); } }