我正在使用Microsoft机器人开发框架,使用其v4节点.js sdk并在模拟器中对其进行测试。我一直在寻找一种将对话的所有消息保存在本地机器/存储本身中的方法。我把persistConversationData
设置为真。我是机器人框架的新手,请帮助我存储对话数据的代码部分
这里有两部分,具体取决于您是严格仅测试还是想在常规使用期间记录。
如果使用 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
自定义日志记录在此存储库中,我还设置了自定义日志记录。这需要添加两个文件。 在这种情况下
CustomLogger.d.ts
包含用于实现TranscriptLogger
接口的导入和设置
CustomLogger.js
包含用于处理传入活动的逻辑