C# 如何在机器人上显示保存的机器人转录本?如何为用户检索正确的成绩单?

C# 如何在机器人上显示保存的机器人转录本?如何为用户检索正确的成绩单?,c#,.net,botframework,bots,C#,.net,Botframework,Bots,我正在尝试实现Blob转录本存储()。我能够实现并看到容器下Azure blob存储中存储的成绩单作为json文件。现在我面临的问题是如何正确地显示它们。如果我使用SendActivityasync,那么它会显示bot和用户消息,就像bot正在键入一样(在bot的左侧) 有没有办法一次就把成绩单扔掉?只是为了显示整个对话,还是应该一个接一个地进行?是否有允许此操作的功能 由于这些记录是使用会话ID保存的,因此如何使用此示例仅获取正在使用bot的用户,而不是所有用户?如果每个会话的会话ID都是新

我正在尝试实现Blob转录本存储()。我能够实现并看到容器下Azure blob存储中存储的成绩单作为json文件。现在我面临的问题是如何正确地显示它们。如果我使用SendActivityasync,那么它会显示bot和用户消息,就像bot正在键入一样(在bot的左侧)

  • 有没有办法一次就把成绩单扔掉?只是为了显示整个对话,还是应该一个接一个地进行?是否有允许此操作的功能

  • 由于这些记录是使用会话ID保存的,因此如何使用此示例仅获取正在使用bot的用户,而不是所有用户?如果每个会话的会话ID都是新的,并且根据示例使用“Guid.NewGuid()”生成用户ID,则每次都是随机的。是否保存这些文件以跟踪用户?有没有样品可以看到整个过程

  • 我已经看到很多提到这一点的示例被用于调试。是否有人实现了这一点?如果有,您将遵循哪些示例

    谢谢

    回答了。最初的问题已经很老了,但是在链接的评论中有一个更新的答案

    基本上,您需要:

  • 从存储中加载所有活动(可能为此使用)
  • 将活动传递给
    createStore()
    方法
  • 将存储传递到
    renderWebChat()
    方法中。例如:
  • //这只是一个例子。您将希望使用
    //存储中的一系列活动。
    常数历史=[
    {
    键入:“消息”,
    id:“*******************”,
    时间戳:“2020-10-30T20:45:52.7120529Z”,
    channelId:“网络帽”,
    发件人:{
    id:“*******************”,
    名称:“****************”,
    角色:“机器人”,
    },
    对话:{
    id:“*******************”,
    },
    地点:“恩我们”,
    文本:“这是以前的消息”,
    输入权限:“接受输入”,
    附件:[
    ],
    实体:[
    ],
    答复内容:“*******************”,
    }
    ]
    [...]
    const store=window.WebChat.createStore({activities:history},({dispatch})=>next=>action=>{
    返回下一步(操作);
    });
    window.WebChat.renderWebChat({
    directLine:window.WebChat.createDirectLine({secret:token}),
    商店
    }, 
    document.getElementById('webchat');
    [...]
    
    您所说的“是否有一种方法可以一次性转储成绩单?”是什么意思?您希望对话的显示方式如何?与用户使用机器人时的显示方式相同。例如,如我所说,如果我从Azure Blob存储中提取数据,我就会进入并使用SendActivityAsync发送这些活动。这将弹出Bot端(聊天左侧)的所有查询。但我想从左侧发送所有bot消息,从右侧发送用户消息。希望这是有意义的。同样的方法,然后你会与它正常工作。我使用dump的原因是所有活动都将单独保存,所以它应该一个接一个地显示吗?不幸的是,无法让bot发送一条消息,就好像它来自用户一样。不过,如果您使用的是WebChat,谢谢,我实际上已经实现了这一点,而且效果非常好。我试图实现长达15到30天的聊天记录。我知道这会持续一天,不用于历史记录,但如果有人重新加载页面,则用于保存会话。所以现在没办法了?在继续下一件事之前确认一下。也许dump的措辞是错误的。这只是一种说法,如果我把成绩单保存15天,有没有办法让它在bot上弹出,而不是一个接一个地发送,如果这样做有意义的话。非常感谢你的回答,它正在起作用。第二点是我想问的后续问题。如果会话id每次都是新的,那么您是在跟踪它还是将它存储在用户那里,以便根据日期提取正确的会话?再次感谢您,这真的很有帮助。@SharatGangadharan会话ID的处理因客户端而异,但对于WebChat,每次将密钥交换为令牌时,会话ID都会发生变化,如果将密钥传递到
    createDirectLine()
    ,则每次页面刷新时都会发生这种变化。如果你想拉所有用户的对话,你可能会考虑不同地存储他们的数据,也许是一个映射,其中用户ID是键,而值是一个活动数组。然而,我要求的原因是使用azure blob成绩单自动生成的现有基础结构。它将日志保存在/{channel}/coversationid/activityid下。所以我想存储会话ID,就像你提到的那样,使用azure存储blob API。我需要会话ID从那里提取日志。我正在使用令牌示例生成Guid.NewGuid()的userid,这也意味着userid将不同。这是错误的吗?您是否建议将具有唯一值的活动本身单独存储为一个映射,而不是从默认日志站点访问活动?如果您试图执行现有infra设置的操作,您只能依靠单独使用现有的基础结构,而这不是。我要么1)以不同的方式存储数据,要么2)以相同的方式存储数据,然后让机器人解析数据以执行您想要的操作。各有利弊。