From d143e0292794ca5ae7820e4bd327512dad36233d Mon Sep 17 00:00:00 2001 From: xbotter Date: Tue, 27 Jun 2023 10:23:30 +0800 Subject: [PATCH] fix BackgroundService --- .../BotSharp.Core/Plugins/PluginLoader.cs | 5 ++++- .../WeChatBackgroundService.cs | 21 +++++++------------ .../BotSharp.Plugin.WeChat/WeChatPlugin.cs | 6 +++++- src/WebStarter/appsettings.json | 2 +- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/Infrastructure/BotSharp.Core/Plugins/PluginLoader.cs b/src/Infrastructure/BotSharp.Core/Plugins/PluginLoader.cs index 6e79dc03..516b906f 100644 --- a/src/Infrastructure/BotSharp.Core/Plugins/PluginLoader.cs +++ b/src/Infrastructure/BotSharp.Core/Plugins/PluginLoader.cs @@ -72,7 +72,10 @@ public class PluginLoader { if (module.GetType().GetInterface(nameof(IBotSharpAppPlugin)) != null) { - (module as IBotSharpAppPlugin).Configure(app); + if (_settings.Plugins.Contains(module.GetType().Name)) + { + (module as IBotSharpAppPlugin).Configure(app); + } } }); } diff --git a/src/Plugins/BotSharp.Plugin.WeChat/WeChatBackgroundService.cs b/src/Plugins/BotSharp.Plugin.WeChat/WeChatBackgroundService.cs index b7948f03..09aac562 100644 --- a/src/Plugins/BotSharp.Plugin.WeChat/WeChatBackgroundService.cs +++ b/src/Plugins/BotSharp.Plugin.WeChat/WeChatBackgroundService.cs @@ -11,7 +11,7 @@ using System.Threading.Tasks; namespace BotSharp.Plugin.WeChat { - public class WeChatBackgroundService : IHostedService, IMessageQueue + public class WeChatBackgroundService : BackgroundService, IMessageQueue { private readonly Channel _queue; private readonly IServiceProvider _service; @@ -21,7 +21,7 @@ namespace BotSharp.Plugin.WeChat IServiceProvider service, ILogger logger) { - + this._service = service; this._logger = logger; this._queue = Channel.CreateUnbounded(); @@ -65,7 +65,12 @@ namespace BotSharp.Plugin.WeChat await Senparc.Weixin.MP.AdvancedAPIs.CustomApi.SendTextAsync(appId, openid, content); } - public async Task StartAsync(CancellationToken cancellationToken) + public async Task EnqueueAsync(WeChatMessage message) + { + await _queue.Writer.WriteAsync(message); + } + + protected override async Task ExecuteAsync(CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { @@ -80,15 +85,5 @@ namespace BotSharp.Plugin.WeChat } } } - - public Task StopAsync(CancellationToken cancellationToken) - { - return Task.CompletedTask; - } - - public async Task EnqueueAsync(WeChatMessage message) - { - await _queue.Writer.WriteAsync(message); - } } } diff --git a/src/Plugins/BotSharp.Plugin.WeChat/WeChatPlugin.cs b/src/Plugins/BotSharp.Plugin.WeChat/WeChatPlugin.cs index bd8caa27..38c6592f 100644 --- a/src/Plugins/BotSharp.Plugin.WeChat/WeChatPlugin.cs +++ b/src/Plugins/BotSharp.Plugin.WeChat/WeChatPlugin.cs @@ -34,7 +34,9 @@ namespace BotSharp.Plugin.WeChat services = services.AddSenparcGlobalServices(config); } - services.AddHostedService(); + services.AddSingleton(); + + services.AddHostedService(s => s.GetRequiredService()); services.TryAddSingleton(s => s.GetRequiredService()); } @@ -53,6 +55,8 @@ namespace BotSharp.Plugin.WeChat app.UseMessageHandlerForMp("/WeChatAsync", BotSharpMessageHandler.GenerateMessageHandler, options => { options.AccountSettingFunc = context => Senparc.Weixin.Config.SenparcWeixinSetting; + options.EnbleResponseLog = false; + options.EnableRequestLog = false; }); logger.LogInformation("WeChat Message Handler is running on /WeChatAsync."); diff --git a/src/WebStarter/appsettings.json b/src/WebStarter/appsettings.json index c7f705b8..10509e05 100644 --- a/src/WebStarter/appsettings.json +++ b/src/WebStarter/appsettings.json @@ -77,7 +77,7 @@ "BotSharp.Plugin.AzureOpenAI", "BotSharp.Plugin.MetaAI", "BotSharp.Plugin.Qdrant", - "BotSharp.Plugin.PaddleSharp" + "BotSharp.Plugin.PaddleSharp", "BotSharp.Plugin.WeChat" ], "Plugins": [