c# - 在 Orchard Core 中添加机器人
问题描述
我正在尝试在 Orchard Core CMS 应用程序中使用 Microsoft Bot Framework 添加一个 Bot。我对 Orchard Core 比较陌生,我已经使用 Orchard Core 模板设置了一个新项目。
问题背景/场景:
- 我想使用 Orchard Core 将 Bot 添加到我的网站
- 我使用 Orchard Core 模板创建了一个自定义模块,并且能够添加 ApiController 来处理特定路由
- 我正在尝试使用 Microsoft Bot Framework SDK V4 构建一个 Bot
我正在尝试使用
services.AddBot<MyBot>
. 在构建和运行期间我没有收到任何错误。- 默认情况下,使用
services.AddBot<MyBot>()
注册 URL/api/messages
我尝试了这个端点并且无法访问我的机器人 - 我了解 Orchard Core 处理路由,可能不知道此 URL
- 默认情况下,使用
这是我的问题: - 有没有办法让 Orchard Core 知道这条路线?- 最终我希望能够在我的 Orchard Core CMS 站点中的多个租户下启用此模块
解决方案
因此,我将做出有根据的猜测,即您IApplicationBuilder
在启动期间遇到了处理程序注册顺序的问题。如果您不知道,您在应用程序构建器上映射事物的顺序真的很重要。
因为您有一个现有的代码库,所以我猜想当您添加机器人时,您.UseBotFramework()
在最后添加了调用。由于默认情况UseBotFramework()
下将注册您的机器人/api/messages
,因此您已经映射的现有 MVC 路由很有可能“吞下”打算发送给机器人的请求。您有两种选择来解决这个问题:
- 移动
.UseBotFramework()
它,使其位于任何其他路由映射之前,以便它首先处理传入的请求。 - 更改机器人将侦听的路由,使其不会与您的 API 控制器路由冲突。这是在
AddBot<YourBot>(…)
通话期间完成的,如下所示:
services.AddBot<YourBot>(options =>
{
options.Paths.BasePath = "bots";
});
这将导致路径变为/bots/messages
。如果需要,您还可以/messages
通过options.Paths.MessagesPath
.
推荐阅读
- css - 在 React 中将样式传递给父母的孩子
- python - 检查列表列表的函数是否包含 0 到 n 之间的所有整数元素,并且列表都是给定的长度?
- html - 从电子表格数据填充 HTML 表
- java - 为什么创建 OkHttpClient 的实例需要这么长时间?
- scala - 如何克服“可能存在不兼容...” SBT 警告?
- php - 重写规则问题
- python - “TypeError:描述符 'index' 需要一个 'list' 对象,但收到了一个 'str'”
- python - 在多个直方图中绘制大量数据
- dart - Flutter:将 ListTile 标记为在抽屉中选中
- reactjs - 将 setState 与打字稿一起使用