小京东自带的是有即时通信服务的,但是网上流传的大多都阉割了这个功能,,其实,,这个功能还是很有用的,,
怎么配起来呢?
首先,需要JAVA环境(大约也就是要下载安装JDK)【这个待定,可以先试下不安装JDK的】,其次多个人都推荐使用Linux系统,,,
用的阿里云的服务器安装JDK环境的方法,安装方法如下:
Windows主机:https://help.aliyun.com/knowledge_detail/6702345.html
Linux主机:https://help.aliyun.com/knowledge_detail/6507861.html
1、下载OpenFire
最新版下载地址:http://www.igniterealtime.org/downloads/index.jsp
下载最新版的Openfire,下载后上传到Linux。我的是在root目录。
上传后登陆终端,执行命令。
rpm -ivh openfire-4.0.2-1.i386.rpm
没有报错回到命令符下即安装完成,执行:
/etc/init.d/openfire start
显示[OK]即安装完成
2、配置Openfire
打开网址:ip:9090即打开配置页面。
根据向导进行配置即可。
注意:
这一步中,域的位置填写真实IP或域名。否则会出错。
下一步需要填写数据库信息,可以选择Mysql,可以与ECSHOP同一个数据库,也可以分开。
接下来没有需要注意的地方,按向导操作。
进入管理平台。
3、安装插件:
登陆管理控制台-插件-有效的插件
安装Fastpath Service ,Presence Service ,User Service 三个插件,默认有Search ,总共4个。
配置插件:管理控制台-服务器-服务器配置
插件配置如图:
4、修改小京东程序
includes目录下:lib_chat.php
修改函数函数(判断用户是否存在):function check_of_username_exist
/**
*
* 判断用户是否存在
*
* @param string $username
* @return boolean
*/
function check_of_username_exist($username)
{
$_CFG = $GLOBALS['_CFG'];
$of_username = $_CFG['chat_server_admin_username'];
$of_password = $_CFG['chat_server_admin_password'];
$of_ip = $_CFG['chat_server_ip'];
$of_port = $_CFG['chat_server_port'];
$of_url = get_of_url($of_ip, $of_port);
if(empty($username))
{
return false;
}
$url = $of_url.'/plugins/userService/users/'.$username;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
// 授权验证
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $of_username.":".$of_password);
// 设置可以读取返回值
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 运行curl
$result = trim(curl_exec ( $ch ));
// 关闭
curl_close ( $ch );
//读XML文件内容,并保存到字符串变量中
$xml = new SimpleXMLElement($result);
//获得username的值
$test = new SimpleXMLElement($result);
$refusername = $test->username;
if(!empty($username))
{
if($refusername == $username)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
修改函数名:获取聊天服务器的域名:function get_xmpp_domain()
/**
*
* 获取聊天服务器的域名
*
* @param unknown $username
* @param string $type 返回的数据类型:xml,text,image,默认为text
* @return string
*/
function get_xmpp_domain()
{
$_CFG = $GLOBALS['_CFG'];
$of_username = $_CFG['chat_server_admin_username'];
$of_password = $_CFG['chat_server_admin_password'];
$of_ip = $_CFG['chat_server_ip'];
$of_port = $_CFG['chat_server_port'];
$of_url = get_of_url($of_ip, $of_port);
$url = $of_url.'/plugins/userService/users/domain';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
// 授权验证
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $of_username.":".$of_password);
// 设置可以读取返回值
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 运行curl
$result = trim(curl_exec ( $ch ));
// 关闭
curl_close ( $ch );
//获得email的值
$test = new SimpleXMLElement($result);
$email = $test->email;
$result = $email;
return $result;
}
上传之后变形,特地存了txt文件。lib_chat
5、配置小京东
后台-即时通信-聊天服务器设置 设置如图:
6、下载spark
这个就是商家要用的客户端了。
下载地址:http://www.igniterealtime.org/downloads/index.jsp
安装后用后台添加的客服登陆即可。
这样就可以了。
可能遇到的问题:
1、启动Openfire的时候,可能会报错:
Starting openfire (via systemctl): Job for openfire.service failed because a configured resource limit was exceeded. See "systemctl status openfire.service" and "journalctl -xe" for details.
解决办法是:
打开/etc/init.d/openfire文件,将JAVA_HOME改成JDK的目录,如
JAVA_HOME="/usr/local/src/jdk1.8.0_77/"
2、Web端点客服链接没反应,通过Spark查找可以建立会话,但是Spark可以到Web,但是Web窗口发布的消息不能到Spark。
解决办法:
先查一下Chat.php的源文件,看
<input type="hidden" id="from" value="1@127.0.0.1" />
看是否是以上格式,很有可能是
<input type="hidden" id="from" value="1@" />
@后面是空的。那解决办法是:
打开/chat.php文件,修改约436行$xmpp_domain = get_xmpp_domain();为$xmpp_domain = “127.0.0.1”;
这个其实并没有真正解决问题,最好是能够修复get_xmpp_domain();函数。。
Spark二开教程:http://www.thinksaas.cn/topics/0/342/342334.html
Spark开源项目:https://github.com/igniterealtime/Spark