wx.js
Version:
Wechat API
17 lines (12 loc) • 3.53 kB
JavaScript
'use strict';
const ejs = require('ejs');
/*!
* 响应模板
*/
const tpl = ['<xml>', '<ToUserName><![CDATA[<%-toUsername%>]]></ToUserName>', '<FromUserName><![CDATA[<%-fromUsername%>]]></FromUserName>', '<CreateTime><%=createTime%></CreateTime>', '<% if (msgType === "device_event" && (Event === "subscribe_status" || Event === "unsubscribe_status")) { %>', '<% if (Event === "subscribe_status" || Event === "unsubscribe_status") { %>', '<MsgType><![CDATA[device_status]]></MsgType>', '<DeviceStatus><%=DeviceStatus%></DeviceStatus>', '<% } else { %>', '<MsgType><![CDATA[<%=msgType%>]]></MsgType>', '<Event><![CDATA[<%-Event%>]]></Event>', '<% } %>', '<% } else { %>', '<MsgType><![CDATA[<%=msgType%>]]></MsgType>', '<% } %>', '<% if (msgType === "news") { %>', '<ArticleCount><%=content.length%></ArticleCount>', '<Articles>', '<% content.forEach(function(item){ %>', '<item>', '<Title><![CDATA[<%-item.title%>]]></Title>', '<Description><![CDATA[<%-item.description%>]]></Description>', '<PicUrl><![CDATA[<%-item.picUrl || item.picurl || item.pic %>]]></PicUrl>', '<Url><![CDATA[<%-item.url%>]]></Url>', '</item>', '<% }); %>', '</Articles>', '<% } else if (msgType === "music") { %>', '<Music>', '<Title><![CDATA[<%-content.title%>]]></Title>', '<Description><![CDATA[<%-content.description%>]]></Description>', '<MusicUrl><![CDATA[<%-content.musicUrl || content.url %>]]></MusicUrl>', '<HQMusicUrl><![CDATA[<%-content.hqMusicUrl || content.hqUrl %>]]></HQMusicUrl>', '<% if (content.thumbMediaId) { %> ', '<ThumbMediaId><![CDATA[<%-content.thumbMediaId || content.mediaId %>]]></ThumbMediaId>', '<% } %>', '</Music>', '<% } else if (msgType === "voice") { %>', '<Voice>', '<MediaId><![CDATA[<%-content.mediaId%>]]></MediaId>', '</Voice>', '<% } else if (msgType === "image") { %>', '<Image>', '<MediaId><![CDATA[<%-content.mediaId%>]]></MediaId>', '</Image>', '<% } else if (msgType === "video") { %>', '<Video>', '<MediaId><![CDATA[<%-content.mediaId%>]]></MediaId>', '<Title><![CDATA[<%-content.title%>]]></Title>', '<Description><![CDATA[<%-content.description%>]]></Description>', '</Video>', '<% } else if (msgType === "hardware") { %>', '<HardWare>', '<MessageView><![CDATA[<%-HardWare.MessageView%>]]></MessageView>', '<MessageAction><![CDATA[<%-HardWare.MessageAction%>]]></MessageAction>', '</HardWare>', '<FuncFlag>0</FuncFlag>', '<% } else if (msgType === "device_text" || msgType === "device_event") { %>', '<DeviceType><![CDATA[<%-DeviceType%>]]></DeviceType>', '<DeviceID><![CDATA[<%-DeviceID%>]]></DeviceID>', '<% if (msgType === "device_text") { %>', '<Content><![CDATA[<%-content%>]]></Content>', '<% } else if ((msgType === "device_event" && Event != "subscribe_status" && Event != "unsubscribe_status")) { %>', '<Content><![CDATA[<%-content%>]]></Content>', '<Event><![CDATA[<%-Event%>]]></Event>', '<% } %>', '<SessionID><%=SessionID%></SessionID>', '<% } else if (msgType === "transfer_customer_service") { %>', '<% if (content && content.kfAccount) { %>', '<TransInfo>', '<KfAccount><![CDATA[<%-content.kfAccount%>]]></KfAccount>', '</TransInfo>', '<% } %>', '<% } else { %>', '<Content><![CDATA[<%-content%>]]></Content>', '<% } %>', '</xml>'].join('');
exports.replyTpl = ejs.compile(tpl);
/**
* 加密模板
*/
const wrapTpl = '<xml>' + '<Encrypt><![CDATA[<%-encrypt%>]]></Encrypt>' + '<MsgSignature><![CDATA[<%-signature%>]]></MsgSignature>' + '<TimeStamp><%-timestamp%></TimeStamp>' + '<Nonce><![CDATA[<%-nonce%>]]></Nonce>' + '</xml>';
exports.encryptWrap = ejs.compile(wrapTpl);