UNPKG

@tnwx/wxmp

Version:

TNWX 微信系开发脚手架之极速开发微信公众号

396 lines 14.7 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 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