微信公众号自动回复功能开发

# 微信公众号自动回复功能开发

 本篇主要讲解 微信公众号自动回复功能开发,让我们自己去托管公众号回复的功能,这样可以更加灵活的根据公众号收到的信息来制定特定的回复信息,一起来了解吧!

###  1.注册公众号

  如果你从来没创建过请先注册 [微信公众平台](https://mp.weixin.qq.com/)

  请选择订阅号,然后填写一些基本信息即可 ,具体注册流程这里就展开说了。

  **注意 邮箱作为登录帐号,请填写未被微信公众平台注册,未被微信开放平台注册,未被个人微信号绑定的邮箱 建议直接注册一个新邮箱使用**

![Xnip20191220_225433.png]()

###  2.微信托管自动回复功能

  微信提供了自动回复功能,也就是直接在微信上配置

  **分别提供了3种配置 1.关键词回复 2.收到消息回复 3.被关注回复**

  使用方法很简单 只需要在对应的回复类型上面配置即可 这里不做详细说明

![Xnip20191220_233937.png]()

![Xnip20191220_230059.png]()

###  3.自己开发服务托管自动回复功能

  本篇重点讲解自己去托管自动回复功能,微信只做转发

####   3.1 关闭微信的自动回复功能

    要想自己托管自动回复功能首先要讲微信的自动回复功能关闭 关闭方式如下

![Xnip20191220_230557.png]()

####   3.2 开发者中心配置托管的服务器信息

   **在开始服务器端开发之前,我先介绍一个natapp 内网穿透工具**,有了它你可以直接将其本地映射一个地址配置到该URL地址上面,那么方便你调试 具体关于natapp的使用 请看我另一篇博客 [natapp 内网穿透工具](https://www.askajohnny.com/#/blog/111)

    主要配置URL地址 和Token信息 EncodingAESKey 可以随机生成

![Xnip20191220_232540.png]()

####   3.3 服务端开发(验证消息来来自微信服务器)

    开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:

参数 描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

  开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:

  1)将token、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

**你也可以简单粗暴的直接返回echostr 我暂时就是这样做的**

/**
* 微信成为开发者 接口
* @param signature : 签名
* @param timestamp : 时间戳
* @param nonce : 随机数
* @param echostr : 随机字符串
* @return
*/
@GetMapping("/authorize")
public String authorize(@RequestParam("signature") String signature,
@RequestParam("timestamp") Long timestamp,
@RequestParam("nonce") String nonce,
@RequestParam("echostr") String echostr) {

log.info("【signature:{}】", signature);
log.info("【timestamp:{}】", timestamp);
log.info("【nonce:{}】", nonce);
log.info("【echostr:{}】", echostr);

return echostr;
}

  在上图中点击提交微信会发送请求到该接口 只要该接口正确返回了echostr,微信公众号管理平台就会如下显示 提交成功

![Xnip20191220_233937.png]()

  微信验证 开发者成功后点击 启用 服务器配置信息

![Xnip20191220_234124.png]()


####   3.4 服务器端开发 (接收消息)
  附上微信关于消息的开发文档 [微信公众平台开发文档](https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html)

  当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上,也就是你刚刚配置的验证接口的URL地址,只不过是POST方式提交,所以你需要写一个POST接口


文本消息

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this is a test]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>


参数 描述

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwssyd.html