我正在尝试在Orchard Core CMS应用程序中使用Microsoft Bot Framework添加Bot。我是Orchard Core的新手,我已经使用Orchard Core模板设置了一个新项目。
问题上下文/场景:
我正在尝试使用services.AddBot<MyBot>
添加Bot。在构建和运行期间我都没有收到任何错误。
services.AddBot<MyBot>()
注册URL /api/messages
时,我尝试了此终结点,但无法访问我的Bot 这是我的问题: -有没有办法让Orchard Core知道这条路线? -最终,我希望能够在Orchard Core CMS网站中的多个租户下启用该模块
答案 0 :(得分:1)
因此,我将进行有根据的猜测,即在启动过程中,您在IApplicationBuilder
中向处理程序注册的顺序遇到了问题。如果您不知道,则在应用构建器确实上映射事物的顺序很重要。
因为您已有代码库,所以我想猜想,当您添加漫游器时,您在末尾添加了.UseBotFramework()
调用。由于UseBotFramework()
默认情况下会在/api/messages
下注册您的漫游器,因此您已经映射的现有MVC路由很有可能会“吞噬”打算发往该漫游器的请求。您有两种选择可以解决此问题:
.UseBotFramework()
,使其在任何其他路由映射之前,以便在处理传入请求时首先遇到麻烦。AddBot<YourBot>(…)
调用期间完成,如下所示:services.AddBot<YourBot>(options =>
{
options.Paths.BasePath = "bots";
});
这将导致路径变为/bots/messages
。如果需要,也可以通过/messages
来更改options.Paths.MessagesPath
。
答案 1 :(得分:0)
使用OrchardCore,您可以通过覆盖StartupBase中的Configure方法来插入路由构建器。我假设你在自定义启动类中添加services.AddBot从StartupBase已经继承?
看看StartupBase中的另一个替代
public override void Configure(IApplicationBuilder app, IRouteBuilder routes, IServiceProvider serviceProvider)
{
routes.MapAreaRoute(
name: "a-route-name",
areaName: "area-name",
template: "api/messages",
defaults: new { controller = "Bot", action = "Index" }
);
}
您将需要找出UseBotFramework使用的正确路线