如何将 botkit+ 和 botbuilder-adapter-web 与自定义 Express 服务器一起使用

时间:2021-02-11 22:43:47

标签: express web botkit-4

有没有人能够将 botkit 4+ 与 botbuilder-adapter-web 和自定义 Express 实例组合在一起?如果是这样,你介意分享一些你的代码吗?特别是,如果您从 botkit-starter-web 升级到这个新堆栈,我会非常有兴趣了解您如何在不破坏代码的情况下将这些组件组合在一起。 当我尝试创建我的自定义 Express 实例时(以类似于在 botkit-starter-web 中完成的方式),我无法将此实例传递给 botkit 构造函数,如下所示:

const controller = new Botkit({
  webhook_uri: '/api/messages',
  adapter: adapter, // this is an instance of botbuilder-adapter-web
  webserver: webserver, // this is my custom Express instance
  storage
});

没有得到这样的错误:

TypeError: One of the "port", "server", or "noServer" options must be specified
at new WebSocketServer ( ..\testing-botkit4\node_modules\ws\lib\websocket-server.js:60:13)
at WebAdapter.createSocketServer (..\testing-botkit4\node_modules\botbuilder-adapter-web\lib\web_adapter.js:85:20)

这是我实际上预期的,因为在初始化时,Web 适配器需要在其对 WebAdapter.createSocketServer 的调用中使用 botkit.http 值 - 一个 http 服务器-,并且在我传入时尚未初始化 botkit 的此属性一个自定义 Express 实例(通过检查 botkit 4+ 源代码来解决这个问题)。那么,如何在 botkit 控制器中网络适配器的 init 方法被调用之前初始化这个“服务器”属性?

我也很好奇为什么 botkit 文档不鼓励用户使用此类自定义网络服务器(“注意:如果出于某种原因绝对必须,请仅使用您自己的 Express。否则,请使用 controller.webserver”是引用: https://botkit.ai/docs/v4/reference/core.html(botkitconfiguration 部分)。如果您明白为什么会这样,请在此处分享。谢谢!

0 个答案:

没有答案
相关问题