如何将 Bot Framework 对话框拆分到不同的文件中

2024-03-02

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

这里有一个关于 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(使用前将#替换为@)

如何将 Bot Framework 对话框拆分到不同的文件中 的相关文章

随机推荐

  • 需要捕获 MS Word 中的当前滚动位置(不是光标位置)

    我需要获取Word文档中当前的滚动位置 我认为这是正确的术语 即我的虚拟镜头指向文档的位置 而不是光标所在的位置 以便当我运行宏时我可以返回到最后的那个位置 我编写了一个宏 从当前光标位置向后搜索专利申请零件号 将候选下一个可用零件号确定为
  • Bootstrap 3表单和表单最后一行背景颜色

    在我们的表格中 我们尝试 向表单添加背景颜色并 表单最后一行的背景颜色 通常包含我们的按钮 问题是最后一行的背景颜色未正确对齐 您将看到最后一行的大小超出了表单宽度 请参见 http jsfiddle net 4ThKn 2 http js
  • 如何在android中压缩文件

    我需要以编程方式压缩 txt 文件 我已经在 files 创建了文本文件directory context getFilesDirectory 我想压缩文本文件并将压缩文件添加到 Intent 对象中 请给我一段代码来说明如何在androi
  • 如何解决 iPhone 中的“命令 /bin/sh 失败,退出代码 1”问题

    我在我的应用程序中使用了可可静态库 当我编译我的库时 出现以下错误 Shell Script invocation error can t open input file Users sijuthomas Library Developer
  • 对 CORS 的缓存效果:请求的资源上不存在“Access-Control-Allow-Origin”标头

    这个问题的简短版本是我们看到典型的 CORS 错误 x has been blocked by CORS policy No Access Control Allow Origin header is present on the requ
  • 如何在系统启动时启动 Flutter 应用?

    我正在制作一个 Flutter 应用程序 我想让它在系统启动时自动启动 到目前为止 我已经尝试过自动启动 https pub dev packages autostart and flutter boot 启动 https github c
  • EditText 输入过滤器导致重复字母

    我一直像这样限制对我的编辑文本的输入 InputFilter filter new InputFilter public CharSequence filter CharSequence source int start int end S
  • Hibernate 代理上的 Bean 验证失败?预期行为?

    我在用着 hibernate core 4 0 1 Final hibernate validator 4 2 0 Final 我有一个延迟加载实体 NotNull OneToOne fetch FetchType LAZY optiona
  • 处理 EditText 内可绘制对象上的单击事件

    我在文本右侧添加了一个图像EditText小部件 使用以下 XML
  • 如何创建一个不由轮询驱动的聊天服务器?

    我创建了一个由客户端轮询驱动的简单聊天服务器 客户端每隔几秒发送一次数据请求 并收到任何新消息以及有关其对等方是否仍处于连接状态的信息 由于客户端在移动平台 iPhone 上运行 我一直在寻找摆脱轮询的方法 因为轮询会很快耗尽电池 我读到可
  • 使用 Indy 测量网络流量

    我使用 TIdTCPCmdServer 来处理与客户端应用程序的所有通信 我希望我的服务器记录所有类型的内容 包括网络流量 有没有简单或聪明的方法来查看 TCPCmdServer 实际接收和发送了多少字节 我只能想到这样的代码 ASende
  • 如何让 JLabels 从下一行开始

    JPanel pMeasure new JPanel JLabel economy new JLabel Economy JLabel regularity new JLabel Regularity pMeasure add econom
  • 如何在docker容器崩溃时自动监控并重启?

    我目前正在运行两个虚拟服务器官方鬼魂形象 https registry hub docker com ghost and nginx proxy图片 这是我的构建 docker run d p 86 2368 name home e VIR
  • 碰撞解决:二次探测与单独链接

    好的 我一直在对哈希表和不同的冲突解决问题进行一些实验 我试图找出哪个更有效地进行查找 即使用单独的链接或二次探测来解决冲突的哈希表 我的结果表明 即使对于较小的负载因子 例如 0 4 或 0 2 单独链接也比二次探测更快 是这种情况还是我
  • 支持Android材质设计

    我们正在重新设计我们的 Android 应用程序 考虑到即将推出的 Android L 平台及其材质风格 出现了一个问题 支持旧设备的方式是什么 这种新设计在 4 x 设备上可以接受吗 根据Android Material Design 兼
  • iOS SwiftUI 搜索栏和 REST-API

    我正在尝试使用 SwiftUI 并希望使用搜索字符串从我的 REST API 获取更新 但是 我现在不确定如何将这两个组件组合在一起 我希望你有一个想法 这是我的代码 struct ContentView View State privat
  • 如何配置 Ruby Mechanize 代理以通过 Charles Web 代理工作?

    我正在使用 Ruby Mechanize 编写一个 自动填写表格 应用程序 几乎可以用了 我可以用精彩Charles http www charlesproxy com Web 代理来查看服务器和我的 Firefox 浏览器之间的交换 现在
  • 语言环境 JS 的货币代码

    在这里幽默一下 但我有一个简单的任务 即输入数字并将其格式化为货币代码 IE var value 1000 value toLocaleString en AU style currency currency AUD minimumFrac
  • 在heroku python应用程序上使用什么端口

    所以我创建了 2 个 iOS 应用程序 一个发送坐标 一个接收坐标 和一个 python 服务器 其中一个应用程序将 GPS 坐标发送到托管在 heroku 上的 python 服务器 然后 服务器会将收到的 GPS 坐标发送到其他 iOS
  • 如何将 Bot Framework 对话框拆分到不同的文件中

    我试图让我的机器人代码更易于管理 并将一些属于不同文件的对话框放在一起 这里有一个关于 javascript 的古老的类似问题 https github com Microsoft BotBuilder issues 1457 但我正在努力