企业微信会话归档 结构设计与实现

前言: 本司接受某会监管,每年都会进行场地检查。
销售售卖产品的整个流程,聊天语音等要求全部留痕,检查时提供进行查阅。
3年前都是销售都是通过电话销售,后面过渡为企业微信进行销售售卖。

企业微信提供 会话归档 功能,帮助企业进行消息留痕

接口详情
获取会话内容&获取媒体文件

先放出整体流程

共3个服务,这样设计的好处是,三个服务完全分离,处理会话内容处理媒体文件 可服务多开,提高消息即时性

1. 获取会话内容服务

因为消息有很多,所以不考虑接入回调,采用循环拉取接口,拉取消息后,直接放入消息队列 MQ 中

2. 处理消息服务

接入MQ,消费消息 包括解密消息,入库 ES, 消息敏感敏感词通知,提取文件消息入文件的消息队列 MQ
1. 解密入库es一条mq消息中最多1000条会话内容消息,处理后插入 ES
2. 提取敏感词通知3. 提取文件类消息,得到 Md5Sum 值,生产媒体件 MQ

3. 处理媒体文件服务

接入 MQ,消费消息, 包括文件下载,上传对象存储, 入库 ES
媒体文件消息处理是比较复杂的一个模块功能,要考虑到以下几点:
1.文件去重以及服务多开时,文件下载重复问题每天的营销素材,或是表情GIF 图片,很多重复的文件,不能把所有文件全部下载,那样太占存储空间,微信提供 MD5Sum 值,可进行去重处理还有服务多开时,两个服务可能同时会得到相同的 MD5Sum 值,导致大家一起下载和上传,导致的资源浪费解决:采用 redis 分步式锁,setnx 命令,EXPIRE为24小时。 这样能够保证所有服务同一时间不会处理相同的文件sys.Redis().Do("SET", rkMidTagLock.Key, 1, "NX", "EX", expInt)可是这样又会导致一个新的问题: 服务重启时,文件被锁,虽然 MQ 消费到此 MD5Sum 值,但是发现文件已被抢占,导致文件漏下(看2)2.服务重启时,未处理完成的文件如何让它下次再次下载解决:服务关闭前走优雅关闭,捕捉关闭信号,清除所有分布锁,下次文件下载时,先抢占锁,然后去 ES 中查询是否已经被下载,如果不存在,则进行后续处理3.微信未给文件提供 MD5Sum 值有些时候企业微信并未提供文件 MD5Sum 值, 导致文件在对象存储中被覆盖解决:未提供 MD5Sum 值时,自己随机一个值,不过这样无法进行文件去重。4.大文件单线程下载当文件过大时,微信提供的文件单线程下载接口已经不能满足需求,表现为:文件过大时,分片下载时间过长,消息实时度过低,同时也会导致MQ消费超时解决:分析接口请求参数,自己算出每个文件的间隔区间,进行多线程请求同时采用 channel 进行最大下载数量限制,否则机器撑不住会崩具体代码逻辑可见,上一篇文章

