引言

在做电商模块开发的同学总会遇到这么一个需求,那就是售前售后的咨询,也就是所谓的客服功能,想要自己从零开发一个客服系统那也不是不可能,只是工程比较大,开发周期会就一些。如果想要快速上线的话,那就得接入第三方平台,本次笔者以阿里云客服为例将客服系统接入自己的站点。

云客服文档:https://help.aliyun.com/document_detail/68241.html?spm=a2c4g.11186623.6.562.30a124c1bGy5fd

开发逻辑

申请公钥

目前,阿里云客服不能在控制台里直接获取,所以需要提交工单向售后工程师获取。

获取租户链接

数据埋点

<?php// 这里替换一下公钥路径 ( 由云客服提供 )
define('VISITOR_CARD_PUB_KEY','./key.pem');class VisitorCardController
{/*** 1. 访客端聊天窗数据埋点* 埋点主要是构造带有访客信息的加密链接* 云客服在线服务聊天窗 URL 示例如下:* https://cschat-ccs.aliyun.com/index.htm?tntInstId=xxxx&scene=xxxx* cinfo:将要传给访客名片的查询参数加密后的内容* key:通过非对称加密算法加密后的对称加密密钥* 最终的聊天窗 URL 示例如下:* https://cschat-ccs.aliyun.com/index.htm?tntInstId=xxxx&scene=xxxx&cinfo=xxxxx&key=yyyyy* @return string*/public static function CustomerInfoCryptoUtil(){// 2. 阿里云租户,替换这里的tntInstId和scene的参数值$baseUrl = 'https://cschat-ccs.aliyun.com/index.htm?tntInstId=_1icvc4O&scene=SCE00005946';//生成随即16位AES密钥$aesKey = md5(time(), true);//需要根据实际系统用户的信息修改$cInfoArray = ['extInfo' => ['phone'=>'13229055555'],'userId' => '1','uname' => '张三',];$jsonStr = json_encode($cInfoArray, 1);$cInfo = self::AESEncrypt($jsonStr, $aesKey);//RSA 公钥加密aesKeyopenssl_public_encrypt($aesKey, $encrypted, file_get_contents(VISITOR_CARD_PUB_KEY));//构造带有访客信息的加密链接return $baseUrl . '&cinfo=' . urlencode(base64_encode($cInfo)) . '&key=' . urlencode(base64_encode($encrypted));}/*** AES-128-ECB 加密算法* @param String $str 需要加密字符串* @param String $key 密钥* @return string*/private static function AESEncrypt($str, $key){return openssl_encrypt($str, 'AES-128-ECB', $key, OPENSSL_RAW_DATA);}}$visi=new VisitorCardController();$uri = $visi->CustomerInfoCryptoUtil();header("Location:$uri");?>

数据展示

在自定义用户名片这里,需要注意的一个问题就是当域名渲染好后要通过sendMessage函数来更新信息

<?php
// 允许跨域
header("Access-Control-Allow-Origin:*");
header("Access-Control-Allow-Headers:*");
header("Access-Control-Allow-Methods:*");/*** 云客服,访客名片** 接入流程* 在线服务接入访客名片的操作流程分为 2 步:* 1. 访客端聊天窗数据埋点* 2. 客服端工作台访客信息展示*/// 这里替换一下公钥路径 ( 由云客服提供 )
define('VISITOR_CARD_PUB_KEY','./key.pem');class VisitorCardController
{//页面嵌入 访客名片public function actionIframeVisitorCard(){$params = $_GET['params'];$key = $_GET['key'];//RSA 公钥解密openssl_public_decrypt(base64_decode($key), $decrypted, file_get_contents(VISITOR_CARD_PUB_KEY));//AES解密 params$aesParams = self::AESDecrypt($params, $decrypted);//json数据转为数组$resData = json_decode($aesParams, 1);return $resData;}private static function AESDecrypt($strEncode, $key){return openssl_decrypt(base64_decode($strEncode), 'AES-128-ECB', $key, OPENSSL_RAW_DATA);}}
$visi=new VisitorCardController();
$data = $visi->actionIframeVisitorCard();$userId=$data['userId'];
$uname=$data['extInfo']['phone'];
$iframeKey=$_GET['iframeKey'];echo "id:".$userId."\n";
echo "user:".$uname."\n";?><!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><script type="text/javascript">function sendMessage(type, data) {const params = {};params.type = type;params.data = data;params.resource = 'csbridge';params.iframeKey = '<?php echo $iframeKey;?>'; // 从url参数获取,示例假设值为1window.parent.postMessage(JSON.stringify(params), '*');}sendMessage('updateUserInfo', {"userId" : "<?php echo $userId;?>", "userName" : "<?php echo $uname;?>"});</script></body>
</html>

PHP之自定义阿里云客服在线访客名片相关推荐

  1. 阿里云+python刷小小访客量 刷流量

    基于python3 很简单的把网页打开 再关 再打 我用的是mac系统 也就是linux吧 基本的代码可以自己修改 #coding=utf-8 import webbrowser as web imp ...

  2. 在线客服系统访客发送录音功能,在elementui中使用js-audio-recorder实现录音功能,然后上传文件发送出去...

    访客在聊天界面中可以发送语音,其实就是录音以后,调用上传接口,把录音文件发送给客服. 点击麦克图标以后,展示出一个elementui的dialog弹窗,里面展示四个功能按钮. 分别是,开始录音,结束录 ...

  3. 效率至上服务为先,在线客服系统让客服工作更轻松

    "超人也会累."这是一位95后客服的心声.和人直接打交道的工作都不会轻松.作为和客户联系最为密切的客服,承受的压力可想而知.很多人都说做客服是一座围城,在城墙外面看它的时候,觉得它 ...

  4. 智能客服vs人工客服,两者真水火不容?

    随着互联网.智能技术的不断发展,Chatgpt的到来引发各界热议,不少人认为Chatgpt将给各个领域带来翻天覆地的变化.而在客服行业,AI产物--智能客服早已落地并且被广泛运用,在Chatgpt爆火 ...

  5. 在线云客服管理系统、会话管理、访客管理、客户管理、工单管理、会话记录、考勤统计、数据报表、工单设置、全局设置、转人工服务、自动回复、客户标签、客服监控、客服系统、前端会话、客服管理、在线客服、人工客服

    在线云客服管理系统.会话管理.访客管理.客户管理.工单管理.会话记录.考勤统计.数据报表.工单设置.全局设置.转人工服务.自动回复.客户标签.客服监控.客服系统.前端会话.客服管理.在线客服 .人工客 ...

  6. 在线云客服管理系统、会话管理、访客管理、客户管理、工单管理、会话记录、考勤统计、数据报表、工单设置、全局设置、人工服务、自动回复、客户标签、客服监控、客服系统、前端会话、客服管理、在线客服 、人工客服

    在线云客服管理系统.会话管理.访客管理.客户管理.工单管理.会话记录.考勤统计.数据报表.工单设置.全局设置.转人工服务.自动回复.客户标签.客服监控.客服系统.前端会话.客服管理.在线客服 .人工客 ...

  7. 一、为了OFFER系列 | 阿里云天池赛在线编程:移动的圆

    @Author:Runsen 大四刷题拼offer系列,不拼不行啊 关于:阿里云天池赛在线编程的介绍. 阿里云天池赛在线编程:在线编程限时赛,参与刷题,提升能力,奖品多多,助你晋级拿offer! 本人 ...

  8. 阿里云服务器和 hexo 博客实战

    疫情在家,突然看到了阿里云推出了大学生在家实践计划(是心动的感觉).刚好看到别人分享的如何用阿里云建立了个人博客.所以实践了以下,这里做个教程给自己来个不时之需. 整个建立过程涉及到 hexo,ngi ...

  9. 微信小程序、微信公众号客服转私人微信号,实现24小时客服在线

    >>>> 之前写的,复制到这里而已,Go <<<<< 现在不少企业都有自己的微信公众号.服务号.小程序,其中也添加了客服功用.     但据所知, ...

最新文章

  1. ZooKeeper私人学习笔记
  2. 大型分布式网站术语分析 15 条,你知道几条?
  3. LeetCode:贪婪算法
  4. jvm是运行在操作系统之上的,他和硬件没有直接的交互
  5. TryCatchFinallyProcessHelper
  6. dirname,basename的用法与用途
  7. 很多人理解互联网是“年轻化”
  8. Gobinet/QMI-WWAN/ppp拨号区别
  9. mysql加begin报错,MySQL存储过程例子,不能在if else里面用begin end否则会报错Error Code:1064解决...
  10. paip.hql的调试故障排查流程总结
  11. python最全画地图,可视化数据
  12. shotcut视频压缩
  13. 如何集成支付宝到电脑网站
  14. RuntimeError: xxx.pth is a zip archive (did you mean to use torch.jit.load()?)
  15. Centos7编译安装Xen环境(vtpm)
  16. 日记侠:朋友圈一定要刷屏吗?
  17. java枚举类Enum入门理解
  18. 大学生须知:毕业当程序员想要提升“核心竞争力”,主要看这六点!
  19. C语言 目标文件和可执行文件(ELF文件)
  20. Unity3D之音乐音效的播放

热门文章

  1. linux 驱动笔记(四)
  2. 一个量化交易策略师的自白
  3. Linux系统ISO镜像文件下载地址
  4. C++约瑟夫环(又称丢手绢)解决---最简单的理解
  5. Excel宏(VBA)类模块的创建与调用
  6. 把一元兑换成1分、2分、5分的硬币,有几种换法?
  7. 免费沙箱软件模拟支付_小游戏虚拟支付沙箱测试报错
  8. 如何进入互联网行业,成为产品经理?没有项目经验如何转行当上产品经理?
  9. 腾讯云不同账号内网联通
  10. 实验 9 音频信号采集及处理