如何使用 Node.js 将对话数据记录到 MS Bot Framework v4 中的本地存储中



我正在使用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包含用于处理传入活动的逻辑

最新更新