@tnwx/wxmp
Version:
TNWX 微信系开发脚手架之极速开发微信公众号
396 lines • 14.7 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 accesstoken_1 = require("@tnwx/accesstoken");
const kits_1 = require("@tnwx/kits");
/**
* @author Javen
* @copyright javendev@126.com
* @description 客服消息
*/
class CustomServiceApi {
/**
* 邀请绑定客服帐号
* @param kf_account 完整客服帐号,格式为:帐号前缀@公众号微信号
* @param inviteWx 接收绑定邀请的客服微信号
* @param accessToken
*/
static inviteWorker(kf_account, inviteWx, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.inviteUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
kf_account: kf_account,
invite_wx: inviteWx
}));
});
}
/**
* 获取在线客服
* @param accessToken
*/
static getOnlineKfList(accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.getOnlineUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpGet(url);
});
}
/**
* 添加客服帐号
* @param response
* @param kf_account 完整客服账号,格式为:账号前缀@公众号微信
* @param nickname 客服昵称,最长6个汉字或12个英文字符
* @param password 客服账号登录密码,格式为密码明文的32位加密MD5值。该密码仅用于在公众平台官网的多客服功能中使用,若不使用多客服功能,则不必设置密码
* @param accessToken
*/
static addKfAccount(kf_account, nickname, password, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.addKfAccountUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
kf_account: kf_account,
nickname: nickname,
password: password
}));
});
}
/**
* 修改客服帐号
* @param response
* @param kf_account
* @param nickname
* @param password
* @param accessToken
*/
static updateKfAccount(kf_account, nickname, password, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.updateKfAccountUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
kf_account: kf_account,
nickname: nickname,
password: password
}));
});
}
/**
* 删除客服帐号
* @param response
* @param kf_account
* @param accessToken
*/
static delKfAccount(kf_account, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.delKfAccountUrl, accessToken.getAccessToken, kf_account);
return kits_1.HttpKit.getHttpDelegate.httpGet(url);
});
}
/**
* 设置客服帐号的头像
* @param response
* @param kf_account
* @param filePath 头像图片文件必须是jpg格式,推荐使用640*640大小的图片以达到最佳效果
* @param accessToken
*/
static uploadKfAccountHeadImg(kf_account, filePath, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.uploadKfHeadImgUrl, accessToken.getAccessToken, kf_account);
return kits_1.HttpKit.getHttpDelegate.upload(url, filePath);
});
}
/**
* 获取所有客服账号
* @param accessToken
*/
static getKfList(accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.getKfListUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpGet(url);
});
}
/**
* 发送客服消息
* @param response
* @param json 各种消息的JSON数据包
* @param kf_account 以某个客服帐号来发消息
* @param accessToken
*/
static sendMsg(msgObj, kf_account, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.customMessageUrl, accessToken.getAccessToken);
let json = '';
if (kf_account) {
msgObj.customservice = {
kf_account: kf_account
};
}
json = JSON.stringify(msgObj);
if (accesstoken_1.ApiConfigKit.isDevMode()) {
console.debug(`发送客服消息JSON ${json}`);
}
return kits_1.HttpKit.getHttpDelegate.httpPost(url, json);
});
}
/**
* 发送文本客服消息
* @param response
* @param openId
* @param text
* @param accessToken
*/
static sendText(openId, text, kf_account, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
return this.sendMsg({
touser: openId,
msgtype: 'text',
text: {
content: text
}
}, kf_account, accessToken);
});
}
/**
* 发送图片消息
* @param response
* @param openId
* @param text
* @param accessToken
*/
static sendImage(openId, media_id, kf_account, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
return this.sendMsg({
touser: openId,
msgtype: 'image',
image: {
media_id: media_id
}
}, kf_account, accessToken);
});
}
/**
* 发送语音消息
* @param response
* @param openId
* @param media_id
* @param accessToken
*/
static sendVoice(openId, media_id, kf_account, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
return this.sendMsg({
touser: openId,
msgtype: 'voice',
voice: {
media_id: media_id
}
}, kf_account, accessToken);
});
}
/**
* 发送视频消息
* @param response
* @param openId
* @param media_id
* @param title
* @param description
* @param accessToken
*/
static sendVideo(openId, media_id, title, description, kf_account, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
return this.sendMsg({
touser: openId,
msgtype: 'video',
video: {
media_id: media_id,
title: title,
description: description
}
}, kf_account, accessToken);
});
}
/**
* 发送音乐消息
* @param response
* @param openId
* @param title
* @param description
* @param musicurl
* @param hqmusicurl
* @param thumb_media_id 缩略图/小程序卡片图片的媒体ID,小程序卡片图片建议大小为520*416
* @param accessToken
*/
static sendMusic(openId, title, description, musicurl, hqmusicurl, thumb_media_id, kf_account, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
return this.sendMsg({
touser: openId,
msgtype: 'music',
music: {
title: title,
description: description,
musicurl: musicurl,
hqmusicurl: hqmusicurl,
thumb_media_id: thumb_media_id
}
}, kf_account, accessToken);
});
}
/**
* 发送图文消息
* @param response
* @param openId
* @param articles
* @param accessToken
*/
static sendNews(openId, articles, kf_account, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
return this.sendMsg({
touser: openId,
msgtype: 'news',
news: {
articles: articles
}
}, kf_account, accessToken);
});
}
/**
* 发送图文消息(点击跳转到图文消息页面)
* @param response
* @param openId
* @param media_id
* @param accessToken
*/
static sendMpNews(openId, media_id, kf_account, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
return this.sendMsg({
touser: openId,
msgtype: 'mpnews',
mpnews: {
media_id: media_id
}
}, kf_account, accessToken);
});
}
/**
* 发送菜单消息
* @param response
* @param openId
* @param head_content
* @param list
* @param tail_content
* @param accessToken
*/
static sendMenu(openId, head_content, list, tail_content, kf_account, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
return this.sendMsg({
touser: openId,
msgtype: 'msgmenu',
msgmenu: {
head_content: head_content,
list: list,
tail_content: tail_content
}
}, kf_account, accessToken);
});
}
/**
* 发送卡券
* @param response
* @param openId
* @param card_id
* @param accessToken
*/
static sendCoupon(openId, card_id, kf_account, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
return this.sendMsg({
touser: openId,
msgtype: 'wxcard',
wxcard: {
card_id: card_id
}
}, kf_account, accessToken);
});
}
/**
* 发送小程序卡片(要求小程序与公众号已关联)
* @param response
* @param openId
* @param title
* @param appid
* @param pagepath
* @param thumb_media_id 缩略图/小程序卡片图片的媒体ID,小程序卡片图片建议大小为520*416
* @param accessToken
*/
static sendMiniProgramPage(openId, title, appid, pagepath, thumb_media_id, kf_account, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
return this.sendMsg({
touser: openId,
msgtype: 'miniprogrampage',
miniprogrampage: {
title: title,
appid: appid,
pagepath: pagepath,
thumb_media_id: thumb_media_id
}
}, kf_account, accessToken);
});
}
/**
* 客服输入状态
* @param response
* @param openId
* @param command "Typing":对用户下发“正在输入"状态,"CancelTyping":取消对用户的”正在输入"状态
* @param accessToken
*/
static sendTyping(openId, command, accessToken) {
return __awaiter(this, void 0, void 0, function* () {
if (!accessToken) {
accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken();
}
let url = util.format(this.typingUrl, accessToken.getAccessToken);
return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
touser: openId,
command: command
}));
});
}
}
exports.CustomServiceApi = CustomServiceApi;
CustomServiceApi.addKfAccountUrl = 'https://api.weixin.qq.com/customservice/kfaccount/add?access_token=%s';
CustomServiceApi.updateKfAccountUrl = 'https://api.weixin.qq.com/customservice/kfaccount/update?access_token=%s';
CustomServiceApi.delKfAccountUrl = 'https://api.weixin.qq.com/customservice/kfaccount/del?access_token=%s&kf_account=%s';
CustomServiceApi.getKfListUrl = 'https://api.weixin.qq.com/cgi-bin/customservice/getkflist?access_token=%s';
CustomServiceApi.customMessageUrl = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=%s';
CustomServiceApi.typingUrl = 'https://api.weixin.qq.com/cgi-bin/message/custom/typing?access_token=%s';
CustomServiceApi.uploadKfHeadImgUrl = 'http://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token=%s&kf_account=%s';
CustomServiceApi.inviteUrl = 'https://api.weixin.qq.com/customservice/kfaccount/inviteworker?access_token=%s';
CustomServiceApi.getOnlineUrl = 'https://api.weixin.qq.com/cgi-bin/customservice/getonlinekflist?access_token=%s';
//# sourceMappingURL=CustomServiceApi.js.map