我尝试添加在乌节路核心CMS应用程序中使用微软机器人框架由外挂。我是比较新的果园核心,我已经安装使用果园核心模板创建一个新的项目。
问题背景/场景:
services.AddBot<MyBot>
加我的机器人。我的构建以及运行期间没有收到任何错误。
通过使用services.AddBot<MyBot>()
寄存器的URL /api/messages
默认我想这个端点和无法访问我的机器人
据我所知,乌节路核心处理路由和可能不知道这个网址的这里是我的问题: - 有没有办法让果园核心了解这条路呢? - 最后,我希望能够让在多租户在此模块中我的果园核心CMS网站
所以我要带您正在运行与处理程序的注册与启动过程中IApplicationBuilder
的顺序有问题的猜测。如果你不知道,你在应用生成地图事物的秩序真的很重要。
因为你有一个现有的代码库,我会想,当你添加的机器人,你添加在最后的.UseBotFramework()
通话。由于UseBotFramework()
将被默认注册下/api/messages
你的机器人,有一个很好的机会存在,你已经已经制定的“吞咽”打算去机器人的要求MVC路线。你有两个选择来解决这个问题:
.UseBotFramework()
使得其之前的任何其它路由映射,使得它将对处理传入请求第一DIBS。AddBot<YourBot>(…)
呼叫,像这样过程中完成:services.AddBot<YourBot>(options =>
{
options.Paths.BasePath = "bots";
});
而这将导致道路变得/bots/messages
代替。您也可以改变/messages
如果通过options.Paths.MessagesPath
想要的。
随着OrchardCore您可以通过覆盖在StartupBase一个配置方法插入路线建设者。我假设你在已经从StartupBase继承的自定义启动类中添加services.AddBot?
看一看在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使用正确的路线