@tnwx/wxcp
Version:
TNWX 微信系开发脚手架之极速开发企业微信/企业号
593 lines • 26.6 kB
JavaScript
"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