UNPKG

koa3-wechat

Version:

wechat api modified by windsome.feng

382 lines (331 loc) 10.7 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _debug2 = require('debug'); var _debug3 = _interopRequireDefault(_debug2); var _base = require('./base'); var _base2 = _interopRequireDefault(_base); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var debug = (0, _debug3.default)('app:wechat:custom_service'); var path = require('path'); var fs = require('fs'); var formstream = require('formstream'); var ShortUrl = function (_Base) { (0, _inherits3.default)(ShortUrl, _Base); function ShortUrl() { var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; (0, _classCallCheck3.default)(this, ShortUrl); return (0, _possibleConstructorReturn3.default)(this, (ShortUrl.__proto__ || (0, _getPrototypeOf2.default)(ShortUrl)).call(this, opts)); } /** * 获取客服聊天记录 * 详细请看:http://mp.weixin.qq.com/wiki/19/7c129ec71ddfa60923ea9334557e8b23.html * Opts: * ``` * { * "starttime" : 123456789, * "endtime" : 987654321, * "openid": "OPENID", // 非必须 * "pagesize" : 10, * "pageindex" : 1, * } * ``` * Examples: * ``` * var result = await api.getRecords(opts); * ``` * Result: * ``` * { * "recordlist": [ * { * "worker": " test1", * "openid": "oDF3iY9WMaswOPWjCIp_f3Bnpljk", * "opercode": 2002, * "time": 1400563710, * "text": " 您好,客服test1为您服务。" * }, * { * "worker": " test1", * "openid": "oDF3iY9WMaswOPWjCIp_f3Bnpljk", * "opercode": 2003, * "time": 1400563731, * "text": " 你好,有什么事情? " * }, * ] * } * ``` * @param {Object} opts 查询条件 */ (0, _createClass3.default)(ShortUrl, [{ key: 'getRecords', value: function getRecords(opts) { var url = 'https://api.weixin.qq.com/customservice/msgrecord/getrecord?access_token=ACCESS_TOKEN'; return this.post(url, opts); } /** * 获取客服基本信息 * 详细请看:http://dkf.qq.com/document-3_1.html * Examples: * ``` * var result = await api.getCustomServiceList(); * ``` * Result: * ``` * { * "kf_list": [ * { * "kf_account": "test1@test", * "kf_nick": "ntest1", * "kf_id": "1001" * }, * { * "kf_account": "test2@test", * "kf_nick": "ntest2", * "kf_id": "1002" * }, * { * "kf_account": "test3@test", * "kf_nick": "ntest3", * "kf_id": "1003" * } * ] * } * ``` */ }, { key: 'getCustomServiceList', value: function getCustomServiceList() { var url = 'https://api.weixin.qq.com/cgi-bin/customservice/getkflist?access_token= ACCESS_TOKEN'; return this.get(url); } /** * 获取在线客服接待信息 * 详细请看:http://dkf.qq.com/document-3_2.html * Examples: * ``` * var result = await api.getOnlineCustomServiceList(); * ``` * Result: * ``` * { * "kf_online_list": [ * { * "kf_account": "test1@test", * "status": 1, * "kf_id": "1001", * "auto_accept": 0, * "accepted_case": 1 * }, * { * "kf_account": "test2@test", * "status": 1, * "kf_id": "1002", * "auto_accept": 0, * "accepted_case": 2 * } * ] * } * ``` */ }, { key: 'getOnlineCustomServiceList', value: function getOnlineCustomServiceList() { var url = 'https://api.weixin.qq.com/cgi-bin/customservice/getonlinekflist?access_token= ACCESS_TOKEN'; return this.get(url); } /** * 添加客服账号 * 详细请看:http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1458044813&token=&lang=zh_CN * Examples: * ``` * var result = await api.addKfAccount('test@test', 'nickname', 'password'); * ``` * Result: * ``` * { * "errcode" : 0, * "errmsg" : "ok", * } * ``` * @param {String} account 账号名字,格式为:前缀@公共号名字 * @param {String} nick 昵称 */ }, { key: 'addKfAccount', value: function addKfAccount(account, nick) { var url = 'https://api.weixin.qq.com/customservice/kfaccount/add?access_token=ACCESS_TOKEN'; return this.post(url, { kf_account: account, nickname: nick }); } /** * 邀请绑定客服帐号 * 详细请看:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1458044813&token=&lang=zh_CN * Examples: * ``` * var result = await api.inviteworker('test@test', 'invite_wx'); * ``` * Result: * ``` * { * "errcode" : 0, * "errmsg" : "ok", * } * ``` * @param {String} account 账号名字,格式为:前缀@公共号名字 * @param {String} wx 邀请绑定的个人微信账号 */ }, { key: 'inviteworker', value: function inviteworker(account, wx) { var url = 'https://api.weixin.qq.com/customservice/kfaccount/inviteworker?access_token=ACCESS_TOKEN'; return this.post(url, { kf_account: account, invite_wx: wx }); } /** * 设置客服账号 * 详细请看:http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1458044813&token=&lang=zh_CN * Examples: * ``` * api.updateKfAccount('test@test', 'nickname', 'password'); * ``` * Result: * ``` * { * "errcode" : 0, * "errmsg" : "ok", * } * ``` * @param {String} account 账号名字,格式为:前缀@公共号名字 * @param {String} nick 昵称 */ }, { key: 'updateKfAccount', value: function updateKfAccount(account, nick) { var url = 'https://api.weixin.qq.com/customservice/kfaccount/add?access_token=ACCESS_TOKEN'; return this.post(url, { kf_account: account, nickname: nick }); } /** * 删除客服账号 * 详细请看:http://mp.weixin.qq.com/wiki/9/6fff6f191ef92c126b043ada035cc935.html * Examples: * ``` * api.deleteKfAccount('test@test'); * ``` * Result: * ``` * { * "errcode" : 0, * "errmsg" : "ok", * } * ``` * @param {String} account 账号名字,格式为:前缀@公共号名字 */ }, { key: 'deleteKfAccount', value: function deleteKfAccount(account, nickname, password) { var url = 'https://api.weixin.qq.com/customservice/kfaccount/del?access_token=ACCESS_TOKEN'; return this.post(url, { kf_account: account, nickname: nickname, password: password }); } /** * 设置客服头像 * 详细请看:http://mp.weixin.qq.com/wiki/9/6fff6f191ef92c126b043ada035cc935.html * Examples: * ``` * api.setKfAccountAvatar('test@test', '/path/to/avatar.png'); * ``` * Result: * ``` * { * "errcode" : 0, * "errmsg" : "ok", * } * ``` * @param {String} account 账号名字,格式为:前缀@公共号名字 * @param {String} filepath 头像路径 */ }, { key: 'setKfAccountAvatar', value: function () { var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(account, filepath) { var url, stat, form, opts; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: url = 'http://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token=ACCESS_TOKEN&kf_account=KFACCOUNT'.replace(/KFACCOUNT/g, account); _context.next = 3; return fs.stat(filepath); case 3: stat = _context.sent; form = formstream(); form.file('media', filepath, path.basename(filepath), stat.size); opts = { dataType: 'json', method: 'POST', timeout: 60000, // 60秒超时 headers: form.headers(), stream: form }; _context.next = 9; return this.request(url, opts); case 9: return _context.abrupt('return', _context.sent); case 10: case 'end': return _context.stop(); } } }, _callee, this); })); function setKfAccountAvatar(_x2, _x3) { return _ref.apply(this, arguments); } return setKfAccountAvatar; }() /** * 创建客服会话 * 详细请看:http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1458044820&token=&lang=zh_CN * Examples: * ``` * api.createKfSession('test@test', 'OPENID'); * ``` * Result: * ``` * { * "errcode" : 0, * "errmsg" : "ok", * } * ``` * @param {String} account 账号名字,格式为:前缀@公共号名字 * @param {String} openid openid */ }, { key: 'createKfSession', value: function createKfSession(account, openid) { var url = 'https://api.weixin.qq.com/customservice/kfsession/create?access_token=ACCESS_TOKEN'; return this.post(url, { kf_account: account, openid: openid }); } }]); return ShortUrl; }(_base2.default); exports.default = ShortUrl;