1. 系统构成:
qchat提供面向app端(客服端)的长连接服务,kevin提供面向服务端(机器人)的推送服务。
im_primary提供路由服务,并存储会话信息,存储会话对应成员和成员对应的长连接,有了这些路由信息,im_primary就能将收到的消息路由给对应长连接,从而转发给对应的客户端。
2. 当用户点击在线客服的按钮,首先是建立一个机器人会话,机器人主要是给进线的用户提供智能回复,减少进入人工的会话量。如果用户找人工的话,机器人根据用户诉求将用户插入排队系统中对应代理商队列进行排队。排队系统有定时任务会给该用户分配代理商,分配成功后会建立人人会话,代理商端客服系统会弹屏,表示有会话进线了,开始进行人工服务。
3. 基于session实现会话沟通,底层自定义t协议。
(1) 代理商端每次都是一个新的小会话,而用户端有个大会话的概念,会把所有的小会话串起来,但是最多只有一个是活跃的,看到所有的历史聊天过程。
(2) 用户登录或者客服登录时,会将userId和clientId关联起来,存到redis中;建立会话时,会新创建一个活跃的小会话,和用户大会话关联起来,同时小会话会关联聊