如何在Bot Framework与WebChat中借助会话记录续接历史对话
基于Bot Framework和WebChat实现历史对话续接功能需求与解决方案思路
现有配置
去年为某企业搭建了一款内部RAG型聊天机器人,采用Bot Framework开发、WebChat作为前端界面,已配置TranscriptLoggerMiddleware将对话活动记录到Blob存储,用于质量监控与审核。
核心需求
已实现用户查看历史对话列表的功能,当用户选中某一对话时触发新会话,新会话需满足:
- 从存储加载选中对话的全部活动记录
- 在新会话中重放/渲染这些记录,支持用户无缝接续之前的对话
已使用的代码组件
对话引用存储中间件
用于在表存储中保存对话引用的中间件代码:
const { ActivityTypes, TurnContext } = require('botbuilder'); const helper = require('../utils/helper'); class ConversationReferenceLoggerMiddleware { async onTurn(context, next) { if (context.activity.type === ActivityTypes.Message) { const conversationReference = TurnContext.getConversationReference(context.activity); try { await helper.saveConversationReference(conversationReference); } catch (error) { console.error('Error saving Conversation Reference:', error); } } await next(); } } module.exports = ConversationReferenceLoggerMiddleware;
对话历史存储中间件
已引入用于将对话历史存储到Blob存储的组件:
const { TranscriptLoggerMiddleware } = require('botbuilder');
已实现功能
- 可从存储获取所有对话ID及关联元数据
- 可根据选中对话ID获取对应的全部活动记录
- 用户选择历史会话时可触发新会话创建
待解决问题
目前缺少将选中历史对话的存储活动记录在新会话中重放的实现环节,多数现有示例仅聚焦于历史记录展示,未实现无缝续接的交互能力。
问题诉求
如何初始化新的WebChat会话并加载选中对话的历史记录,让用户能像在原对话中一样继续交互?需要方法、配置或实现思路方面的指导。
更新记录(11/14)
已找到可行的示例方案,将基于该示例项目进行开发。
内容的提问来源于stack exchange,提问作者Hessel
相关产品推荐
相关产品推荐

