JooLun Plus 百科 ⬇ 源码下载

04.16 OpenIM 客服系统

JooLun 于 2026-10-21 14:40:14 +08:00 修改了此页面

#### 前言

如果不使用OpenIM客服系统,前端可通过配置关闭OpenIM客服聊天和页面

  • 在前端每个工程项目文件夹下面有一个 enableIM 字段(全局搜索 enableIM = true)用来控制是否开启客服功能的操作,将 enableIM 的值改为 false 就能关闭客服IM,关闭后不会进行Im连接逻辑,然后会隐藏所有客服相关的显示和页面。

使用步骤(先用docker部署openIM)

  • 安装docker

  • 安装docker-compose

  • cd到Open-IM-Server目录

cd /mnt/install/joolun-plus/server/Open-IM-Server
  • 修改配置文件(Open-IM-Server/config/config.yaml)里的secret,将tuoyun换成自己的密码,和后面nacos中的im配置对应
secret: tuoyun
  • 分别cd到config和script目录下用dos2unix命令将所有文件转换成UNIX格式,防止报错
 dos2unix *
  • 检测环境(目前仅支持Linux系统,并且保证当前可用内存在2G以上,系统才能正常运转。在生产环境中,建议可用内存在4G以上。)
cd script ;chmod +x *.sh ; ./env_check.sh
//docker加载镜像
docker load < open_im_server.tar
docker load < minio.tar
docker load < grafana.tar
docker load < redis.tar
docker load < mysql.tar
docker load < prometheus.tar
docker load < node-exporter.tar
docker load < mongo.tar
docker load < kafka.tar
docker load < zookeeper.tar
docker load < etcd.tar
  • 启动
cd .. ; docker-compose up -d
  • 检查一
cd script ; ./docker_check_service.sh

如图所示,表示openIM已经正常启动。

  • 检查二(此步骤可省略)

    用postmain通过IP地址post请求接口(ip:10002/auth/user_token)返回如下则说明openIM服务正常,要先把服务器防火墙端口10002暂时放开,验证完后再关闭

  • 其他相关命令
重启服务
docker-compose down; docker-compose up -d
  • 配置nginx代理,必须配置https协议,否则无法使用(只修改域名和证书路径其他不要动,端口必须443)
server {
        listen       80;
        server_name  demo-im.joolun.com www.demo-im.joolun.com;

        return 301 https://demo-im.joolun.com$request_uri;
    }

server {
        listen       443;
        server_name  demo-im.joolun.com;
	
        ssl on;
        ssl_certificate      /mnt/install/ssl/8662007_demo-im.joolun.com_nginx/8662007_demo-im.joolun.com.pem;
        ssl_certificate_key  /mnt/install/ssl/8662007_demo-im.joolun.com_nginx/8662007_demo-im.joolun.com.key;
        ssl_session_timeout  5m;

        gzip on;
        gzip_min_length 1k;
        gzip_buffers 4 16k;
        gzip_comp_level 2;
        gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
        gzip_vary off;
        gzip_disable "MSIE [1-6]\.";

        location /api/ {
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;    
           proxy_set_header Connection "Upgrade";    
           proxy_set_header X-real-ip $remote_addr;
           proxy_set_header X-Forwarded-For $remote_addr;
           proxy_pass http://127.0.0.1:10002/;
        }
        location /jssdk/ {
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection "Upgrade";
           proxy_set_header X-real-ip $remote_addr;
           proxy_set_header X-Forwarded-For $remote_addr;
           proxy_pass http://127.0.0.1:10003/;
        }
    }

  • 完成上述操作就已经将openIM服务部署成功了,现在就可以将openIM配置到我们系统里面使用了;登录nacos后台修改application-dev.yml文件里的im配置,secret在你部署的OpenImServer配置文件(Open-IM-Server/config/config.yaml)中

  • 登录小程序微信公众平台的域名管理中加上IM的wss协议的服务域名

  • 客服(即后台店员账号)登录商户端app(joolun-plus-app)即可收到、回复商城用户发来的信息

如何调用openIM的接口

  • 我们有调用修改会话接口设置拓展数据,具体调用的接口文件在后台的main.go文件中
  • 具体的调用方法如下:
// 参考 `joolun-mobile-pro` 的 `jim-util.js` 文件的 `setConvExInfo`
// 调用会话修改接口设置拓展数据
// fieldType说明: 因为这个接口是调用修改会话接口的扩展字段(ex),所以按定义好的值传 7。定义的文件在后台 `joolun-plus/server/Open-IM-Server/pkg/common/constant/constant.go` 搜 `FieldEx` 的值
let requestData = {
	fieldType: 7,
	userIDList: [IMdata.IMuserID, convInfo
		.userID
	], //要修改的用户ID列表
	ownerUserID: IMdata.IMuserID, // 会话所有者用户ID
	conversationID: convInfo.conversationID,
	conversationType: 1, // 1单聊 2:群聊
	operationID: `${IMdata.IMuserID}modify_conversation_field_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
	recvMsgOpt: 0,
	ex: exInfo ? JSON.stringify(exInfo) : ''
}
uni.request({
	url: IMdata.IMJSapiUrl +
		"/api/conversation/modify_conversation_field", // 接口在main.go文件中
	method: "POST",
	withCredentials: false,
	headers: {
		'Content-Type': 'application/json',
		'token': IMdata.IMtoken // IM认证token
	},
	data: JSON.stringify(requestData),
	success(res) {
		// 修改成功,刷新会话
		resolve()
	}
})

后台如何调用 openIM 接口

说明:基本流程为,后台构建IM接口参数然后发起im接口请求进行调用

方法可以参考文件:joolun-plus/joolun-common/joolun-common-im/src/main/java/com/joolun/cloud/common/im/util/IMUtils.java

接口说明:因为openIM接口文档不完整,所以具体可用接口请参考文件 joolun-plus/server/Open-IM-Server/cmd/open_im_api/docs/swagger.json 和 文件 joolun-plus/server/Open-IM-Server/cmd/open_im_api/main.go

如果开发新功能建议使用AI工具,然其读取接口文档开发相应的功能。