/** * 企业微信JS-SDK调用 */ let WxWork = function () { // 企业微信JS-SDK this.wxwork = null; /** * 初始化企业微信JS-SDK * @param {Object} params - 初始化参数 * @param {string} params.corpId - 企业ID * @param {string} params.agentId - 应用ID * @param {string} params.timestamp - 时间戳 * @param {string} params.nonceStr - 随机字符串 * @param {string} params.signature - 签名 * @param {Array} params.jsApiList - 需要使用的JS接口列表 */ this.init = function (params) { if (typeof wx !== 'undefined' && wx.config) { // 小程序环境下的企业微信 this.wxwork = wx; } else if (typeof WWOpenData !== 'undefined') { // H5环境下的企业微信 this.wxwork = WWOpenData; } else { console.error('企业微信JS-SDK未加载'); return false; } this.wxwork.config({ beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题 debug: false, // 开启调试模式 corpId: params.corpId, // 必填,企业号的唯一标识 agentId: params.agentId, // 必填,企业微信应用ID timestamp: params.timestamp, // 必填,生成签名的时间戳 nonceStr: params.nonceStr, // 必填,生成签名的随机串 signature: params.signature, // 必填,签名 jsApiList: params.jsApiList || [ 'openUserProfile', 'openEnterpriseChat', 'getContext', 'getCurExternalContact', 'openExistedChatWithMsg' ] // 必填,需要使用的JS接口列表 }); return true; }; /** * 添加企业微信联系人 * @param {Object} params - 参数 * @param {string} params.userId - 用户ID * @param {Function} success - 成功回调 * @param {Function} fail - 失败回调 */ this.addContact = function (params, success, fail) { if (!this.wxwork) { console.error('企业微信JS-SDK未初始化'); if (fail) fail('企业微信JS-SDK未初始化'); return; } this.wxwork.ready(() => { this.wxwork.invoke('openUserProfile', { type: 'external', // 外部联系人 userId: params.userId // 用户ID }, (res) => { if (res.err_msg === 'openUserProfile:ok') { if (success) success(res); } else { console.error('打开用户资料失败:', res); if (fail) fail(res.err_msg); } }); }); }; /** * 打开企业微信客服会话 * @param {Object} params - 参数 * @param {string} params.corpId - 企业ID * @param {string} params.url - 客服URL * @param {string} params.name - 会话名称 * @param {Function} success - 成功回调 * @param {Function} fail - 失败回调 */ this.openCustomerService = function (params, success, fail) { if (!this.wxwork) { console.error('企业微信JS-SDK未初始化'); if (fail) fail('企业微信JS-SDK未初始化'); return; } this.wxwork.ready(() => { // #ifdef MP-WEIXIN if (typeof wx !== 'undefined' && wx.openCustomerServiceChat) { // 微信小程序环境 wx.openCustomerServiceChat({ extInfo: { url: params.url }, corpId: params.corpId, showMessageCard: true, sendMessageTitle: params.sendMessageTitle || '', sendMessagePath: params.sendMessagePath || '', sendMessageImg: params.sendMessageImg || '' }); if (success) success(); } // #endif // #ifdef H5 else if (typeof WWOpenData !== 'undefined') { // H5环境 window.location.href = params.url; if (success) success(); } // #endif else { // 直接跳转链接 window.location.href = params.url; if (success) success(); } }); }; /** * 生成企业微信活码链接 * @param {Object} params - 参数 * @param {string} params.configId - 活码配置ID * @param {string} params.userId - 用户ID * @returns {string} 活码链接 */ this.generateContactUrl = function (params) { // 企业微信活码链接格式 const baseUrl = 'https://work.weixin.qq.com/kfid'; if (params.configId) { return `${baseUrl}/${params.configId}`; } return null; }; /** * 检查环境是否支持企业微信 * @returns {boolean} 是否支持 */ this.isSupported = function () { // #ifdef MP-WEIXIN return typeof wx !== 'undefined' && wx.openCustomerServiceChat; // #endif // #ifdef H5 return typeof WWOpenData !== 'undefined' || /wxwork/i.test(navigator.userAgent); // #endif return false; }; /** * 获取当前环境信息 * @returns {Object} 环境信息 */ this.getEnvironment = function () { // #ifdef MP-WEIXIN return { platform: 'miniprogram', isWxWork: false, supportContact: typeof wx !== 'undefined' && wx.openCustomerServiceChat }; // #endif // #ifdef H5 const isWxWork = /wxwork/i.test(navigator.userAgent); return { platform: 'h5', isWxWork: isWxWork, supportContact: isWxWork || typeof WWOpenData !== 'undefined' }; // #endif return { platform: 'unknown', isWxWork: false, supportContact: false }; }; } export { WxWork }