UNPKG

@tnwx/wxcp

Version:

TNWX 微信系开发脚手架之极速开发企业微信/企业号

593 lines 26.6 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const util = require("util"); const kits_1 = require("@tnwx/kits"); const accesstoken_1 = require("@tnwx/accesstoken"); /** * @author Javen * @copyright javendev@126.com * @description 外部联系人管理 */ class QyExContact { /** * 获取配置了客户联系功能的成员列表 * @param accessToken {AccessToken} */ static getFollowUserList(accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.getFollowUserListUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpGet(url); }); } /** * 配置客户联系「联系我」方式 * @param type 联系方式类型,1-单人, 2-多人 * @param scene 场景,1-在小程序中联系,2-通过二维码联系,3-在线问诊 * @param style 在小程序中联系时使用的控件样式 * @param remark 联系方式的备注信息,用于助记,不超过30个字符 * @param skipVerify 外部客户添加时是否无需验证,默认为true * @param state 自定义的state参数 * @param user 使用该联系方式的用户userID列表,在type为1时为必填,且只能有一个 * @param party 使用该联系方式的部门id列表,只在type为2时有效 * @param accessToken {AccessToken} */ static addContactWay(type, scene, style, remark, skipVerify, state, user, party, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.addContactWayUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ type: type, scene: scene, style: style, remark: remark, skip_verify: skipVerify, state: state, user: user, party: party })); }); } /** * 更新企业已配置的「联系我」方式 * @param configId * @param style * @param remark * @param skipVerify * @param state * @param user * @param party * @param accessToken {AccessToken} */ static updateContactWay(configId, style, remark, skipVerify, state, user, party, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.updateContactWayUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ config_id: configId, style: style, remark: remark, skip_verify: skipVerify, state: state, user: user, party: party })); }); } /** * 获取企业已配置的「联系我」方式 * @param configId 联系方式的配置id * @param accessToken {AccessToken} */ static getContactWay(configId, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.getContactWayUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ config_id: configId })); }); } /** * 删除企业已配置的「联系我」方式 * @param configId 联系方式的配置id * @param accessToken {AccessToken} */ static delContactWay(configId, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.delContactWayUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ config_id: configId })); }); } /** * 获取客户列表 * @param userId 企业成员的userid * @param accessToken {AccessToken} */ static getUserList(userId, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.getUserListUrl, accessToken.getAccessToken, userId); return kits_1.HttpKit.getHttpDelegate.httpGet(url); }); } /** * 获取客户列表 * @param externalUserId 外部联系人的userid * @param accessToken {AccessToken} */ static getUserInfo(externalUserId, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.getUserInfoUrl, accessToken.getAccessToken, externalUserId); return kits_1.HttpKit.getHttpDelegate.httpGet(url); }); } /** * 修改客户备注信息 * @param userId * @param externalUserId * @param remark * @param description * @param remarkCompany * @param remarkMobiles * @param remarkPicMediaid * @param accessToken */ static updateRemark(userId, externalUserId, remark, description, remarkCompany, remarkMobiles, remarkPicMediaid, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.updateRemarkUrl, accessToken.getAccessToken, externalUserId); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ userid: userId, external_userid: externalUserId, remark: remark, description: description, remark_company: remarkCompany, remark_mobiles: remarkMobiles, remark_mediaid: remarkPicMediaid })); }); } /** * 获取企业标签库 * @param tagId * @param accessToken */ static getCorpTagList(tagId, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.getCorpTagListUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ tag_id: tagId })); }); } /** * 添加企业客户标签 * @param groupId 标签组id * @param groupName 标签组名称 * @param order 标签组次序值 * @param tag 标签列表 * @param accessToken {AccessToken} */ static addCorpTag(groupId, groupName, order, tag, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.addCorpTagUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ group_id: groupId, group_name: groupName, order: order, tag: tag })); }); } /** * 编辑企业客户标签 * @param id 标签或标签组的id列表 * @param name 新的标签或标签组名称 * @param order 标签/标签组的次序值 * @param accessToken {AccessToken} */ static editCorpTag(id, name, order, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.editCorpTagUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ id: id, name: name, order: order })); }); } /** * 删除企业客户标签 * @param tagId 标签的id列表 * @param groupId 标签组的id列表 * @param accessToken {AccessToken} */ static delCorpTag(tagId, groupId, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.delCorpTagUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ tag_id: tagId, group_id: groupId })); }); } /** * 编辑客户企业标签 * @param userId 添加外部联系人的userid * @param externalUserId 外部联系人userid * @param addTag 要标记的标签列表 * @param removeTag 要移除的标签列表 * @param accessToken */ static markTag(userId, externalUserId, addTag, removeTag, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.markTagUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ userid: userId, external_userid: externalUserId, add_tag: addTag, remove_tag: removeTag })); }); } /** * 获取客户群列表 * @param offset 分页,偏移量 * @param limit 分页,预期请求的数据量,取值范围 1 ~ 1000 * @param statusFilter 群状态过滤。0 - 普通列表 1 - 离职待继承 2 - 离职继承中 3 - 离职继承完成 * @param ownerFilter 群主过滤。如果不填,表示获取全部群主的数据 * @param accessToken {AccessToken} */ static getGroupChatList(offset, limit, statusFilter = 0, ownerFilter, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.getGroupChatListUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ status_filter: statusFilter, owner_filter: ownerFilter, offset: offset, limit: limit })); }); } /** * 获取客户群详情 * @param chatId 客户群ID * @param accessToken {AccessToken} */ static getGroupChat(chatId, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.getGroupChatUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ chat_id: chatId })); }); } /** * 添加企业群发消息任务 * @param externalUserId 客户的外部联系人id列表,不可与sender同时为空,最多可传入1万个客户 * @param sender 发送企业群发消息的成员userid,不可与external_userid同时为空 * @param text 文本消息 * @param image 图片消息 * @param link 链接消息 * @param miniprogram 小程序消息 * @param accessToken {AccessToken} */ static addMsgTemplate(externalUserId, sender, text, image, link, miniprogram, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.addMsgTemplateUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ external_userid: externalUserId, sender: sender, text: text, image: image, link: link, miniprogram: miniprogram })); }); } /** * 获取企业群发消息发送结果 * @param msgId 群发消息的id * @param accessToken {AccessToken} */ static getGroupMsgResult(msgId, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.getGroupMsgResultUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ msgid: msgId })); }); } /** * 发送新客户欢迎语 * @param welcomeCode 通过添加外部联系人事件推送给企业的发送欢迎语的凭证,有效期为20秒 * @param text 文本消息 * @param image 图片消息 * @param link 链接消息 * @param miniprogram 小程序消息 * @param accessToken {AccessToken} */ static sendWelcomeMsg(welcomeCode, text, image, link, miniprogram, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.sendWelcomeMsgUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ welcome_code: welcomeCode, text: text, image: image, link: link, miniprogram: miniprogram })); }); } /** * 添加群欢迎语素材 * @param text 文本消息 * @param image 图片消息 * @param link 链接消息 * @param miniprogram 小程序消息 * @param accessToken {AccessToken} */ static addGroupWelcomeTemplate(text, image, link, miniprogram, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.addGroupWelcomeTemplateUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ text: text, image: image, link: link, miniprogram: miniprogram })); }); } /** * 编辑群欢迎语素材 * @param templateId 群欢迎语的素材id * @param text 文本消息 * @param image 图片消息 * @param link 链接消息 * @param miniprogram 小程序消息 * @param accessToken {AccessToken} */ static editGroupWelcomeTemplate(templateId, text, image, link, miniprogram, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.editGroupWelcomeTemplateUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ template_id: templateId, text: text, image: image, link: link, miniprogram: miniprogram })); }); } /** * 获取群欢迎语素材 * @param templateId 群欢迎语的素材id * @param accessToken {AccessToken} */ static getGroupWelcomeTemplate(templateId, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.getGroupWelcomeTemplateUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ template_id: templateId })); }); } /** * 获取群欢迎语素材 * @param templateId 群欢迎语的素材id * @param accessToken {AccessToken} */ static delGroupWelcomeTemplate(templateId, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.delGroupWelcomeTemplateUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ template_id: templateId })); }); } /** * 获取离职成员的客户列表 * @param pageId * @param pageSize * @param accessToken {AccessToken} */ static getUnAssignedList(pageId, pageSize, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.getUnAssignedListUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ page_id: pageId, page_size: pageSize })); }); } /** * 离职成员的外部联系人再分配 * @param externalUserId 外部联系人的userid,注意不是企业成员的帐号 * @param handOverUserId 离职成员的userid * @param takeOverUserId 接替成员的userid * @param accessToken {AccessToken} */ static transferContact(externalUserId, handOverUserId, takeOverUserId, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.transferContactUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ external_userid: externalUserId, handover_userid: handOverUserId, takeover_userid: takeOverUserId })); }); } /** * 离职成员的群再分配 * @param chatIdList 需要转群主的客户群ID列表 * @param newOwner 新群主ID * @param accessToken {AccessToken} */ static transferGroupChat(chatIdList, newOwner, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.transferGroupChatUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ chat_id_list: chatIdList, new_owner: newOwner })); }); } /** * 获取联系客户统计数据 * @param startTime 数据起始时间 * @param endTime 数据结束时间 * @param userId 用户ID列表 * @param partyId 部门ID列表 * @param accessToken {AccessToken} */ static getUserBehaviorData(startTime, endTime, userId, partyId, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.getUserBehaviorDataUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ userid: userId, partyid: partyId, start_time: startTime, end_time: endTime })); }); } /** * 获取客户群统计数据 * @param dayBeginTime 开始时间,填当天开始的0分0秒(否则系统自动处理为当天的0分0秒)。取值范围:昨天至前60天 * @param ownerFilter 群主过滤,如果不填,表示获取全部群主的数据 * @param orderBy 排序方式。1 - 新增群的数量 2 - 群总数 3 - 新增群人数 4 - 群总人数 * @param orderAsc 是否升序。0-否;1-是。默认降序 * @param offset 分页,偏移量, 默认为0 * @param limit 分页,预期请求的数据量,默认为500,取值范围 1 ~ 1000 * @param accessToken {AccessToken} */ static getGroupChatStatistic(dayBeginTime, ownerFilter, orderBy, orderAsc, offset, limit, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.QyAccessTokenApi.getAccessToken(); } let url = util.format(this.getGroupChatStatisticUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ day_begin_time: dayBeginTime, owner_filter: ownerFilter, order_by: orderBy, order_asc: orderAsc, offset: offset, limit: limit })); }); } } exports.QyExContact = QyExContact; QyExContact.getFollowUserListUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_follow_user_list?access_token=%s'; QyExContact.addContactWayUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/add_contact_way?access_token=%s'; QyExContact.updateContactWayUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/update_contact_way?access_token=%s'; QyExContact.getContactWayUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_contact_way?access_token=%s'; QyExContact.delContactWayUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/del_contact_way?access_token=%s'; QyExContact.getUserListUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/list?access_token=%s&userid=%s'; QyExContact.getUserInfoUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get?access_token=%s&external_userid=%s'; QyExContact.updateRemarkUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/remark?access_token=%s'; QyExContact.getCorpTagListUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_corp_tag_list?access_token=%s'; QyExContact.addCorpTagUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/add_corp_tag?access_token=%s'; QyExContact.editCorpTagUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/edit_corp_tag?access_token=%s'; QyExContact.delCorpTagUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/del_corp_tag?access_token=%s'; QyExContact.markTagUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/mark_tag?access_token=%s'; QyExContact.getGroupChatListUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/groupchat/list?access_token=%s'; QyExContact.getGroupChatUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/groupchat/get?access_token=%s'; QyExContact.addMsgTemplateUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/add_msg_template?access_token=%s'; QyExContact.getGroupMsgResultUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_group_msg_result?access_token=%s'; QyExContact.sendWelcomeMsgUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/send_welcome_msg?access_token=%s'; QyExContact.addGroupWelcomeTemplateUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/group_welcome_template/add?access_token=%s'; QyExContact.editGroupWelcomeTemplateUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/group_welcome_template/edit?access_token=%s'; QyExContact.getGroupWelcomeTemplateUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/group_welcome_template/get?access_token=%s'; QyExContact.delGroupWelcomeTemplateUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/group_welcome_template/del?access_token=%s'; QyExContact.getUnAssignedListUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_unassigned_list?access_token=%s'; QyExContact.transferContactUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/transfer?access_token=%s'; QyExContact.transferGroupChatUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/groupchat/transfer?access_token=%s'; QyExContact.getUserBehaviorDataUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_user_behavior_data?access_token=%s'; QyExContact.getGroupChatStatisticUrl = 'https://qyapi.weixin.qq.com/cgi-bin/externalcontact/groupchat/statistic?access_token=%s'; //# sourceMappingURL=QyExContact.js.map