接收到用户的消息,我们需要做出反馈。
文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140543
官方返回的数据格式是xml
,我们需要转化为json
。获取数据,构造xml
在返回就OK了。
核心代码:
server.route({method: 'POST',path: '/wx',options: {tags: ['api'],description: '接收消息',auth: false,},handler: (request, h) => {const data = JSON.parse(parser.toJson(request.payload)).xml;// 定义参数const toUser = data.FromUserName;const fromUser = data.ToUserName;const content = '欢迎来到英雄联盟';const response = h.response(weixin.reply.text(toUser, fromUser, content));response.type('application/xml');return response;}
});// reply.text 函数代码
text(toUser: string, fromUser: string, content: string) {const data = `<xml><ToUserName><![CDATA[${toUser}]]></ToUserName><FromUserName><![CDATA[${fromUser}]]></FromUserName><CreateTime>${timeStamp()}</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[${content}]]></Content></xml>`;return data
};
注意,这里有一个神坑,官方的xml
格式是错误的。
从官方复制过来的xml
会有很多空格。就是< !
和] ]
,把这些空格全部去除掉可以正常回复。