openfire4.2 配置fastpath、webchat、spark实现客服系统
公司的APP最新要做用户建议和bug反馈功能,需求是我们的运营人员能对用户反馈和建议进行沟通交流。做调研和向之前的同事和网友咨询相关经验后决定使用基于Apache Licene2.0开源协议的openfire4.2+的IM聊天服务器。
openfire和spark的安装很简单,网上一堆教程,这次就不多说了。
安装成功后,openfire后台是这个样子的:
假如要实现类似客服系统的话,需要安装一个openfire的插件----Fastpath(仔细看上图),Fastpath插件安装同样很简单傻瓜式安装,在openfire后台导航选择“插件----有效插件”然后选择“fastpath”,点击安装即可。
重点来了!!!fastpath server的web端fastpath webchat插件就比较难了,本章重点介绍如何安装webchat。
网上说的webchat.war已经下载不了了,别费劲找了。下面是webchat源码的下载地址https://codeload.github.com/igniterealtime/Fastpath-webchat/zip/master
使用idea的同学可以直接部署,eclipse的需要做以下修改,步骤:
新建一个web项目,把源码中src目录下java目录的java代码、webapp目录下的jsp、webapp/WEB-INF下的lib中的jar包和dwr.xml、taglibs-mailer.tld、web.xml配置文件放到新建的web项目下,即可。请忽略plugin目录。
eclispe编译后,启动tomcat,访问http://localhost:8080/webchat,进入如下页面:
Server Host输入你自己openfire部署服务器的ip,点击save按钮,可能会报:
org.apache.jasper.JasperException: java.lang.NullPointerException异常,这时要加入下面几个jar包,可自行百度下载:
javax.servlet.jsp-api-2.3.1.jar
jasper-compiler-jdt-5.5.15.jar
jasper-compiler.jar
jasper-el.jar
jasper-jdt.jar
jasper-runtime.jar
jasper.jar
加入后重启,点击save按钮可能还会报错:Anonymous login test failed. Ensure that anonymous logins are enabled on the
这时去openfire的后台:服务器---服务器设置----登录和注册,把匿名登录设置开启。
不出意外的话会配置成功,进入如下页面:
click on the fllowing image:
这时页面上没有workgroup的图标并且查看log会发现已经报错:
警告: Could not retrieve image: offline
remote-server-not-found(404)
at org.jivesoftware.smackx.workgroup.user.Workgroup.getChatSettings(Workgroup.java:687)
at org.jivesoftware.smackx.workgroup.user.Workgroup.getChatSettings(Workgroup.java:654)
at org.jivesoftware.webchat.util.SettingsManager.getImage(SettingsManager.java:147)
at org.jivesoftware.webchat.FastpathServlet.service(FastpathServlet.java:174)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.jivesoftware.webchat.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:45)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.jivesoftware.webchat.SetupFilter.doFilter(SetupFilter.java:92)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:509)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1104)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
![](/assets/blank.gif)
http://localhost:8080/webchat/,就会出现openfire配置的workgroup图标:
然后点击图标就可以进行对话了,我的客户端用的是spark,会随机匹配一个客服对话。
把webchat部署之后,访问:http://localhost:8080/webchat/页面查看workgroup列表,如果这时只两句话,并没有图标:
List of available workgroups within Fastpath
Click on one of the following workgroups to join.
<此处应有workgroup组图标>
|
![](/assets/blank.gif)
![](/assets/blank.gif)
2,Form UI:主要是用户网页端连接时需要输入的个人信息内容,可以自行修改
3,Images:用来修改网页端对话窗口的各种图标
4,text:用来修改网页端对话窗口的各种文本提示
5,offlien settings:用来设置客服全不在线时的动作
6,transcripts:用来设置对话结束后给用户发送一份聊天副本
![](/assets/blank.gif)
![](/assets/blank.gif)
openfire4.2 配置fastpath、webchat、spark实现客服系统相关推荐
- 某电商平台开发记要——客服系统
假如网站需要提供客服功能,如果只是简单的聊天咨询可以考虑营销QQ.百度商桥等(目前大部分网站采用此方式,包括一些知名行业电商):如果需要更精细化的管理,比如客服人员安排.各项数据统计汇总,那么需要对接 ...
- 一个程序员的战斗:在线客服系统,一年30个版本更新,收获首批忠实用户
就像没有一个画匠不想办一场属于自己的画展,没有一个歌者不想写一首自己的歌. 也许只有为数不多的听众,但是当他怀疑自己时,还是会有忠实的听众支持他继续走下去. 我在业余时间开发维护了一款在线客服系统,一 ...
- openfire + fastpath + webchat + spark 搭建在线客服系统
openfire + fastpath + webchat + spark 搭建在线客服系统 最近接了好几个项目,这几个项目有个共同的特点都是需要用到在线客服系统的.因为之前没有做过在线客服系统,所以 ...
- otrs安装mysql_安装配置otrs客服系统
大 中 小 安装配置otrs客服系统 2011-10-20 一.安装OTRS步骤和问题解决方法二.OTRS-Kernel文件移动三.OTRS文件权限四.OTRS测试五.数据导入六.同步数据库 (先要安 ...
- 如何给《羊了个羊》配置一套智能客服系统?
几乎是一夜之间,微信小游戏<羊了个羊>火了. 这个依靠寻找相同元素消除方块的小游戏,凭借其"变态级别"的游戏难度成功破圈,闯入了无数人的休闲时间,并数次冲上热搜. 当 ...
- 微信公众号服务号配置对接在线客服系统教程
如果只需要实现微信公众号的关注自动回复,关键词自动回复功能,普通订阅号就可以 当需要对接实现公众号的模板消息提醒,模板消息与客服端H5的对接,访客在微信点击或扫码时获取到微信的昵称头像,需要网页授权功 ...
- 微信公众号菜单跳转到小程序教程-客服系统对接公众号配置菜单JSON
现在客服系统的后台,对接微信公众号菜单功能,可视化编辑菜单界面有些不足 只能跳转链接,没有其他点击事件以及跳转小程序功能 其实,生成公众号菜单只是一个JSON的形式,具体的JSON内容可以参照下面示例 ...
- flask manage port_后端Python3+Flask结合Socket.io配合前端Vue2.0实现简单全双工在线客服系统...
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_158 在之前的一篇文章中:为美多商城(Django2.0.4)添加基于websocket的实时通信,主动推送,聊天室及客服系统,详 ...
- 轻量在线人工客服系统 支持多商家+自动适配移动端
简介: 智优在线客服系统源码 PHP轻量人工客服系统 支持多商家+自动适配移动端 支持多商家 支持多商家,每个注册用户为一个商家,每个商家可以添加多个客服. 不限坐席 每个商家可以无限添加坐席,不限制 ...
最新文章
- OI模板大全(普及~省选NOI)
- 去掉文化管理系统广告
- 升级安装linux ssh 升级安装
- 考研 | 研究生考试入门,送给刚刚进入寒假的大三的你
- 步步深入MySQL:架构-gt;查询执行流程-gt;SQL解析顺序!
- android studio syso快捷键,AndroidStudio代码段简写Live Template
- MySQL数据库中如何使用rand随机查询记录
- 程序设计模式的有趣解释-追MM
- 利用U-Net进行两阶段超声图像分割,并增加测试时间
- Java中的AtomicInteger
- 区块链 以太坊 入门知识
- Data Binding 指南
- MySQL集群Cluster
- abb机器人编程指令写字_ABB机器人编程指令与函数
- 网页视频图片链接批量提取
- Image caption领域的研究现状及分析
- 覆盖(重写)与重载的区别
- js实现进度条组件(Progress)
- 场景建模都用到哪些三维软件,入门学习选择3DsMax还是Maya
- 想学3dmax应该怎么学?
热门文章
- 贵州移动落实工业“百千万”工程 助力大数据发展
- 金山毒霸:猫癣病毒“服务器”现身广东
- linux统计一个文本文件包含多少行,linux小计,统计文件中包含指定字符串的行数...
- SteamVR在HDRP或URP中手柄控制器材质如何显示正常?
- 【Java】方法中的参数传递机制的具体体现
- 陇东学院计算机专业,陇东学院计算机科学与技术专业师范方向课程标准.DOC
- 京东招聘CV方向算法实习生
- Photoshop CS6利用液化滤镜美化改变脸型实例教程
- 基于Bert的微博舆论分析Web系统
- 关于汽车起重机远程监控若干问题的探讨