如何迁移数据到野火

我们遇到一个常见的咨询就是如何把现有系统迁移到野火,这里就简单讲一下。

首先需要能够现有系统中获取到所有的或者是必须的数据,可以是直接读库,也可以是API来读取数据;当拿到数据后,需要转成野火的格式;然后调用野火的接口导入到数据库中。

常见的数据包括:

  1. 用户信息
  2. 机器人账户
  3. 用户关系(好友/黑名单/备注等)
  4. 群组
  5. 消息
  6. 公众号及订阅关系
  7. 常见设置(置顶/静音等)
  8. 敏感词

以上野火都提供了对应的接口,其中消息有个导入消息的接口,这个只有近期专业版IM服务才加上的。社区版IM服务不支持消息导入,其他都支持。

有个问题是用户ID的映射,有可能是客户有自己的用户/业务系统,但聊天软件是一套独立的系统,拥有完全不同ID关系。为了方便,建议使用自己的用户id,这样当导入所有的数据时,都要做一下id转换。

另外就是数据转换,用户消息/用户关系/群组等都比较简单,字段一一对应就可以了。但消息是比较麻烦的,需要把现有所有类型的消息找出来,再转成野火对应的消息。如果是java语言,可以很方便的用野火的java sdk。

最后就是数据安全,一个是导入要在正式使用之前,导入之后要进行充分测试,另外一个要继续保留数据源,保留半年或者一年。

1. 常见问题:

  1. 如何处理未读? 答: 当导入后,所有消息都变成了未读。为了给用户更好的体验,可以把所有消息都变成已读。首先要理解野火未读是如何同步的,每个用户的每个会话都有一个最后阅读时间保存到t_user_setting表的。这个表中有属性_uid,表示是那个用户的设置;_scope表示数据的类型,已读记录的scope值为7; _key是关键字,在同步未读的设置中_key是会话的拼接,格式是type_line_target;最后_value是时间戳的字符串。比如要设置用户A账号种的与B的单聊最后阅读时间为T,那么这个表的这一行的值就是A,7,0_0_B,T。可以直接写库,也可以调用接口写。这样当客户端同步下来后,就会把与B的单聊会好时间大于T的所有消息都改成已读。
2018 © wildfirechat.net 京ICP备18060403号-1 all right reserved,powered by Gitbook该文件修订时间: 2026-05-25 12:50:06

results matching ""

    No results matching ""