Botframework 获取用户的所有对话

Botframework 获取用户的所有对话,botframework,Botframework,(Microsoft Bot Framework的新功能)是否有一种方法可以查找用户的所有现有对话?我正在使用MicrosoftBot框架(SDK4)制作聊天机器人 要求:我想列出一个用户到现在为止的所有对话 此时,Bot框架无法从转录本或存储中接收所有过去的对话 但是,对于如何捕获用户对话,有几个选项,这样您就不必依赖于完整的对话记录 第一个选项是实现中间件,该中间件记录所需的活动或活动元素。你选择捕捉什么以及你选择用它做什么取决于你自己。在下面的代码中,我将在控制台中记录所有用户响应和所有不

(Microsoft Bot Framework的新功能)是否有一种方法可以查找用户的所有现有对话?我正在使用MicrosoftBot框架(SDK4)制作聊天机器人


要求:我想列出一个用户到现在为止的所有对话

此时,Bot框架无法从转录本或存储中接收所有过去的对话

但是,对于如何捕获用户对话,有几个选项,这样您就不必依赖于完整的对话记录

第一个选项是实现中间件,该中间件记录所需的活动或活动元素。你选择捕捉什么以及你选择用它做什么取决于你自己。在下面的代码中,我将在控制台中记录所有用户响应和所有不是键入事件或endOfConversation事件的bot活动。您将使用存储数据的自定义代码替换console.log()调用。请记住,您在这里所做的任何调用都会发生在每个用户/bot活动上。如果您正在寻找API调用,考虑将数据存储在对象中,并在返回“EndoFalk”(或类似的东西)时保存它。
适配器。使用(异步(turnContext,next)=>{
//turnContext.(异步(ctx、活动、下一步)=>{
//activities.filter(a=>a.type=='message').forEach(a=>console.log('From user:',a));
// });
const userActivity=turnContext.activity;
if(userActivity.from.role==='user'&&turnContext.activity.text.length>0){
log('From user:',userActivity);
}
turnContext.onSendActivities(异步(sendContext、activities、nextSend)=>{
等待下一次发现();
activities.filter(a=>a.type!=='typing'&&a.type!=='endOfConversation').forEach(a=>console.log('From bot:',a));
});
等待下一个();
});
第二个选项是在Botbuilder samples repo中的/samples之后对bot进行建模。您可以修改customLogger.js文件以满足您的需要,并将其输出到商店


希望有帮助

对话在ABS上最多只能存储24小时。如果您想访问更长时间的对话,则需要实现一个存储选项(CosmosDb、blob等)来捕获和保留该数据。你可以在这里阅读文档:。或者,你的意思是你有数据,但不确定使用什么代码来访问它?@StevenKanberg:我已经将成绩单存储在blobstore中。但是我不确定bot框架是否有一个内置的方法可以获取用户参与的所有对话。嗨@Steven Kanberg,我现在已经使用了选项2并将其存储在blob存储中,但是检索速度非常慢,而且顺序不正确(它首先提供最早的文本,而不是最新的文本),NBRLA,考虑使用其他BLB存储,因为有迹象表明(BooFrand)没有支持BoB存储。在这种环境中,它不能很好地扩展,也不能过度配置。相反,考虑COSMODB(一个昂贵的选项,但它是支持的)或实现自己的方法。有一个使用Mongo演示的v3用户示例。那里应该有足够的信息供您实现v4。谢谢@Steven Kanberg,听起来很公平。@nbirla如果您觉得我的答案足够,请“接受”它,这样我就可以从我的支持跟踪程序中清除此问题。这样做也将有利于其他有类似问题的人。如果没有,让我知道我还能提供什么帮助!