前面的代码都是直接回复success,不做任何处理。先来撸一个自动回复吧。收到消息后就回复这儿是JavaScript之禅
// return ctx.body = 'success' // 直接success
ctx.type = 'application/xml'
return ctx.body = `<xml>
<ToUserName><![CDATA[${formatted.FromUserName}]]></ToUserName>
<FromUserName><![CDATA[${formatted.ToUserName}]]></FromUserName>
<CreateTime>${new Date().getTime()}</CreateTime>
<MsgType><![CDATA
]></MsgType>
<Content><![CDATA[这儿是JavaScript之禅]]></Content>
</xml>`
3.2 使用ejs模板引擎处理回复内容
从这一小段代码中可以看出,被动回复消息就是把你想要回复的内容按照约定的XML格式返回即可。但是一段一段的拼XML那多麻烦。我们来加个模板引擎方便我们处理XML。模板引擎有很多,ejs 是其中一种,它使用起来十分简单
首先下载并引入ejs
$ npm install ejs --save
如果你之前没用过现在只需要记住下面这几个语法,以及ejs.compile()方法
<% code %>:运行 JavaScript 代码,不输出
<%= code %>:显示转义后的 HTML内容
<%- code %>:显示原始 HTML 内容
可以先看看这个ejs的小demo:
const ejs = require('ejs')
let tpl = `
<xml>
<ToUserName><![CDATA[<%-toUsername%>]]></ToUserName>
<FromUserName><![CDATA[<%-fromUsername%>]]></FromUserName>
<CreateTime><%=createTime%></CreateTime>
<MsgType><![CDATA[<%=msgType%>]]></MsgType>
<Content><![CDATA[<%-content%>]]></Content>
</xml>
`
const compiled = ejs.compile(tpl)
let mess = compiled({
toUsername: '1234',
fromUsername: '12345',
createTime: new Date().getTime(),
msgType: 'text',
content: 'JavaScript之禅',
})console.log(mess)
/* 将打印出如下信息
*================
<xml>
<ToUserName><![CDATA[1234]]></ToUserName>
<FromUserName><![CDATA[12345]]></FromUserName>
<CreateTime>1517037564494</CreateTime>
<MsgType><![CDATA
]></MsgType>
<Content><![CDATA[JavaScript之禅]]></Content>
</xml>
*/
现在来编写被动回复消息的模板,各种if else,这儿就直接贴代码了
<xml>
<ToUserName><![CDATA[<%-toUsername%>]]></ToUserName>
<FromUserName><![CDATA[<%-fromUsername%>]]></FromUserName>









