1 | ;
|
2 |
|
3 | var util = require('./util');
|
4 | var wrapper = util.wrapper;
|
5 | var postJSON = util.postJSON;
|
6 |
|
7 | /**
|
8 | * 上传多媒体文件,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)
|
9 | * 详情请见:<http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html>
|
10 | * Examples:
|
11 | * ```
|
12 | * api.uploadNews(news, callback);
|
13 | * ```
|
14 | * News:
|
15 | * ```
|
16 | * {
|
17 | * "articles": [
|
18 | * {
|
19 | * "thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p",
|
20 | * "author":"xxx",
|
21 | * "title":"Happy Day",
|
22 | * "content_source_url":"www.qq.com",
|
23 | * "content":"content",
|
24 | * "digest":"digest",
|
25 | * "show_cover_pic":"1"
|
26 | * },
|
27 | * {
|
28 | * "thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p",
|
29 | * "author":"xxx",
|
30 | * "title":"Happy Day",
|
31 | * "content_source_url":"www.qq.com",
|
32 | * "content":"content",
|
33 | * "digest":"digest",
|
34 | * "show_cover_pic":"0"
|
35 | * }
|
36 | * ]
|
37 | * }
|
38 | * ```
|
39 | * Callback:
|
40 | *
|
41 | * - `err`, 调用失败时得到的异常
|
42 | * - `result`, 调用正常时得到的对象
|
43 | *
|
44 | * Result:
|
45 | * ```
|
46 | * {
|
47 | * "type":"news",
|
48 | * "media_id":"CsEf3ldqkAYJAU6EJeIkStVDSvffUJ54vqbThMgplD-VJXXof6ctX5fI6-aYyUiQ",
|
49 | * "created_at":1391857799
|
50 | * }
|
51 | * ```
|
52 | *
|
53 | * @param {Object} news 图文消息对象
|
54 | * @param {Function} callback 回调函数
|
55 | */
|
56 | exports.uploadNews = function (news, callback) {
|
57 | this.preRequest(this._uploadNews, arguments);
|
58 | };
|
59 |
|
60 | /*!
|
61 | * 上传图文消息的未封装版本
|
62 | */
|
63 | exports._uploadNews = function (news, callback) {
|
64 | // https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=ACCESS_TOKEN
|
65 | var url = this.endpoint + '/cgi-bin/media/uploadnews?access_token=' + this.token.accessToken;
|
66 | this.request(url, postJSON(news), wrapper(callback));
|
67 | };
|
68 |
|
69 | /**
|
70 | * 将通过上传下载多媒体文件得到的视频media_id变成视频素材
|
71 | * 详情请见:<http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html>
|
72 | * Examples:
|
73 | * ```
|
74 | * api.uploadMPVideo(opts, callback);
|
75 | * ```
|
76 | * Opts:
|
77 | * ```
|
78 | * {
|
79 | * "media_id": "rF4UdIMfYK3efUfyoddYRMU50zMiRmmt_l0kszupYh_SzrcW5Gaheq05p_lHuOTQ",
|
80 | * "title": "TITLE",
|
81 | * "description": "Description"
|
82 | * }
|
83 | * ```
|
84 | * Callback:
|
85 | *
|
86 | * - `err`, 调用失败时得到的异常
|
87 | * - `result`, 调用正常时得到的对象
|
88 | *
|
89 | * Result:
|
90 | * ```
|
91 | * {
|
92 | * "type":"video",
|
93 | * "media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc",
|
94 | * "created_at":1391857799
|
95 | * }
|
96 | * ```
|
97 | *
|
98 | * @param {Object} opts 待上传为素材的视频
|
99 | * @param {Function} callback 回调函数
|
100 | */
|
101 | exports.uploadMPVideo = function (opts, callback) {
|
102 | this.preRequest(this._uploadMPVideo, arguments);
|
103 | };
|
104 |
|
105 | /*!
|
106 | * 上传视频消息的未封装版本
|
107 | */
|
108 | exports._uploadMPVideo = function (opts, callback) {
|
109 | // https://file.api.weixin.qq.com/cgi-bin/media/uploadvideo?access_token=ACCESS_TOKEN
|
110 | var url = this.fileServerPrefix + 'media/uploadvideo?access_token=' + this.token.accessToken;
|
111 | this.request(url, postJSON(opts), wrapper(callback));
|
112 | };
|
113 |
|
114 | /**
|
115 | * 群发消息,分别有图文(news)、文本(text)、语音(voice)、图片(image)和视频(video)
|
116 | * 详情请见:<http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html>
|
117 | * Examples:
|
118 | * ```
|
119 | * api.massSend(opts, receivers, callback);
|
120 | * ```
|
121 | * opts:
|
122 | * ```
|
123 | * {
|
124 | * "image":{
|
125 | * "media_id":"123dsdajkasd231jhksad"
|
126 | * },
|
127 | * "msgtype":"image"
|
128 | * }
|
129 | * ```
|
130 | * Callback:
|
131 | *
|
132 | * - `err`, 调用失败时得到的异常
|
133 | * - `result`, 调用正常时得到的对象
|
134 | *
|
135 | * Result:
|
136 | * ```
|
137 | * {
|
138 | * "errcode":0,
|
139 | * "errmsg":"send job submission success",
|
140 | * "msg_id":34182
|
141 | * }
|
142 | * ```
|
143 | *
|
144 | * @param {Object} opts 待发送的数据
|
145 | * @param {String|Array} receivers 接收人。一个组,或者openid列表
|
146 | * @param {Function} callback 回调函数
|
147 | */
|
148 | exports.massSend = function (opts, receivers, callback) {
|
149 | this.preRequest(this._massSend, arguments);
|
150 | };
|
151 |
|
152 | /*!
|
153 | * 群发消息的未封装版本
|
154 | */
|
155 | exports._massSend = function (opts, receivers, callback) {
|
156 | var url;
|
157 | if (Array.isArray(receivers)) {
|
158 | opts.touser = receivers;
|
159 | url = this.endpoint + '/cgi-bin/message/mass/send?access_token=' + this.token.accessToken;
|
160 | } else {
|
161 | if (typeof receivers === 'boolean') {
|
162 | opts.filter = {
|
163 | 'is_to_all': receivers
|
164 | };
|
165 | } else {
|
166 | opts.filter = {
|
167 | 'group_id': receivers
|
168 | };
|
169 | }
|
170 | url = this.endpoint + '/cgi-bin/message/mass/sendall?access_token=' + this.token.accessToken;
|
171 | }
|
172 | // https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN
|
173 | this.request(url, postJSON(opts), wrapper(callback));
|
174 | };
|
175 |
|
176 | /**
|
177 | * 群发图文(news)消息
|
178 | * 详情请见:<http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html>
|
179 | * Examples:
|
180 | * ```
|
181 | * api.massSendNews(mediaId, receivers, callback);
|
182 | * ```
|
183 | * Callback:
|
184 | *
|
185 | * - `err`, 调用失败时得到的异常
|
186 | * - `result`, 调用正常时得到的对象
|
187 | *
|
188 | * Result:
|
189 | * ```
|
190 | * {
|
191 | * "errcode":0,
|
192 | * "errmsg":"send job submission success",
|
193 | * "msg_id":34182
|
194 | * }
|
195 | * ```
|
196 | *
|
197 | * @param {String} mediaId 图文消息的media id
|
198 | * @param {String|Array|Boolean} receivers 接收人。一个组,或者openid列表, 或者true(群发给所有人)
|
199 | * @param {Function} callback 回调函数
|
200 | */
|
201 | exports.massSendNews = function (mediaId, receivers, callback) {
|
202 | var opts = {
|
203 | 'mpnews': {
|
204 | 'media_id': mediaId
|
205 | },
|
206 | 'msgtype': 'mpnews'
|
207 | };
|
208 | this.massSend(opts, receivers, callback);
|
209 | };
|
210 |
|
211 | /**
|
212 | * 群发文字(text)消息
|
213 | * 详情请见:<http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html>
|
214 | * Examples:
|
215 | * ```
|
216 | * api.massSendText(content, receivers, callback);
|
217 | * ```
|
218 | * Callback:
|
219 | *
|
220 | * - `err`, 调用失败时得到的异常
|
221 | * - `result`, 调用正常时得到的对象
|
222 | *
|
223 | * Result:
|
224 | * ```
|
225 | * {
|
226 | * "errcode":0,
|
227 | * "errmsg":"send job submission success",
|
228 | * "msg_id":34182
|
229 | * }
|
230 | * ```
|
231 | *
|
232 | * @param {String} content 文字消息内容
|
233 | * @param {String|Array} receivers 接收人。一个组,或者openid列表
|
234 | * @param {Function} callback 回调函数
|
235 | */
|
236 | exports.massSendText = function (content, receivers, callback) {
|
237 | var opts = {
|
238 | 'text': {
|
239 | 'content': content
|
240 | },
|
241 | 'msgtype': 'text'
|
242 | };
|
243 | this.massSend(opts, receivers, callback);
|
244 | };
|
245 |
|
246 | /**
|
247 | * 群发声音(voice)消息
|
248 | * 详情请见:<http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html>
|
249 | * Examples:
|
250 | * ```
|
251 | * api.massSendVoice(media_id, receivers, callback);
|
252 | * ```
|
253 | * Callback:
|
254 | *
|
255 | * - `err`, 调用失败时得到的异常
|
256 | * - `result`, 调用正常时得到的对象
|
257 | *
|
258 | * Result:
|
259 | * ```
|
260 | * {
|
261 | * "errcode":0,
|
262 | * "errmsg":"send job submission success",
|
263 | * "msg_id":34182
|
264 | * }
|
265 | * ```
|
266 | *
|
267 | * @param {String} mediaId 声音media id
|
268 | * @param {String|Array} receivers 接收人。一个组,或者openid列表
|
269 | * @param {Function} callback 回调函数
|
270 | */
|
271 | exports.massSendVoice = function (mediaId, receivers, callback) {
|
272 | var opts = {
|
273 | 'voice': {
|
274 | 'media_id': mediaId
|
275 | },
|
276 | 'msgtype': 'voice'
|
277 | };
|
278 | this.massSend(opts, receivers, callback);
|
279 | };
|
280 |
|
281 | /**
|
282 | * 群发图片(image)消息
|
283 | * 详情请见:<http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html>
|
284 | * Examples:
|
285 | * ```
|
286 | * api.massSendImage(media_id, receivers, callback);
|
287 | * ```
|
288 | * Callback:
|
289 | *
|
290 | * - `err`, 调用失败时得到的异常
|
291 | * - `result`, 调用正常时得到的对象
|
292 | *
|
293 | * Result:
|
294 | * ```
|
295 | * {
|
296 | * "errcode":0,
|
297 | * "errmsg":"send job submission success",
|
298 | * "msg_id":34182
|
299 | * }
|
300 | * ```
|
301 | *
|
302 | * @param {String} mediaId 图片media id
|
303 | * @param {String|Array} receivers 接收人。一个组,或者openid列表
|
304 | * @param {Function} callback 回调函数
|
305 | */
|
306 | exports.massSendImage = function (mediaId, receivers, callback) {
|
307 | var opts = {
|
308 | 'image': {
|
309 | 'media_id': mediaId
|
310 | },
|
311 | 'msgtype': 'image'
|
312 | };
|
313 | this.massSend(opts, receivers, callback);
|
314 | };
|
315 |
|
316 | /**
|
317 | * 群发视频(video)消息
|
318 | * 详情请见:<http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html>
|
319 | * Examples:
|
320 | * ```
|
321 | * api.massSendVideo(mediaId, receivers, callback);
|
322 | * ```
|
323 | * Callback:
|
324 | *
|
325 | * - `err`, 调用失败时得到的异常
|
326 | * - `result`, 调用正常时得到的对象
|
327 | *
|
328 | * Result:
|
329 | * ```
|
330 | * {
|
331 | * "errcode":0,
|
332 | * "errmsg":"send job submission success",
|
333 | * "msg_id":34182
|
334 | * }
|
335 | * ```
|
336 | *
|
337 | * @param {String} mediaId 视频media id
|
338 | * @param {String|Array} receivers 接收人。一个组,或者openid列表
|
339 | * @param {Function} callback 回调函数
|
340 | */
|
341 | exports.massSendVideo = function (mediaId, receivers, callback) {
|
342 | var opts = {
|
343 | 'mpvideo': {
|
344 | 'media_id': mediaId
|
345 | },
|
346 | 'msgtype': 'mpvideo'
|
347 | };
|
348 | this.massSend(opts, receivers, callback);
|
349 | };
|
350 |
|
351 | /**
|
352 | * 群发视频(video)消息,直接通过上传文件得到的media id进行群发(自动生成素材)
|
353 | * 详情请见:<http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html>
|
354 | * Examples:
|
355 | * ```
|
356 | * api.massSendMPVideo(data, receivers, callback);
|
357 | * ```
|
358 | * Data:
|
359 | * ```
|
360 | * {
|
361 | * "media_id": "rF4UdIMfYK3efUfyoddYRMU50zMiRmmt_l0kszupYh_SzrcW5Gaheq05p_lHuOTQ",
|
362 | * "title": "TITLE",
|
363 | * "description": "Description"
|
364 | * }
|
365 | * ```
|
366 | * Callback:
|
367 | *
|
368 | * - `err`, 调用失败时得到的异常
|
369 | * - `result`, 调用正常时得到的对象
|
370 | *
|
371 | * Result:
|
372 | * ```
|
373 | * {
|
374 | * "errcode":0,
|
375 | * "errmsg":"send job submission success",
|
376 | * "msg_id":34182
|
377 | * }
|
378 | * ```
|
379 | *
|
380 | * @param {Object} data 视频数据
|
381 | * @param {String|Array} receivers 接收人。一个组,或者openid列表
|
382 | * @param {Function} callback 回调函数
|
383 | */
|
384 | exports.massSendMPVideo = function (data, receivers, callback) {
|
385 | var that = this;
|
386 | // 自动帮转视频的media_id
|
387 | this.uploadMPVideo(data, function (err, result) {
|
388 | if (err) {
|
389 | return callback(err);
|
390 | }
|
391 | that.massSendVideo(result.media_id, receivers, callback);
|
392 | });
|
393 | };
|
394 |
|
395 | /**
|
396 | * 删除群发消息
|
397 | * 详情请见:<http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html>
|
398 | * Examples:
|
399 | * ```
|
400 | * api.deleteMass(message_id, callback);
|
401 | * ```
|
402 | * Callback:
|
403 | *
|
404 | * - `err`, 调用失败时得到的异常
|
405 | * - `result`, 调用正常时得到的对象
|
406 | *
|
407 | * Result:
|
408 | * ```
|
409 | * {
|
410 | * "errcode":0,
|
411 | * "errmsg":"ok"
|
412 | * }
|
413 | * ```
|
414 | *
|
415 | * @param {String} messageId 待删除群发的消息id
|
416 | * @param {Function} callback 回调函数
|
417 | */
|
418 | exports.deleteMass = function (messageId, callback) {
|
419 | this.preRequest(this._deleteMass, arguments);
|
420 | };
|
421 |
|
422 | exports._deleteMass = function (messageId, callback) {
|
423 | var opts = {
|
424 | msg_id: messageId
|
425 | };
|
426 | var url = this.endpoint + '/cgi-bin/message/mass/delete?access_token=' + this.token.accessToken;
|
427 | this.request(url, postJSON(opts), wrapper(callback));
|
428 | };
|
429 |
|
430 | /**
|
431 | * 预览接口,预览图文消息
|
432 | * 详情请见:<http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html>
|
433 | * Examples:
|
434 | * ```
|
435 | * api.previewNews(openid, mediaId, callback);
|
436 | * ```
|
437 | * Callback:
|
438 | *
|
439 | * - `err`, 调用失败时得到的异常
|
440 | * - `result`, 调用正常时得到的对象
|
441 | *
|
442 | * Result:
|
443 | * ```
|
444 | * {
|
445 | * "errcode":0,
|
446 | * "errmsg":"send job submission success",
|
447 | * "msg_id": 34182
|
448 | * }
|
449 | * ```
|
450 | *
|
451 | * @param {String} openid 用户openid
|
452 | * @param {String} mediaId 图文消息mediaId
|
453 | * @param {Function} callback 回调函数
|
454 | */
|
455 | exports.previewNews = function (openid, mediaId, callback) {
|
456 | this.preRequest(this._previewNews, arguments);
|
457 | };
|
458 |
|
459 | exports._previewNews = function (openid, mediaId, callback) {
|
460 | var opts = {
|
461 | 'touser': openid,
|
462 | 'mpnews': {
|
463 | 'media_id': mediaId
|
464 | },
|
465 | 'msgtype': 'mpnews'
|
466 | };
|
467 | var url = this.endpoint + '/cgi-bin/message/mass/preview?access_token=' + this.token.accessToken;
|
468 | this.request(url, postJSON(opts), wrapper(callback));
|
469 | };
|
470 |
|
471 | /**
|
472 | * 预览接口,预览文本消息
|
473 | * 详情请见:<http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html>
|
474 | * Examples:
|
475 | * ```
|
476 | * api.previewText(openid, content, callback);
|
477 | * ```
|
478 | * Callback:
|
479 | *
|
480 | * - `err`, 调用失败时得到的异常
|
481 | * - `result`, 调用正常时得到的对象
|
482 | *
|
483 | * Result:
|
484 | * ```
|
485 | * {
|
486 | * "errcode":0,
|
487 | * "errmsg":"send job submission success",
|
488 | * "msg_id": 34182
|
489 | * }
|
490 | * ```
|
491 | *
|
492 | * @param {String} openid 用户openid
|
493 | * @param {String} content 文本消息
|
494 | * @param {Function} callback 回调函数
|
495 | */
|
496 | exports.previewText = function (openid, content, callback) {
|
497 | this.preRequest(this._previewText, arguments);
|
498 | };
|
499 |
|
500 | exports._previewText = function (openid, content, callback) {
|
501 | var opts = {
|
502 | 'touser': openid,
|
503 | 'text': {
|
504 | 'content': content
|
505 | },
|
506 | 'msgtype':'text'
|
507 | };
|
508 | var url = this.endpoint + '/cgi-bin/message/mass/preview?access_token=' + this.token.accessToken;
|
509 | this.request(url, postJSON(opts), wrapper(callback));
|
510 | };
|
511 |
|
512 | /**
|
513 | * 预览接口,预览语音消息
|
514 | * 详情请见:<http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html>
|
515 | * Examples:
|
516 | * ```
|
517 | * api.previewVoice(openid, mediaId, callback);
|
518 | * ```
|
519 | * Callback:
|
520 | *
|
521 | * - `err`, 调用失败时得到的异常
|
522 | * - `result`, 调用正常时得到的对象
|
523 | *
|
524 | * Result:
|
525 | * ```
|
526 | * {
|
527 | * "errcode":0,
|
528 | * "errmsg":"send job submission success",
|
529 | * "msg_id": 34182
|
530 | * }
|
531 | * ```
|
532 | *
|
533 | * @param {String} openid 用户openid
|
534 | * @param {String} mediaId 语音mediaId
|
535 | * @param {Function} callback 回调函数
|
536 | */
|
537 | exports.previewVoice = function (openid, mediaId, callback) {
|
538 | this.preRequest(this._previewVoice, arguments);
|
539 | };
|
540 |
|
541 | exports._previewVoice = function (openid, mediaId, callback) {
|
542 | var opts = {
|
543 | 'touser': openid,
|
544 | 'voice': {
|
545 | 'media_id': mediaId
|
546 | },
|
547 | 'msgtype': 'voice'
|
548 | };
|
549 | var url = this.endpoint + '/cgi-bin/message/mass/preview?access_token=' + this.token.accessToken;
|
550 | this.request(url, postJSON(opts), wrapper(callback));
|
551 | };
|
552 |
|
553 | /**
|
554 | * 预览接口,预览图片消息
|
555 | * 详情请见:<http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html>
|
556 | * Examples:
|
557 | * ```
|
558 | * api.previewImage(openid, mediaId, callback);
|
559 | * ```
|
560 | * Callback:
|
561 | *
|
562 | * - `err`, 调用失败时得到的异常
|
563 | * - `result`, 调用正常时得到的对象
|
564 | *
|
565 | * Result:
|
566 | * ```
|
567 | * {
|
568 | * "errcode":0,
|
569 | * "errmsg":"send job submission success",
|
570 | * "msg_id": 34182
|
571 | * }
|
572 | * ```
|
573 | *
|
574 | * @param {String} openid 用户openid
|
575 | * @param {String} mediaId 图片mediaId
|
576 | * @param {Function} callback 回调函数
|
577 | */
|
578 | exports.previewImage = function (openid, mediaId, callback) {
|
579 | this.preRequest(this._previewImage, arguments);
|
580 | };
|
581 |
|
582 | exports._previewImage = function (openid, mediaId, callback) {
|
583 | var opts = {
|
584 | 'touser': openid,
|
585 | 'image': {
|
586 | 'media_id': mediaId
|
587 | },
|
588 | 'msgtype': 'image'
|
589 | };
|
590 | var url = this.endpoint + '/cgi-bin/message/mass/preview?access_token=' + this.token.accessToken;
|
591 | this.request(url, postJSON(opts), wrapper(callback));
|
592 | };
|
593 |
|
594 | /**
|
595 | * 预览接口,预览视频消息
|
596 | * 详情请见:<http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html>
|
597 | * Examples:
|
598 | * ```
|
599 | * api.previewVideo(openid, mediaId, callback);
|
600 | * ```
|
601 | * Callback:
|
602 | *
|
603 | * - `err`, 调用失败时得到的异常
|
604 | * - `result`, 调用正常时得到的对象
|
605 | *
|
606 | * Result:
|
607 | * ```
|
608 | * {
|
609 | * "errcode":0,
|
610 | * "errmsg":"send job submission success",
|
611 | * "msg_id": 34182
|
612 | * }
|
613 | * ```
|
614 | *
|
615 | * @param {String} openid 用户openid
|
616 | * @param {String} mediaId 视频mediaId
|
617 | * @param {Function} callback 回调函数
|
618 | */
|
619 | exports.previewVideo = function (openid, mediaId, callback) {
|
620 | this.preRequest(this._previewVideo, arguments);
|
621 | };
|
622 |
|
623 | exports._previewVideo = function (openid, mediaId, callback) {
|
624 | var opts = {
|
625 | 'touser': openid,
|
626 | 'mpvideo': {
|
627 | 'media_id': mediaId
|
628 | },
|
629 | 'msgtype': 'mpvideo'
|
630 | };
|
631 | var url = this.endpoint + '/cgi-bin/message/mass/preview?access_token=' + this.token.accessToken;
|
632 | this.request(url, postJSON(opts), wrapper(callback));
|
633 | };
|
634 |
|
635 | /**
|
636 | * 查询群发消息状态
|
637 | * 详情请见:<http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html>
|
638 | * Examples:
|
639 | * ```
|
640 | * api.getMassMessageStatus(messageId, callback);
|
641 | * ```
|
642 | * Callback:
|
643 | *
|
644 | * - `err`, 调用失败时得到的异常
|
645 | * - `result`, 调用正常时得到的对象
|
646 | *
|
647 | * Result:
|
648 | * ```
|
649 | * {
|
650 | * "msg_id":201053012,
|
651 | * "msg_status":"SEND_SUCCESS"
|
652 | * }
|
653 | * ```
|
654 | *
|
655 | * @param {String} messageId 消息ID
|
656 | * @param {Function} callback 回调函数
|
657 | */
|
658 | exports.getMassMessageStatus = function (messageId, callback) {
|
659 | this.preRequest(this._getMassMessageStatus, arguments);
|
660 | };
|
661 |
|
662 | exports._getMassMessageStatus = function (messageId, callback) {
|
663 | var opts = {
|
664 | 'msg_id': messageId
|
665 | };
|
666 | var url = this.endpoint + '/cgi-bin/message/mass/get?access_token=' + this.token.accessToken;
|
667 | this.request(url, postJSON(opts), wrapper(callback));
|
668 | };
|