企业微信会话归档接入 结构设计相关推荐

  1. 企业微信会话存档功能的推出背景,版本,部署方式

    会话存档推出的背景 会话存档最开始推出的使用对象为金融企业,金融从业人员的工作沟通合规监管日趋严格,2018年1月,"一行三会"联合发布<关于规范债券市场参与者债券交易业务的 ...

  2. 企业微信会话存档功能开启

    企业微信会话存档功能是企业微信所开发的,可以获取存档员工的工作聊天记录,包括文字.图片.语音.撤回消息等内容,用来保障客户服务质量.提高内部协作效率和监管合规. 企业如果想使用会话存档功能,首先需要管 ...

  3. 服务器微信接口返回乱码,企业微信会话内容存档调用DecryptData返回中文出现乱码...

    企业微信会话内容存档调用DecryptData返回中文出现乱码 问题类型 API/组件名称 终端类型 微信版本 基础库版本 Bug 企业微信会话存档sdk 工具 无 无 我用c#开发会话存档功能,调用 ...

  4. python对接企业微信_Python对接企业微信会话内容存档功能的实践

    背景 企业微信会话内容存档,是一项面对金融行业的开放的监管功能,其他行业可以找企业微信官方服务商[1]向腾讯申请审批开通.会话存档的推出是企业微信为了让企业可以了解员工与客户的互动情况,也为了避免员工 ...

  5. 企业微信会话存档解密

    在企业微信会话存档解密中,腾讯官方文档是这样说明的: encrypt_random_key内容解密说明: encrypt_random_key是使用企业在管理端填写的公钥(使用模值为2048bit的秘 ...

  6. Web端播放 .amr音频文件,企业微信会话存档语音文件

    前言:amr格式是微信上的语音格式,比如企业微信会话存档语音文件保存时就会遇到,由于html标签都不支持amr格式的语音文件,因此采用如下开源项目: https://github.com/BenzLe ...

  7. 企业微信会话存档-一个文件下载,吹牛2小时完成,结果写了2星期?

    需求: 获取聊天记录里产生的文件,下载并保存,存储到文件服务器(用oss表示)中 过程: 看起来很简单,直接干: 初步思路: 请求企业微信文件下载接口,先下载到本地 从本地读取文件,上传到oss 看起 ...

  8. 企业微信会话内容存档功能说明

    为保障客户服务质量.提高内部协作效率和监管合规等原因,企业微信提供会话内容存档功能. 会话内容存档是什么? 企业在遇到以下情况时,是不是非常想获取员工与客户的聊天记录: 考察员工和客户的沟通过程是否有 ...

  9. Java 企业微信会话内容(聊天记录)存档功能实现,并获取媒体文件

    注:本文档是在Linux环境下进行测试的. 今天终于有空来聊聊企业微信"会话内容存档",虽然官方有给出开发文档,但确实是有点晦涩难懂啊,对于我这种菜鸟来说. 在网上翻阅许多教程,也 ...

最新文章

  1. 研究一下,如何实现一个文件系统
  2. ANDROID_NDK的path,如何在Android Studio中设置NDK_PROJECT_PATH
  3. Atheros AR9485 ubuntu 10.04 驱动安装及networking disable问题解决
  4. Script:列出失效索引或索引分区
  5. Oracle ASM 进程之ASMB
  6. 【discuz x3】源代码中的sql调用
  7. iphone查看删除的短信_苹果删除的短信
  8. pq 中m函数判断嵌套_压轴题的热点,二次函数与几何的结合,谁会谁吃香
  9. ​百度网盘下线SVIP免第三方广告特权;小米回应手机异常发热;Windows 11新应用商店将于6月24日亮相|极客头条...
  10. 「管理数学基础」3.4 凸分析:最优性的充要条件、无约束极小化问题、一般非线性规划问题
  11. 论网络工程中,系统开发设计可行性研究及市面产品对比!
  12. 3dmax塌陷在哪里?怎么用?
  13. bin文件转化为csv文件
  14. 51单片机码表c语言编程,用AT89S51单片机制作的多功能自行车速度里程表
  15. pwd python 安装 模块_python模块学习之OS、PWD
  16. Webpack 打包commonjs 和esmodule 模块的产物对比
  17. hdmi接口线_HDMI接口不可以传输音频吗?带你快速了解HDMI接口
  18. Games101结合Unity Shader入门精要学习笔记(个人向)
  19. 无线定位技术TDOA的综合论述(一)
  20. php mod rewrite.so,开启Apache mod_rewrite模块完全解答

热门文章

  1. 报错:No package ‘openssl‘ found
  2. #python 用户键入自己的身高体重,程序判断是否符合完美的身材
  3. uni-app结合原生混合开发
  4. linux 命令:killall 详解
  5. xtrabackup备份mysql_xtrabackup备份和恢复MySQL
  6. 制作数据分析表格需要注意的制表规范
  7. 华山全敏还是全劲_​楚留香手游华山加点攻略 技能连招推荐[多图]
  8. php n r x20,vivo X20 到底值不值得买 优缺点分析
  9. 单细胞论文记录(part6)--SpaGE: Spatial Gene Enhancement using scRNA-seq
  10. Python, PyCharm: PyCharm调试无法停在错误位置