背景与前言
在线客服系统是MIC和新一站等部门客服与访客通讯的平台。最近智能机器人很火,我们部门也配合开发了交互功能,投入线上使用。
在线客服前端为了配合机器人功能显示,遇到了不少问题,涉及交互和代码,下面具体分析一下。
目前新一站和MICEN已经上线使用,访客端和客服端的机器人交互和速度优化明显。
本文可以让您了解智能机器人落地使用的例子。
1、通讯方式
之前的通讯方式是每秒发一次轮询的报文处理机制,但是对于机器人场景就显得不合适,有点卡顿。
这里我们采用ajax方式通讯,也可以考虑websocket。
发送机器人文本消息ajax方式通讯例子 |
2、性能问题
如果机器人查询后台频率特别高,最好独立部署一台应用服务器,我们就是这样处理的。
比如访客联想词查询,访客每输入一个字都会查询一次,给出建议,容易拖累核心应用的通讯性能。
如果采用纯前端查询? | 如果采用纯后台查询? |
1、前端一次性加载的词库数量有限,查询范围比较小,拖慢加载速度。 2、对于一些低配置电脑性能影响比较大,因为用户每输入一个字母,就会启动一次查询。 3、优点:响应速度比较快。 | 1、后台查询对服务器开销比较大,访客接入量多的时候容易影响通信线程。 2、查询间隔的阀值很难控制,短了影响服务器性能,长了影响用户体验。 3、优点:前端不需要加载词库。 |
设计优化方案 |
1、采用前后台混合的方案,前端加载核心词库查询,如果匹配出来的数量少于阀值,再发请求到后台查询。 2、独立部署一个后台应用,直接读取缓存查询数据,和数据库没有交互。 |
本地缓存控制 | 跨机房缓存控制 |
核心类 | 方法 |
AssociationKeywordController 前端查询的入口 | |
RobotFaqService RobotFaq的Redis 缓存 先匹配标准问题,如果数量不足十个再匹配相似问题 | |
RobotFaqRedisCache 1、检查是否有效时间内 2、最后一次查询RobotFaq的时间 3、RobotFaq的Redis更新时间 |
总结 |
1、发现问题以后,要能冷静的定位到问题的瓶颈是什么。 2、结合需求,提出2条解决方案后,和别人讨论。 3、解决问题时,要关注到类似跨机房和Redis缓存的优化。 |
3、可以考虑富文本的展示方式
如果采用富文本的方式用户体验会更好。但是要注意图片多的时候滚动条加载的问题,需要监听图片加载然后调整滚动条。
之前的消息是直接加载出来,然后调整滚动条到最下面。
但是对于显示富文本的场景,图片加载较慢,我们把交互调整成先加载动画,然后监听图片加载成功后,在显示动画慢速滚动到最下面。
富文本加载中 | 富文本加载后 |
4、显示内容控制
如果涉及多端显示,比如安卓或者IOS,最好让服务端判断显示逻辑,比如是否显示机器人评价按钮等等。
这样机器人调整的比较频繁也不会影响其他端。
5、让评价机器人按钮发挥作用
单纯的评价机器人回答没有实际意义。需要发挥转接人工或者提示客服的相关功能。
步骤 | 例图 |
第一步:访客点击”未解决“ | |
第二步:正在转人工 | |
第三步:转人工成功,感谢评价 |
6、交互连贯
机器人功能要喝原有的业务无缝连接。例如有机器人的场景和没有机器人的场景,FAQ出现的位置不一样。
访客端接入机器人后只保留“转人工服务”的按钮,转人工后再显示其他按钮。
访客聊天框 | 例图:访客端接入机器人后只保留“转人工服务”的按钮,转人工后再显示其他按钮。 |
机器人状态 | |
人工状态 |
7、让客服一眼就能区别哪些是机器人场景的聊天
目的是让客服知道哪些会话需要立刻回复,哪些还在机器人聊天过程当中。
例如图标: | 例如: |
8、Excel导出问题
后台导出机器人聊天记录成Excel的时候最好使用类似java poi等等专门的控件,我们尝试使用volocity模板引擎发现2个问题。
一是不能正确换行,wps和office的换行方式不统一。
二是不能合并到同一行,模板引擎生成聊天记录会占用多行,维护人员调整这种Excel不方便。
9、前端需要埋点统计性能
上线后才有优化的依据。
10、机器人的样式要容易区别
访客容易区别这是机器人还是人工客服,我们建议才用特殊的机器人风格的头像。
例如新一站的机器人头像: | 新一站的客服头像: | 效果: |
|
11、注意IE的兼容性
IE10才支持滚动条动画功能和CSS3,IE9才支持聊天框气泡圆角显示和html5,IE8才支持聊天框气泡。
IE7/IE6建议采用文本显示(可以控制样式和字体)。
IE7效果图: |
文本模式发送图片和文件 | 气泡模式发送图片和文件 |
12、样式升级最好可以让用户配置
最好可以让用户在后台管理系统里面自己配置新的显示样式,也许样式升级不一定适用他们原来的使用场景。
文本模式配置 | 气泡模式配置 |
总结 |
1、发现问题以后,要能冷静的定位到问题的瓶颈是什么。 2、已经存在的老方法也许很好,但不一定适合现有方案,比如机器人查询报文。 3、多和需求、交互、测试沟通,尤其是新项目,他们可能每个人想法都不同。 |