• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ServiceChat: 使用socket.io+vue搭建的客服通讯网页,clone下来后安装必要依赖即可跑 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

ServiceChat

开源软件地址:

https://gitee.com/service-chat/service-chat

开源软件介绍:

ServiceChat客服聊天 网页版

网页、H5

star fork

无偿开源!你们的Star是我的动力!

介绍

ServiceChat 是一套运行在 node.js 的客服聊天网页,包括客户端和客服端,放在 node 的初衷也是为了方便学习前端的人更加容易上手,整个项目功能丰富,但可维护性差了写,因为所以的功能和页面都怼在了一个页面,这也算是当初做的比较急的原因吧,但完全不担心使用问题,如果你不满意这种写法可自行抽取封装,感谢支持!

功能一览

  • 机器人智能聊天
  • 客服手动在线离线
  • 用户主动向客服发送信息(信息包括文本、表情包)
  • 客服选择会话成员,并且主动向用户发送信息(信息包括文本、表情包)
  • 用户/客服接收到对方发送的信息
  • 客服主动关闭用户会话,离线列表显示离线用户,用户端提示客服主动关闭会话,本次会话结束
  • 客服手动离线,清除所有会话列表,用户端提示客服已离线,本次会话结束
  • 客服刷新或关闭页面下线,清除所有会话列表,用户端提示客服已离线,本次会话结束
  • 用户刷新页面或关闭页面,客服端提示用户已下线,本次会话结束
  • 客服切换右边工具栏,选择快捷回复,可选中快捷回复信息以此快速回复内容
  • 发送信息,如果服务器中断,信息状态为 0(未发送出),若 20 秒服务器仍为断开,信息状态改成-1(发送失败),若 20 秒内服务器恢复,信息状态改成 1(发送成功)
  • 在用户端加入 productId,用户可发送商品卡片
  • 客服接收用户发送的商品卡片,并且查看详情
  • 完成图片发送,若图片过大时进行图片压缩,图片超大时不允许发送
  • 完成图片接收,查看
  • 用户多台设备在线时,强制另一台设备下线
  • 客服多台设备在线时,强制旧客服端下线,并且中断会员的会话

项目地址

GitHub:https://github.com/Arles-hsh/serviceChat

码云:https://gitee.com/service-chat/service-chatt

如果您对此项目有兴趣,可以点 “Star” 支持一下 谢谢!

如果有任何的疑惑或建议,请在评论中提出,欢迎评论!

效果图

用户端进入客服界面:在这里插入图片描述注意:因为需要实现转人工的功能,所有访问时是带来参数的,即地址中的 sendId,目的是为了获取该用户的信息,除此之外,需要注意的是,用户端采用的是手机端,所以需要你在浏览器中 f12,把手机的模拟器亮起来在这里插入图片描述用户转人工:在这里插入图片描述发送消息(包括文字、图片、表情包)在这里插入图片描述客服快捷回复功能在这里插入图片描述用户下线或客服下线通知在这里插入图片描述发送卡片功能在这里插入图片描述注意:此时为了模拟浏览的商品,地址参数多了 productId

功能演示暂时先上这些,还有许多的功能等着小伙伴们去探索,应该有人开始疑惑,上面演示的 sendId 和 productId 如何匹配上对应的用户和商品信息呢,其实我是提前放在后端的 json 数组里了,目的是模拟数据库中的数据,除此之外,还有快捷回复、用户留言、机器人回复的 json 信息

在这里插入图片描述接下来,说下项目 clone 下来后,需要完成那些事情才能把项目跑起来

安装依赖

  • 后端依次输入以下命令:
cd servicenpm installnode app.js
  • 前端依次输入以下命令:
cd chatroomnpm installnpm run serve
  • 特别提醒

最近遇到几位用户加我说前后端服务不通,后来帮他们解决了一下,发现都是同一个问题:请务必保持前后端的socket版本一致,前端的socket版本是:"socket.io-client": "^2.3.1",后端是:"socket.io": "^2.3.0"。具体为什么版本差异会带来这些问题可自行找度娘!

浏览器运行

到现在就已经是大功告成,客服项目的最终效果就展示出来了

参数说明

data 数据

字段类型描述
socketObjectsocket 对象
senderObject发送者对象
revicerObject接收者对象
infoTemplateObject信息模板
productDetailObject商品详细信息
browseCardObject卡片信息内容
msgTimerObject信息发送定时器
windowHeightInteger窗口高度
chatContentHeightInteger聊天内容高度
floatBottomHeightInteger输入框底部高度
scrollTopInteger滚动条位置高度
levelInteger客服评分等级
solveResultInteger是否解决问题
currentEasyInteger当前快捷回复树状图 Id
pageIndexInteger当前聊天内容页数
pageSizeInteger当前聊天内容一页的条数
current_stateInteger当前工具栏 Id
customerMessageString客服留言内容
thisQuestionString本次问题
sendInfoString发送的聊天内容
abutmentUrlString工具栏对接页面的 url
customerImgString用户头像
serviceImgString客服头像
messageTipString提示内容
noCodeTimestamp每次进入客服功能的时间戳
isSelectSessionBoolean是否选中会话
expressionShowBoolean是否显示表情
lastSessionBoolean是否为全部会话内容
sendStateBoolean是否可以发送
openImitateProductBoolean是否开启虚拟商品
conversitionArray当前用户会话内容
expressionsArray表情列表
serviceToolArray客服工具栏列表
fastReplayArray快捷回复内容
imageListArray聊天内容图片列表
startArray评星列表

infoTemplate 数据

字段类型描述
SendIdInteger发送者 Id
ReviceIdInteger接收者 Id
ContentString发送内容
IdentityInteger发送者身份:0 机器人,1 客服员,2.会员
TypeInteger信息类型 :0 文本,1 图片,2 表情,3 商品卡片/订单卡片,4 机器人回复
StateInteger信息发送状态
NoCodeTimestamp发送者时间戳
OutTradeNoString发送者 socketId
CreateDateUtcString发送信息时间
TitleString推送卡片-标题
DescriptionString推送卡片-描述
LabelString推送卡片-标签
ThumbnailString推送卡片-图片
NoSendBoolean卡片标题

sender、revicer 数据

字段类型描述
idIntegerId
isServiceInteger是否客服
nameString名称
onlineStateBoolean在线状态
outTradeNoInteger用户 socketId
sourceInteger来源
mobileString手机号
nickNameString昵称
cardNoString卡号
receptNumInteger接待用户数量

简略说明

  • 后端处理:在这里插入图片描述

  • 前端:

    Chat.vue 是核心文件,需要看懂的话需要一些时间,html 和 css 样式虽然有点多,但这些相信你有基础的话还是不难理解的,其中有点难度的可能是 js 的处理逻辑,如果不懂的可以随时来打扰~

后言

该项目前身其实是我用 C#的 signalr 框架完成的,因为涉及到其他语言,对很多前端学习者来说是不太友好,所以我在想怎么才能把它转移到前端来给更多的前端爱好者来学习,于是花了许多时间将旧项目抽取、改进、完善才有了现在的最终效果,其中 node 涉及到的并不多,也就是简单的 js 而已,大家上手更容易,最后附上我学习中时参考的 socket 手册:socket.io 中文手册

QQ群

  • 群号:149091283 (进群备注)

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap