wx.js
Version:
Wechat API
99 lines (93 loc) • 3.78 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);