代理商与用户IM系统构建

我要开发同款
proginn11354728762021年10月16日
68阅读

作品详情

1. 系统构成:qchat提供面向app端(客服端)的长连接服务,kevin提供面向服务端(机器人)的推送服务。im_primary提供路由服务,并存储会话信息,存储会话对应成员和成员对应的长连接,有了这些路由信息,im_primary就能将收到的消息路由给对应长连接,从而转发给对应的客户端。2. 当用户点击在线客服的按钮,首先是建立一个机器人会话,机器人主要是给进线的用户提供智能回复,减少进入人工的会话量。如果用户找人工的话,机器人根据用户诉求将用户插入排队系统中对应代理商队列进行排队。排队系统有定时任务会给该用户分配代理商,分配成功后会建立人人会话,代理商端客服系统会弹屏,表示有会话进线了,开始进行人工服务。3. 基于session实现会话沟通,底层自定义t协议。(1) 代理商端每次都是一个新的小会话,而用户端有个大会话的概念,会把所有的小会话串起来,但是最多只有一个是活跃的,看到所有的历史聊天过程。(2) 用户登录或者客服登录时,会将userId和clientId关联起来,存到redis中;建立会话时,会新创建一个活跃的小会话,和用户大会话关联起来,同时小会话会关联聊天成员。发送会话时,将消息存到会话详情中,同时找到会话的成员的clientId,通过长连接转发该消息。(3) 用户端的大会话框后来也进行了拆分,区分售前和售后,保证用户能够同时进行多个人人会话。4. 基于redis SortedSet实现用户排队和快速分单,权重高的排在前面,不同的用户根据不同业务放入不同队列。代理商根据其派单domain配置对应的队列。分单时拉取所有接单中的代理商,按照库存从小到大排序,获取到其能处理的队列中权重最大的用户,进行服务、出队、建立会话。
查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论