node.js - 如何使用 Node.js 在 MS Bot Framework v4 中将对话数据记录到本地存储中
问题描述
我正在使用 Microsoft bot 开发框架,使用其 v4 node.js sdk 并在模拟器中对其进行测试。我一直在寻找一种将对话的所有消息保存在本地机器/存储本身中的方法。我设置persistConversationData
为真。我对 Bot 框架完全陌生,请帮助我存储对话数据的代码部分
解决方案
这里有两个部分,具体取决于您是要严格测试还是要在常规使用期间记录。
如果您使用 v4 模拟器,您将看到一个“将脚本另存为”按钮,该按钮允许您保存当前对话的副本以供以后在模拟器中使用和重播。
如果您想创建自己的日志记录中间件,则有一个名为的内置类TranscriptLoggerMiddleware
为了设置它,您可以执行以下操作(ConsoleTranscriptLogger
在这种情况下使用内置的完成子类,但如果需要,您可以实现内置接口TranscriptLogger
以创建自定义版本以保存副本)
通过以下方式在您的 require 语句中导入中间件类:
const { BotFrameworkAdapter, MemoryStorage, ConversationState, TranscriptLoggerMiddleware, ConsoleTranscriptLogger } = require('botbuilder');
然后初始化该记录器类的一个实例:
const logger = new TranscriptLoggerMiddleware(new ConsoleTranscriptLogger());
最后在整个中间件堆栈中包含该中间件:
// Create conversation state with in-memory storage provider.
const conversationState = new ConversationState(memoryStorage);
// Create the main dialog.
const myBot = new MyBot(conversationState);
adapter.use(logger); // initialize middleware after your usual setup steps
在这种情况下,完成这些步骤后ConsoleTranscriptLogger
会将收到的数据打印到您的控制台。包含保存的自定义日志的完整实现涉及更多,但可以通过创建一个实现TranscriptLogger
并简单保存状态而不是输出到控制台的类来完成,如ConsoleTranscriptLogger
自定义日志记录 在这个 repo中,我也设置了自定义日志记录。这需要添加两个文件。在这种情况下
CustomLogger.d.ts
包含实现TranscriptLogger
接口的导入和设置
CustomLogger.js
包含处理传入活动的逻辑
推荐阅读
- odoo - 呈现模板 web.frontend_layout 时出错
- slack-api - Slack API 未列出新频道
- node.js - SyntaxError:删除所有 Nodejs 后出现意外的令牌“导出”
- sorting - 如何在 Ionic 6 中对无限滚动中的产品列表进行排序
- reactjs - 强制组件重新渲染
- python - 如何在 Windows x64 上安装 Pytorch 1.1 版?
- java - Android 网络问题 - Udacity Android 网络最终项目(使用 Google Book API 和 LoadManager/AsyncTaskLoader)
- java - 如何使用 JasperReports 在 Abstract Book 中正确编译目录?
- javascript - Nodejs / Javascript 输入 CTRL+C console.log
- windows - 如何在 docker 下调整 MongoDB 内存管理?