添加博特果园核心

问题描述 投票:1回答:2

我尝试添加在乌节路​​核心CMS应用程序中使用微软机器人框架由外挂。我是比较新的果园核心,我已经安装使用果园核心模板创建一个新的项目。

问题背景/场景:

  • 我想一个机器人加入到使用果园核心我的网站
  • 我创建使用果园核心模板的自定义模块和我能够添加ApiController处理特定路线
  • 我试图建立使用Microsoft博特框架SDK V4由外挂
  • 我试图用services.AddBot<MyBot>加我的机器人。我的构建以及运行期间没有收到任何错误。 通过使用services.AddBot<MyBot>()寄存器的URL /api/messages默认我想这个端点和无法访问我的机器人 据我所知,乌节路核心处理路由和可能不知道这个网址的

这里是我的问题: - 有没有办法让果园核心了解这条路呢? - 最后,我希望能够让在多租户在此模块中我的果园核心CMS网站

c# routing .net-core botframework orchardcms
2个回答
1
投票

所以我要带您正在运行与处理程序的注册与启动过程中IApplicationBuilder的顺序有问题的猜测。如果你不知道,你在应用生成地图事物的秩序真的很重要。

因为你有一个现有的代码库,我会想,当你添加的机器人,你添加在最后的.UseBotFramework()通话。由于UseBotFramework()将被默认注册下/api/messages你的机器人,有一个很好的机会存在,你已经已经制定的“吞咽”打算去机器人的要求MVC路线。你有两个选择来解决这个问题:

  1. 移动.UseBotFramework()使得其之前的任何其它路由映射,使得它将对处理传入请求第一DIBS。
  2. 改变这种机器人将监听,这样它不与您的API控制器的路线冲突的路线。这是AddBot<YourBot>(…)呼叫,像这样过程中完成:
services.AddBot<YourBot>(options => 
{
    options.Paths.BasePath = "bots";
});

而这将导致道路变得/bots/messages代替。您也可以改变/messages如果通过options.Paths.MessagesPath想要的。


0
投票

随着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使用正确的路线

© www.soinside.com 2019 - 2024. All rights reserved.