阿里云旺H5聊天

news/2024/11/23 13:35:59/

为什么80%的码农都做不了架构师?>>>   hot3.png

需求:一个商城app,想通过阿里云旺实现和淘宝一样的多商家多客服的功能。

方案1:商城自营申请一个云旺id,商城下申请子客服给各个商家。   

缺点:目前云旺一个appid可以申请一个主客服和5个子客服。想突破5个子客服需向淘宝申请。

方案2:每个商家申请一个appid,这样每个商家都可以有一个主客服和5个子客服。

缺点:用户在各个商家内不是互通的,需在每个商家云旺账号里同步用户数据。各个云旺id互通需向淘宝申请。

方案3:用阿里openim把客服当普通用户处理,商家通过网页和用户聊天。

缺点:客服不能用千牛,也自然没有智能分流等等,网页版比较简陋。

以下为方案3代码,比较简陋,仅作个人记录。

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>在线客服</title><style>.demo{position: absolute;right: 0;bottom: 0;width: 700px;height: 470px;}</style>
</head>
<body>
<div class="demo" id="J_demo"></div>
<!--[if lt IE 9]>
<script src="https://g.alicdn.com/aliww/ww/json/json.js" charset="utf-8"></script>
<![endif]-->
<!-- 自动适配移动端与pc端 -->
<script src="https://g.alicdn.com/aliww/??h5.imsdk/2.1.5/scripts/yw/wsdk.js,h5.openim.kit/0.4.0/scripts/kit.js" charset="utf-8"></script>
<script>// http://www.taobao.com/market/seller/openim/kit.php?uid=test0&to=test1&appkey=23018936&pwd=123456&fullscreenvar search = location.search.substring(1);var s = search.split('&'),kv;var result = {};for(var i = 0, len = s.length; i < len; i++){kv = s[i].split('=');result[kv[0]] = decodeURIComponent(kv[1]);}var touid = result.touid ? result.touid : 'gele66';// 在url上加上fullscreen参数,即可变为全屏if(result.fullscreen){var d = document.getElementById('J_demo');d.parentNode.removeChild(d);}window.onload = function(){WKIT.init({container: result.fullscreen ? null : document.getElementById('J_demo'),uid: 'gele_shop4',appkey:  '24464156',credential: 'c3bb188708bffa9f11d476a0793fdc6e',touid: touid, theme: 'red',//groupId: '162074220',//sendMsgToCustomService:true,  //使用客服模式, 默认值: falsetitle: '客服',sendBtn:true,logo: ' http://alm.com//seller_imgs/seller_logo/logo_thumb/1496688088943756398.jpg',avatar: 'http://alm.com//seller_imgs/seller_logo/logo_thumb/1496688088943756398.jpg',toAvatar:'https://img.alicdn.com/tps/TB1BsZ6JpXXXXaZXpXXXXXXXXXX-81-81.png',//pluginUrl: 'file:///F:/phpStudy/WWW/aa/user.html',customUrl: 'file:///F:/phpStudy/WWW/aa/user.html?touid='+touid  //最近联系人页面});}</script>
</body>
</html><!--文档地址:http://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.fFqC1D&treeId=41&articleId=103361&docType=1   一定要认真看一遍-->

 

