4 微信公众号开发 被动回复消息 回复没有反应怎么办

时间:2024-05-31 10:26:54

接收到用户的消息,我们需要做出反馈。4 微信公众号开发 被动回复消息 回复没有反应怎么办
文档地址: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格式是错误的。

4 微信公众号开发 被动回复消息 回复没有反应怎么办
从官方复制过来的xml会有很多空格。就是< !] ],把这些空格全部去除掉可以正常回复。