node.js - 如何在不同的文件中拆分 Bot Framework 对话框

标签 node.js typescript botframework

我正在尝试使我的机器人代码更易于管理,并将一些属于不同文件的对话框放在一起。

There is an old, similar question here for javascript.

但我正在努力对 Typescript 做同样的事情。可能这更像是一个一般性的 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())

关于node.js - 如何在不同的文件中拆分 Bot Framework 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49212414/

相关文章:

JavaScript (node.js) : unit testing code that fires multiple events

node.js - 没有创建 bower_modules 文件夹

javascript - 对 JavaScript 对象数组进行排序, typescript 错误

c# - 如何使用提示对 Microsoft 机器人对话框进行单元测试

javascript - 与Node.js的长连接,如何减少内存使用,防止内存泄漏?还与 V8 和 webkit-devtools 相关

javascript - 当你链式属性(property)时,你会调用它吗?

javascript - 有什么办法可以为自己指定类型吗?或者解决方法 "Types of property are incompatible."

angular - 如何应用文本装饰:line thorough on clicking a checkbox in angular

.net-core - 如何在 Bot Framework 自适应卡中使用特殊字符

botframework - 聊天对话的长期历史记录(恢复对话)