You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bot Framework回声机器人转小写中间件的配置问题

解决Echo Bot中间件未生效的问题

嘿,你已经写对了中间件类,也完成了服务注册,但问题出在你还没把这个中间件添加到Bot的处理管道中。只通过services.AddTransient<MiddlewareOne>()注册服务,只是把它放进了依赖注入容器,Bot的Adapter并不会自动使用它,必须手动把它加入中间件链才行。下面是具体的配置步骤:

步骤1:确认服务注册(你已完成,可跳过)

首先确保你在Startup.cs的ConfigureServices方法里已经注册了中间件服务:

services.AddTransient<MiddlewareOne>();

步骤2:将中间件添加到Adapter的管道中

这是关键的一步,根据你使用的Adapter类型(BotFrameworkAdapter或CloudAdapter),有两种配置方式:

方式一:使用自定义Adapter类(常见于传统模板)

如果你项目里有自定义的Adapter类(比如AdapterWithErrorHandler),在它的构造函数中注入你的中间件,然后通过Use()方法添加到管道:

public class AdapterWithErrorHandler : BotFrameworkAdapter
{
    public AdapterWithErrorHandler(IConfiguration configuration, 
                                  ILogger<BotFrameworkAdapter> logger,
                                  MiddlewareOne middlewareOne) // 注入中间件
        : base(configuration, logger)
    {
        // 把中间件加入处理管道
        Use(middlewareOne);

        // 保留原有的错误处理逻辑
        OnTurnError = async (turnContext, exception) =>
        {
            logger.LogError(exception, $"[OnTurnError] unhandled error: {exception.Message}");
            await turnContext.SendActivityAsync("Sorry, it looks like something went wrong.");
        };
    }
}

方式二:直接配置CloudAdapter(最新模板常用)

如果你的项目使用CloudAdapter,可以在Startup.cs的ConfigureServices中直接配置并添加中间件:

services.AddSingleton<CloudAdapter>(sp =>
{
    var auth = sp.GetRequiredService<ConfigurationBotFrameworkAuthentication>();
    var adapter = new CloudAdapter(auth);
    var middlewareOne = sp.GetRequiredService<MiddlewareOne>();
    
    // 添加中间件到管道
    adapter.Use(middlewareOne);

    // 错误处理逻辑
    adapter.OnTurnError = async (turnContext, exception) =>
    {
        var logger = sp.GetRequiredService<ILogger<CloudAdapter>>();
        logger.LogError(exception, $"[OnTurnError] unhandled error: {exception.Message}");
        await turnContext.SendActivityAsync("Sorry, it looks like something went wrong.");
    };

    return adapter;
});

验证是否生效

配置完成后,运行Bot并发送一条消息,查看调试输出窗口:如果能看到两次打印的消息(一次是原始文本,一次是转小写后的文本),就说明你的中间件已经正常工作了。

内容的提问来源于stack exchange,提问作者Kuba K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 20:52:43