项目接入即时聊天客服系统(环信系统)PHP后端操作
环信工作原理:
一、由于环信没有直接的接口来主动调取本项目中的用户数据,所有用户信息必须在环信服务器上注册对应信息成为环信的用户;(这样才能当用户进入聊天时显示其基本信息,如:名称、昵称、电话、邮箱等);
二、客服工作台登录可以显示用户信息,可以查看用户访问轨迹,可以主动接入访客咨询等诸多功能(这些基本都不需要后端程序员编写)
下面开始后端程序员(app程序员请自行查看环信开发文档)需要接入的代码编写:
一、用户信息传递
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’'})"><i class="icon"></i><span class="a_txt">在线客服</span></ a>
其中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文件:
<script type="text/javascript" src="/sea-modules/huanxin/easemob.js"></script>
自此,用户信息传递完毕,客服可以看到是哪位用户在咨询。
二、用户访问轨迹传递
1、由于文件已放置,可以省略
2、商品信息得提取接口,我就不提供代码了,与上面的第二部一样;
3、商品信息的传递,也是一样,通过ajax请求得到商品数据,传递到环信平台:
var easemobgoods = (function () {
var res ;
$.ajax({
type:'GET',
url:ajax_url_config.goods.get_attribute_url+goods_item_id,
async:false,
success:function (data) {
res = data;
}
});
return res;
});
var goods = easemobgoods();
//提取环信客服传递商品数据
window.easemobim = window.easemobim || {};
easemobim.config = {
tenantId: ' ',//写入注册时得到的租户id
//orgName#appName
appKey: ' ',
//手机App绑定的IM号
to: ‘ ’,
satisfaction: true,
// //是否隐藏小的悬浮按钮
hide: true,
//自动连接
autoConnect: true,
//环信移动客服域,固定值,请按照示例配置
domain: '//kefu.easemob.com',
//您网站上im.html文件的完整路径
path: '//你项目的域名地址/huanxin',
//访客插件static的路径
staticPath: '//你项目的域名地址/huanxin/static',
//移动端点击联系客服按钮自动发送订单消息demo
extMsg: {
"imageName": goods['goods_name'],
//custom代表自定义消息,无需修改
"type": "custom",
"msgtype": {
"track": {
"title": "我正在看:",
"price": goods['price'],
"desc": goods['goods_name']+goods['color'],
"img_url": goods['goods_thumb'],
"item_url":"http://你项目的域名地址/goods/detail/"+goods['goods_item_id']
}
}
},
}
项目接入即时聊天客服系统(环信系统)PHP后端操作相关推荐
- ZBLOG即时聊天(客服)插件v1.3.2版本下载,强大的在线客服系统源码
ZBLOG即时聊天(客服)插件v1.3.2版本下载,强大的在线客服系统源码 测试报告:本插件我已按照测试了,正常按照开启,插件配置可正常顺利保存,后台配置项无问题.不过因为本插件要配置的东西太多了,且 ...
- 网站/页面即时聊天客服功能
网站/页面即时聊天客服功能实现效果截图 这是后台页面 这是访客页面 前后端数据交互格式 JSON 前端框架 VUE Element UI JavaScript 后端技术 mysql 5.6 php 5 ...
- 客服在线咨询工具|即时聊天客服系统下载安装(包含APP)
GOFLY是一款基于Golang+Vue开发的在线客服系统,软件著作权编号:2021SR1462600.一套可私有化部署的在线客服系统,编译后的二进制文件可直接使用无需搭开发环境,下载zip解压即可, ...
- 页面即时聊天客服功能
项目最近需要增加一个在线客服的功能,需要快速上线,只有几天时间,找了找网上的api,有个比较不错的 https://crisp.chat/en/ 后台服务长这样 使用非常简单,在仪表台页面找到网站管理 ...
- PHP+Workerman即时通讯技术:在线聊天/客服/访客功能
PHP+Workerman即时通讯技术:在线聊天/客服/访客功能 1:客服端 2:客户端 3:多访客 4:聊天表情 客服端 http://videolaravel.zwzgjl.com/index.p ...
- 【Tensorflow+自然语言处理+LSTM】搭建智能聊天客服机器人实战(附源码、数据集和演示 超详细)
需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一.自然语言处理与智能 自然语言处理技术是智能客服应用的基础,在自然语言处理过程中,首先需要进行分词处理,这个过程通常基于统计学理论,分词的精细化 ...
- 关于省客服集中全业务系统IT项目管理的几点分析!
关于省客服集中全业务系统IT项目管理的若干分析,目的是作为个人项目管理过程的经验并强化一些项目管理固有的思路: 从技术上说,有三缺: 1.缺系统分析:需求是从各地收集,存在差异,但差异的存在在需求定义 ...
- 大数据项目之_15_电信客服分析平台_0102_项目背景+项目架构+项目实现+数据生产+数据采集/消费(存储)
大数据项目之_15_电信客服分析平台_01&02 一.项目背景 二.项目架构 三.项目实现 3.1.数据生产 3.1.1.数据结构 3.1.2.编写代码 3.1.3.打包测试 3.2.数据采集 ...
- html接入qq客服,Vue 前端框架接入QQ在线客服
Vue 前端框架接入QQ在线客服,效果如下图: 后面就根据自己的需要选择不同的方式,下面是使用教程: ------------------------------------------------- ...
最新文章
- css txt-aline,CSS规则定义.doc
- 为什么通常牛顿法比梯度下降法能更快的收敛
- File System Filter Driver Tutorial
- IT项目管理总结:第二章 项目管理和IT背景
- java程序设计颜志军_JSP 自定义标签之一 简单实例
- Linux运维实战之DNS的高级配置(转发器、视图等)
- sockets php,PHP: Sockets - Manual
- 1063. 计算谱半径(20)-PAT乙级真题
- commons-fileupload 上传图片路径到mysql_上传图片到服务器并将图片路径保存到数据库...
- 世界编程语言2008年初排行榜
- Siverlight 自定义TreeView 显示带连接线的组织结构树
- Ubuntu16.04安装VSCode
- C语言——九九乘法表
- DES算法是对称算法吗,能否通过在线工具进行DES解密?
- numpy的choose 函数实现条件筛选
- Spring publishevent事件处理
- 天下所有的事,都是为了利益,都是按利益逻辑规律在运行,发生的一切事情都可以用利益逻辑来解释
- mysql cpu 内存的选择
- Final阶段基于spec评论作品
- 怎样在latex中插入jpg图片