温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
本次要分享的是得物自言客服I'M系统的技术实践。植入客服I'M的核心业务其实就是在线沟通。客服I'M的好处是使得客服与用户通过实时沟通的方式,可以在最短的时间内帮助用户解决问题。为了快速支撑公司业务发展需求,我们客服I'M在发展初期是基于第三方的原MSDK进行二次开发而来,虽然提升了项目进展,但同时也埋下了问题定位困难、特殊功能实现成本高等隐患。本篇文章将基于工程实践,分享我们从0~1自研一套客服YM系统时在各种关键技术点上的设计思路和实践方法。业务场景客服与用户在聊天的过程中,直观上就是客服在输入文案,然后通过网络发送给用户。但是I'M聊天SDK该如何设计才能使客服在发送消息过程中感知不到卡顿,这点是非常关键的。要避免卡顿,就要设计合理的发送策略以及避免大量JS脚本执行。图中可以清晰的看出一条消息发送和接收的完整流程链路。如果I'M的SDK设计不合理,发送消息和接收消息流程出现了卡顿,将直接影响用户的体验。
01:15
二资源框架架构概览我们整体的技术改造主要是两个方面,一、对消息链路的抽象改造,主要是消息数据存储和消息排序的重构,二、业务接入侧的抽象改造,主要是将业务逻辑和SDK源码进行解耦,做到代码分层更加的清晰。三、消息链路发布订阅实现在I'MSDK资研开发过程中,如何解耦框架代码和业务代码,做到灵活的消息监听前期调研之后使用了RXJSSDK底层在接收到数据后需要同步到业务侧,之前的做法是通过监听方式实现,这种方式不具备取消订阅的能力,维护成本相对较高。而使用RXJS可以清晰的梳理出数据流下通过发布订阅的方式实现数据的通信。四、消息框架的分层结构概览在我们整个自研的I'M消息通信框架中,主要结构分成三层,网络层、数据链路层、应用层我消息框架的分层实现。数据链路层。数据链路层是I'MSDK的核心层,主要涉及到用户信息、聊天消息、数据池等等。我们来一步步对每个模块进行分析,首先梳理一下客服在登录到用户接线发送消息。
02:37
接收消息的全过程6、发送消息链路分析针对客服发送消息,我们首先要站在客服角度考虑消息是否已发出去,优先展示的聊天页面,而不是等网关给了回复后再展示到聊天页面。根据以往经验来看,只要回车消息就要立即展示到聊天页面,否则客服会认为出现了卡顿,体验效果不佳。鉴于这种场景的需求,在设计发送消息链路的时候就要充分考虑到这一点。7、接收消息链路分析接收消息过程相对比较简单,收到消息进行反序列化后更新相关数据,然后在数据池中完成去重重试机制排序后更新到右务侧渲染即可。8、消息的可靠传递em消息的可靠投递主要是指消息在发送接收过程中能够做到不丢消息,消息不重复,消息顺序不错乱。我们客服外。
03:37
M对于消息丢失的处理方案主要是参考TCP协议的AC机制,实现了一套基于业务层的AC协议。在TCP协议中默认提供了AC机制,通过一个协议自带的标准的AC数据包来对通信方接收的数据进行确认,告知通信发送方已确认成功接收的数据。AC机制也是类似,需要解决的是IM网关推送后如何确认消息是否成功送达接收方,并明确被接收方所接收。
我来说两句