MS Bot Framework - 网络聊天小部件保存聊天记录

时间:2017-09-12 11:27:02

标签: botframework

我在网络聊天和网络聊天中使用Microsoft Bot Framework。 FB Messenger平台。

我想知道是否有任何简单的方法来保存并向用户显示他的聊天记录,即使页面已重新加载,或者用户离开页面并在一段时间后回来..
因为现在,使用IFRAME方法,每次重新加载页面时,它都会与机器人开启新的会话..

我想到在我的后端创建新的api以获取用户聊天记录,但这听起来不是明智之举..

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

Bot Framework还为我们提供了一个名为Bot Framework State service的强大服务,使您的机器人能够存储和检索与特定对话环境中的用户,对话或特定用户相关联的状态数据。

所以我们使用的最简单的解决方案是这样的:

  1. Save用户和bot在用户的BotData
  2. 中发送的任何消息
  3. 当用户加入或询问历史记录时,来自该网站的免费extract消息 BotData并通过添加用户名和。的方式发回给用户 每个消息顶部的机器人(为了更容易区分机器人的消息和用户的消息)

答案 1 :(得分:0)

我们将聊天记录保留为directline JS功能。

每个对话都有自己的ID。坚持对话Id。将持久对话ID传递给聊天组件初始化,聊天初始化为历史记录。

Bot连接初始化。 getPersistedConversationId从Cookie中读取conversationId

const botConnection = new BotChat.DirectLine({
        secret: "directline secret",
        webSocket: false,
        conversationId: getPersistedConversationId()
    });

使用连接初始化网络聊天组件

BotChat.App({
        botConnection: botConnection,
        user: { id: "userid", name: "username",},
    },
    window.document.getElementById('chat'));

订阅连接状态更改。打开连接时 - 保持会话ID。 saveConversationId将会话ID保存到Cookie中

botConnection.connectionStatus$
    .subscribe(function (connectionStatus){
        switch(connectionStatus){
            case 2:
                saveConversationId(botConnection.conversationId);
        }
    });