配置小京东的即时通信(IM)服务
  • 分类:经验分享
  • 发表:2016-04-22
  • 围观(11,604)
  • 评论(0)

小京东自带的是有即时通信服务的,但是网上流传的大多都阉割了这个功能,,其实,,这个功能还是很有用的,,

怎么配起来呢?

首先,需要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即打开配置页面。

根据向导进行配置即可。

注意:

00002

这一步中,域的位置填写真实IP或域名。否则会出错。

下一步需要填写数据库信息,可以选择Mysql,可以与ECSHOP同一个数据库,也可以分开。

接下来没有需要注意的地方,按向导操作。

进入管理平台。

3、安装插件:

登陆管理控制台-插件-有效的插件

安装Fastpath Service  ,Presence Service  ,User Service  三个插件,默认有Search  ,总共4个。

配置插件:管理控制台-服务器-服务器配置

插件配置如图:

012 013

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、配置小京东

后台-即时通信-聊天服务器设置  设置如图:

ser

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

Top