接收到用户的消息,我们需要做出反馈。
文档地址: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
会有很多空格。就是< !
和] ]
,把这些空格全部去除掉可以正常回复。