项目接入即时聊天客服系统(环信系统)PHP后端操作

网友投稿 643 2022-05-30

环信工作原理

一、由于环信没有直接的接口来主动调取本项目中的用户数据,所有用户信息必须在环信服务器上注册对应信息成为环信的用户;(这样才能当用户进入聊天时显示其基本信息,如:名称、昵称、电话、邮箱等);

二、客服工作台登录可以显示用户信息,可以查看用户访问轨迹,可以主动接入访客咨询等诸多功能(这些基本都不需要后端程序员编写)

下面开始后端程序员(app程序员请自行查看环信开发文档)需要接入的代码编写:

项目接入即时聊天客服系统(环信系统)PHP后端操作

一、用户信息传递

1、先下载环信开发demo文件,提取statics、easemob.js等文件放置到项目指定目录下便于调用

如图:图片

2、编写用户信息提供接口,将本站用户基本信息return出,如下:

class GetUser { public function get() { //给予状态初始值 $res = [ 'status' =>0 ]; //判断本站用户是否登录 $user_id = Yii::$app->user->id; if ($user_id >0) { $user_one = User::Redis_getOne($user_id); //easemob_id为用户数据中是否有注册环信的账号id if (empty($user_one['easemob_id'])) { //配置文件中写入的环信参数(是公司在环信官网注册得到的信息,详情见环信文档) $option = [ 'client_id' => yii::$app->params['easemob']['client_id'], 'client_secret' => yii::$app->params['easemob']['client_secret'], 'org_name' => yii::$app->params['easemob']['org_name'], 'app_name' => yii::$app->params['easemob']['app_name'], 'base_url'=> "https://a1.easemob.com/".yii::$app->params['easemob']['org_name']."/".yii::$app->params['easemob']['app_name']."/" ]; //实例化环信类 $h = new Easemob($option); //在环信端注册用户信息 $re = $h->createUser($user_one['phone'], yii::$app->params['easemob']['default_password']); //获取环信上用户的信息到本站上 $easemob_id = $h->getUser($user_one['phone']); //添加用户相关字段值(将用户在环信上注册好的id再存入用户数据) User::updateOne_NoRedis(['id'=>$user_one['id'], 'easemob_id'=>$easemob_id['entities'][0]['username']]); //判断注册信息是否有,如果有则注册成功,状态改为1,信息存入结果集;反之则已被注册,将用户信息直接存入结果集即可; if ($re) { $res['status'] = 1; $res['msg'] = '环信用户生成'; $res['data'] = [ 'username'=>$user_one['phone'], 'password'=>yii::$app->params['easemob']['default_password'], 'nickname'=>$user_one['nickname'], 'realname'=>$user_one['realname'], 'qq'=>$user_one['qq'], 'head'=>File::getFileUrl($user_one['portrait'],100,100), 'phone'=>$user_one['phone'], 'wx'=>$user_one['wx_openid'], ]; } }else{ $res['status'] = 1; $res['msg'] = '环信用户找到'; $res['data'] = [ 'username'=>$user_one['phone'], 'password'=>yii::$app->params['easemob']['default_password'], 'nickname'=>$user_one['nickname'], 'realname'=>$user_one['realname'], 'qq'=>$user_one['qq'], 'head'=>File::getFileUrl($user_one['portrait'],100,100), 'phone'=>$user_one['phone'], 'wx'=>$user_one['wx_openid'], ]; } } return $res; } }

2、在用户点击联系客服按钮事件时,调用上述接口,获取用户信息传到客服工作台

h5页面代码:

< a href=" " οnclick="easemobim.bind({tenantId:‘注册的租户id’'})">在线客服

其中onclick为自定义按钮事件,点击启用传值动作

//打开环信客服窗口 var easemob =function(){ $.ajax({ type:'POST', url:ajax_url_config.my.easemob+'?access-token='+token, success:function (User) { var jsondata = eval("("+User+")"); } return jsondata; } ; var easemobUser = easemob (); window.easemobim = window.easemobim || {}; easemobim.config = { //是否隐藏小的悬浮按钮 hide: true, //自动连接 autoConnect: true, //环信移动客服域,固定值,请按照示例配置 domain: '//kefu.easemob.com', //您网站上im.html文件的完整路径 path: '//你项目的域名地址/huanxin', //访客插件static的路径 staticPath: '//你项目的域名地址/huanxin/static', //orgName#appName appKey: ' ', //手机App绑定的IM号 to: ' ', //集成用户体系,验证的方式二选一,必填,另一项为空即可 user: { //指定用户名,集成时必填 username: easemobUser['username'], //password验证方式 password: easemobUser['password'], //token验证方式 token: '' }, visitor:{ trueName: easemobUser['realname'], qq: easemobUser['qq'], phone: easemobUser['phone'], companyName: '', userNickname: easemobUser['nickname'], description: '' } };

在这之前,请记得要引入之前放置在指定目录下的环信js文件: