我试图让我的机器人代码更易于管理,并将一些属于不同文件的对话框放在一起。
这里有一个关于 javascript 的古老的类似问题。 https://github.com/Microsoft/BotBuilder/issues/1457
但我正在努力用 Typescript 做同样的事情。可能这更像是一个一般性的打字稿问题,因为我是一个初学者,并且仍然对不同的导入可能性感到有点困惑,但我没有找到任何能够应用于此的通用解决方案。
我尝试的是这样的:
//testdialog.ts
export default (bot) => {
bot.dialog("/Test", [
(session, args, next) => {
console.log("test".green);
session.send(`Test Dialog triggered`);
},
]).triggerAction({ matches: "test" });
}
然后在 app.ts 中导入它,类似于:
import testdialog = require("./testdialog")(bot);
但与像这样在 JS 中以 bot 作为参数的未命名导入相比,这似乎完全错误require('./cars.js')(bot);
在我看来,你可以利用builder.Library()
达到你的要求。
//testdialog.ts
import * as builder from 'botbuilder';
export const createLibrary = () => {
let lib = new builder.Library('test');
lib.dialog('test', (session) => {
session.send('this is test dialog');
}).triggerAction({
matches: /test/
});
return lib.clone();
}
//app.ts
import * as restify from 'restify';
import * as builder from 'botbuilder';
import * as testDialog from './testdialog';
let server = restify.createServer({});
server.listen(3978, function () {
console.log('%s listening to %s', server.name, server.url);
})
let connector = new builder.ChatConnector({});
server.post('/api/messages', connector.listen());
let bot = new builder.UniversalBot(connector);
bot.dialog('/', (session) => {
session.send('welcome');
})
bot.library(testDialog.createLibrary())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)