<!--user.html-->
<!DOCTYPE html>
<html>
<head><title>最近联系人</title><style>.contact>div>a{display: block;height: 30px;}.contact>div>a>img{height: 30px;width: 30px;float: left;}.contact .chat-user-name{display: inline-block;font-size: 20px;margin-left: 3px;float: left;color:#9b9b9b;}.contact .chat-user{margin: 2px 0px;}.msg_num{display: none;float: left;height: 16px;min-width:16px;text-align: center;margin-left: 4px;color: white;margin-top: 5px;line-height: 16px;font-size: 8px;border-radius: 16px;background-color: #07bbef;}.current{background-color: #dc2a2e;}.current .chat-user-name{color:#fff;}</style>
</head>
<body><div class='contact'></div><script src="https://g.alicdn.com/aliww/h5.openim.sdk/1.0.6/scripts/wsdk.js"></script><script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script><script>function getQueryVariable(variable){var query = window.location.search.substring(1);var vars = query.split("&");for (var i=0;i<vars.length;i++) {var pair = vars[i].split("=");if(pair[0] == variable){return pair[1];}}return(false);}var openIm = null;function OpenIm() {}var touid = getQueryVariable("touid");var sdk = new WSDK();//登录im帐号OpenIm.prototype.imLogin = function () {sdk.Base.login({uid:'gele_shop4',appkey: '24464156',credential: 'c3bb188708bffa9f11d476a0793fdc6e',timeout: 5000, //登录超时时间success: function (data) {console.log('login success', data);openIm.imGetRecentContact();},error: function (error) {console.log('login fail', error);alert("消息获取失败,请刷新重试");}});}//设置与某人的消息已读OpenIm.prototype.setUserReadState = function () {var obj = this;sdk.Chat.setReadState({touid: touid,timestamp: Math.floor((+new Date()) / 1000),success: function (data) {console.log('设置已读成功', data);},error: function (error) {console.log('设置已读失败', error);}});}//获取一个月内的最近联系人OpenIm.prototype.imGetRecentContact = function () {var obj = this;sdk.Base.getRecentContact({count: 10,success: function (data) {//console.log(data);data = data.data;var list = data.cnts;var elementString='';list.forEach(function (item) {//获取到uidvar uid = sdk.Base.getNick(item.uid);elementString+='<div class="chat-user">';if(uid == touid){elementString+='<a uid='+uid+' class="current" >';}else{elementString+='<a uid='+uid+'>';}elementString+='<img class="chat-avatar" src="https://img.alicdn.com/tps/TB1BsZ6JpXXXXaZXpXXXXXXXXXX-81-81.png" >';elementString+='<div class="chat-user-name">'+uid+'</div><div class="msg_num n'+uid+'"></div></a></div>';})$('.contact').append(elementString);openIm.setUserReadState();//获取联系人未读消息数openIm.getUsersUnreadMsgCount();},error: function (error) {console.log('获取最近联系人及最后一条消息内容失败', error);}});}//获取联系人未读消息数OpenIm.prototype.getUsersUnreadMsgCount = function () {var obj = this;//var recentTribe = [];//var unReadTotals = 0; //未读消息总条数sdk.Base.getUnreadMsgCount({count: 10, //一次获取的条数success: function (data) {console.log(data);var list = data.data;list.forEach(function (item) {//前8位是chntribe表示群if (item.contact.substring(0, 8) === 'chntribe') {//recentTribe.push(item);} else {//document.write(item.contact.substring(8) + '在' + getLocalTime(item.timestamp) + ',');//document.write('给我发了' + item.msgCount + '条消息,最后一条消息是在' + getLocalTime(item.lastmsgTime) + '发的<br />');//unReadTotals += item.msgCount;if( touid != item.contact.substring(8)){$('.n'+item.contact.substring(8)).text(item.msgCount);$('.n'+item.contact.substring(8)).show();console.log(item.contact.substring(8) + '给我发了' + item.msgCount + '条消息');}}});//document.write('未读消息总条数:', unReadTotals);},error: function (error) {//document.write('获取未读消息的条数失败', error);}});}$(function () {openIm = new OpenIm();openIm.imLogin();//每10妙更新未读消息window.setInterval(function(){openIm.getUsersUnreadMsgCount();}, 10000);});$("body").delegate(".contact a","click",function(){touid = $(this).attr('uid');window.open('kit.html?touid='+touid, 'webcall', 'toolbar=no,status=no,scrollbars=0,resizable=0,menubar=0,location=0,width=1000,height=700');});</script>
</body>
</html>

 

转载于:https://my.oschina.net/dhyana/blog/1186925


http://www.ppmy.cn/news/883770.html

相关文章

阿里图标的引入使用即灵活修改大小颜色

网址 iconfont-阿里巴巴矢量图标库iconfont-国内功能很强大且图标内容很丰富的矢量图标库&#xff0c;提供矢量图标下载、在线存储、格式转换等功能。阿里巴巴体验团队倾力打造&#xff0c;设计和前端开发的便捷工具https://www.iconfont.cn/ 1.进入注册登录一波&#xff0c;有…

阿里云旺(即时通讯)基础使用

在App的oncreate方法中 //必须首先执行这部分代码, 如果在":TCMSSevice"进程中&#xff0c;无需进行云旺&#xff08;OpenIM&#xff09;和app业务的初始化&#xff0c;以节省内存;SysUtil.setApplication(this);if(SysUtil.isTCMSServiceProcess(this)){return;}//…

怎么样装修好阿里巴巴国际站产品边框进度条环绕围绕效果动态gif制作代码全屏展示图片首页装修技巧方法教程视频全球旺铺阿里旺铺自定义内容装修 模板模块设置内容

如何运营好阿里巴巴国际站店铺呢&#xff0c;首先先要让自己店铺美观起来&#xff0c;好比如自己门店一样。需要装修起来才有更有吸引力或者让用户停留在页面当中。 阿里巴巴国际站装修代码产品首页产品边框进度条环绕围绕移动效果首页动画效果模板模块装修代码装修技巧方法 装…

阿里旺铺装修的主要区域在哪里

阿里旺铺装修的如何&#xff0c;很大程度会影响店铺的宝贝排名和销量情况。如果店铺装修得好的话&#xff0c;销量和排名都不是什么问题&#xff0c;但是如果您的店铺装修很差的话就会导致店铺排名和销量下降&#xff0c;那么阿里巴巴旺铺装修要抓哪几地方呢&#xff1f;接下来…

旺铺html框架代码,阿里旺铺装修代码的fx.accordion组件使用详解及HTML模板

本文具体介绍一下阿里巴巴提供的手风琴效果组件(fx. Accordion)的使用和列出具体的HTML代码。手风琴组件(fx. accordion)是从特点上有点跟fx.tabs内容切换组件有点类似&#xff0c;但又有本质上的区别&#xff0c;下文会具体讲解 以一个示例HTML CSS代码来说明一下fx. accordio…

阿里巴巴图片滚动代码html,阿里旺铺装修代码的fx.roll滚动特效组件使用详解及HTML代码示例...

原标题&#xff1a;阿里旺铺装修代码的fx.roll滚动特效组件使用详解及HTML代码示例 本文具体介绍一下阿里巴巴提供的滚动内容组件(FX.ROLL )的使用和列出具体的HTML代码。滚动组件是在制定的容器里面无缝滚动的特效&#xff0c;适合用于场景图片&#xff0c;证书图片的滚动展示…

报错400是什么怎么解决呢?

首先要了解400错误是什么错误&#xff1a; HTTP状态码400表示"错误请求"。它是一种客户端错误状态码&#xff0c;表示服务器无法理解请求的语法或参数。当服务器收到一个无效的请求时&#xff0c;通常会返回400错误码。这可能是由于请求中缺少必要的参数、参数格式错…

石子合并

题目 设有 N 堆石子排成一排&#xff0c;其编号为 1,2,3,…,N 。 每堆石子有一定的质量&#xff0c;可以用一个整数来描述&#xff0c;现在要将这 N 堆石子合并成为一堆。 每次只能合并相邻的两堆&#xff0c;合并的代价为这两堆石子的质量之和&#xff0c;合并后与这两堆石…