企业用企微、钉钉这类 IM 做客户沟通已是常态,但聊天记录散落在员工私人账号里,公司既看不见也留不住。
会话存档就是平台提供的一套合规留存机制。
本文从技术角度拆开它:到底存了什么、怎么存、和自己写监控软件有什么区别。
一、会话存档是什么
会话存档(Conversation Archiving)是 IM 平台面向企业开放的合规接口能力。
企业开通后,员工与客户、同事之间的单聊、群聊文本、图片、文件、语音等消息,会按平台规则留存下来,供企业做审计、风控和客诉取证。
一个关键点要先说清:
留存动作由平台服务端完成,企业拿到的是加密后的消息数据,不是明文。
二、它到底存了什么
以企微会话存档为例,留存内容大致包括:
- 文本消息的原文
- 图片、文件、语音、链接的元数据与可下载地址
- 撤回、@、入群退群这类动作事件
- 消息的发送方、接收方、时间戳
它不涉及员工私人微信(非企业账号)的聊天,也不碰个人生活号的内容。
换句话说,存档覆盖的是"企业自己名下的沟通",不是员工的全部社交。
三、技术上怎么落库
平台只负责把消息"吐"出来,而且吐的是密文。
企业必须自己完成"拉取、解密、解析、存储"的闭环,否则开了存档也查不到,这也是很多公司踩过的坑。
# 会话存档消息落库的最小闭环(示意) import requests from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 def fetch_and_store(corp_id, secret, private_key): # 1. 向平台拉取密文消息 msgs = pull_messages(corp_id, secret) # 返回加密的 chat blob for blob in msgs: # 2. 用企业私钥做 RSA 解密 cipher = PKCS1_v1_5.new(RSA.import_key(private_key)) plaintext = cipher.decrypt(blob, None) # 3. 按平台定义的 protobuf 结构解析 record = parse_protobuf(plaintext) # 4. 落库,供后续检索与取证 save_to_db(record) # 存 sender / receiver / time / type / content return len(msgs)
明文落库之后,这些聊天就成了企业自己的数据资产。
下一步要按最小化原则管权限,别让谁都能查全量记录。
四、和终端侧监控的区别
| 维度 | 服务端会话存档 | 终端侧监控 |
| 数据来源 | 平台服务端 | 员工电脑本地 |
| 覆盖范围 | 仅企业账号 | 含私人工具 |
| 合规风险 | 平台授权加员工知情,较低 | 易踩隐私红线 |
| 落地成本 | 需自建解密落库 | 装 agent 即可 |
两者不是替代关系:存档覆盖不到私人微信,终端侧能补,但后者的法律边界更敏感,后面会单独讲。
五、留存之后的风险点
解密落库只是开始,后面还有三件事容易翻车。
私钥保管。
解密用的是企业私钥,私钥一旦泄露,历史存档全裸奔。
私钥要进加密机或密钥管理服务,别放在应用服务器明文。
权限最小化。
明文聊天落库后,谁都能查就等同于没保密。
查询要走审批,敏感记录加访问审计,离职人员权限及时回收。
留存期限。
不是存越久越好,留存过久反而放大泄露面,也增加合规压力。
按业务需要定周期,到期自动清理。
六、什么时候该上会话存档
会话存档不是所有公司都该上。
一个判断参考:
如果客户主要走企微、钉钉这类企业 IM,且客诉取证、飞单核查是高频需求,那它性价比很高——一次接入,全量沟通自动留痕。
反过来,如果客户沟通大量发生在员工私人微信、电话里,存档覆盖不到,上了也只是心理安慰,真正要补的是终端侧留痕或客户归属系统。
还有个容易忽略的:
存档按企业账号维度开通,员工离职后,他名下的历史会话仍属于企业资产,可用于交接与复盘,但查询权限要回收,别留成离职人员还能翻全量记录的口子。
七、小结
会话存档本质是平台把企业自己的沟通数据,合规地还给你,但还的是密文,解密落库得自己干。
它解决的是"看得见、留得住",不是"什么都能看"。
真要查私人账号里的往来,得走另一条法律边界更紧的路。
责编:安企神小赵