企业微信的JSSDK,调用及使用方法
1、首先要引入企业微信的sdk
<script src="//res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js" referrerpolicy="origin"></script>
<script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
2、调用企业微信的两个方法config和agentConfig
config注入的是企业的身份与权限,而agentConfig注入的是应用的身份与权限。尤其是当调用者为第三方服务商时,通过config无法准确区分出调用者是哪个第三方应用,而在部分场景下,又必须严谨区分出第三方应用的身份,此时即需要通过agentConfig来注入应用的身份信息。
wx.agentConfig({
corpid: '', // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: '', // 必填,企业微信的应用id (e.g. 1000247)
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: ['selectExternalContact'], //必填,传入需要使用的接口名称
success: function(res) {
// 回调
},
fail: function(res) {
if(res.errMsg.indexOf('function not exist') > -1){
alert('版本过低请升级')
}
}
});
3、判断当前客户端版本是否支持指定JS接口,作用就是你调用企业微信的api都是要通过这个接口去判断是否可用,可用返回true,不可用返回false
注意:在使用为企业微信api 方法时,必须要通过wx.agentConfig()方法!!!
比如我想调用打开会话的api:openEnterpriseChat
wx.checkJsApi({
jsApiList: ['openEnterpriseChat'], // 需要检测的JS接口列表 (就需要检测会话的api是否能用)
success: function(res) {
// 以键值对的形式返回,可用的api值true,不可用为false
// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
}
});```
4、下面是封装了一个方法
接收一个参数(需要调用的api)
export function initAgentConfig({ jsApiList }) {
return new Promise((resolve, reject) => {
const params = {
url: window.location.href.split("#")[0],
}
const list = jsApiList ? ['checkAPI', ...jsApiList] : []
// 获取config数 最好是让后端写一个接口,返回wx.agentConfig需要的参数
getAgentSignature(params).then(res => {
wx.agentConfig({
corpid: '', // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: '', // 必填,企业微信的应用id (e.g. 1000247)
timestamp: '', // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: list, //必填,传入需要使用的接口名称
success: function (res) {
checkAPI(list)
.then(() => {
resolve(true)
})
.catch(() => {
reject()
});
},
fail: function (res) {
if (res.errMsg.indexOf('function not exist') > -1) {
alert('版本过低请升级')
}
}
});
});
function checkAPI(jsApiList) {
return new Promise((resolve, reject) => {
wx.checkJsApi({
jsApiList, // 需要检测的JS接口列表
success: function (res) {
// 以键值对的形式返回,可用的api值true,不可用为false
// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
resolve(true)
},
fail: (res) => {
reject()
}
});
})
}
})
}```
使用案例
// 分享消息(卡片)
initAgentConfig({ jsApiList: 'initAgentConfig' }).then(res => {
if (res) {
wx.onMenuShareAppMessage({
title: '', // 分享标题
desc: '', // 分享描述
link: '', // 分享链接;在微信上分享时,该链接的域名必须与企业某个应用的可信域名一致
imgUrl: '', // 分享图标
enableIdTrans: 1, // 是否开启id转译,不填默认为0
success: function () {
// 用户确认分享后执行的回调函数
},
error: function (res) {
if (res.errMsg.indexOf('no permission') > 0) {
alert('未agentConfig')
}
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
}
})
// 打开会话
initAgentConfig({ jsApiList: 'openEnterpriseChat' }).then(res => {
if (res) {
wx.openEnterpriseChat({
// 注意:userIds和externalUserIds至少选填一个。内部群最多2000人;外部群最多500人;如果有微信联系人,最多40人
userIds: '', //参与会话的企业成员列表,格式为userid1;userid2;...,用分号隔开。
externalUserIds: '', // 参与会话的外部联系人列表,格式为userId1;userId2;…,用分号隔开。
groupName: '讨论组', // 会话名称。单聊时该参数传入空字符串""即可。
chatId: "CHATID", // 若要打开已有会话,需指定此参数。如果是新建会话,chatId必须为空串
success: function (res) {
var chatId = res.chatId; //返回当前群聊ID,仅当使用agentConfig注入该接口权限时才返回chatId
// 回调
},
fail: function (res) {
if (res.errMsg.indexOf('function not exist') > -1) {
alert('版本过低请升级')
}
}
});
}
})
// userIds:是打开客户群
// externalUserIds:打开个人进行聊天
// 根据业务需求自行调整