BotSharp/src/Plugins/BotSharp.Plugin.WeChat/WeChatPlugin.cs

66 lines
2.4 KiB
C#
Raw Normal View History

2023-06-24 09:25:55 +00:00
using BotSharp.Abstraction.Plugins;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Hosting;
2023-06-26 22:16:21 +00:00
using Senparc.CO2NET.AspNet;
using Senparc.CO2NET;
using Senparc.Weixin;
using Senparc.Weixin.MP;
using Senparc.Weixin.MP.MessageHandlers.Middleware;
2023-06-26 23:12:38 +00:00
using Senparc.Weixin.Entities;
using Senparc.CO2NET.RegisterServices;
using Microsoft.Extensions.Logging;
2023-07-03 02:57:09 +00:00
using BotSharp.Plugin.WeChat.Users;
2023-06-24 09:25:55 +00:00
namespace BotSharp.Plugin.WeChat
{
2023-06-26 22:16:21 +00:00
public class WeChatPlugin : IBotSharpAppPlugin
2023-06-24 09:25:55 +00:00
{
public void RegisterDI(IServiceCollection services, IConfiguration config)
{
2023-07-03 02:57:09 +00:00
services.AddScoped<IWeChatAccountUserService,WeChatAccountUserService> ();
2023-06-24 09:25:55 +00:00
services.AddMemoryCache();
2023-06-26 23:12:38 +00:00
services.Configure<SenparcWeixinSetting>(config.GetSection("WeChat"));
if (!Senparc.CO2NET.RegisterServices.RegisterServiceExtension.SenparcGlobalServicesRegistered)
{
services = services.AddSenparcGlobalServices(config);
}
2023-07-03 01:02:33 +00:00
WeChatBackgroundService.AgentId = config["WeChat:AgentId"];
2023-06-24 09:25:55 +00:00
2023-06-27 02:23:30 +00:00
services.AddSingleton<WeChatBackgroundService>();
2023-07-03 01:02:33 +00:00
2023-06-27 02:23:30 +00:00
services.AddHostedService(s => s.GetRequiredService<WeChatBackgroundService>());
2023-06-24 09:25:55 +00:00
services.TryAddSingleton<IMessageQueue>(s => s.GetRequiredService<WeChatBackgroundService>());
}
2023-06-26 22:16:21 +00:00
public void Configure(IApplicationBuilder app)
2023-06-24 09:25:55 +00:00
{
2023-06-26 22:16:21 +00:00
var env = app.ApplicationServices.GetRequiredService<IHostEnvironment>();
2023-06-26 23:12:38 +00:00
var logger = app.ApplicationServices.GetRequiredService<ILogger<WeChatPlugin>>();
2023-06-26 22:16:21 +00:00
var register = app.UseSenparcGlobal(env);
register.UseSenparcWeixin(null, (svc, settings) =>
{
svc.RegisterMpAccount(settings, "WeChat");
}, app.ApplicationServices);
2023-06-26 23:12:38 +00:00
app.UseMessageHandlerForMp("/WeChatAsync", BotSharpMessageHandler.GenerateMessageHandler, options =>
2023-06-26 22:16:21 +00:00
{
options.AccountSettingFunc = context => Senparc.Weixin.Config.SenparcWeixinSetting;
2023-06-27 02:23:30 +00:00
options.EnbleResponseLog = false;
options.EnableRequestLog = false;
2023-06-26 22:16:21 +00:00
});
2023-06-26 23:12:38 +00:00
logger.LogInformation("WeChat Message Handler is running on /WeChatAsync.");
2023-06-24 09:25:55 +00:00
}
}
}