微信公众号初探
准备
首先申请一个个人资质的公众订阅号,微信资质审核比较严格,可以申请个人订阅号,但api相关功能会有一定的限制。
申请好之后进入微信公众号后台管理页面最底部的【开发-基本配置】,第一步:公众号后台服务接入。
公众号服务接入
【服务器地址】就是我们自己的域名地址,/wechat是接口域名,令牌相当于一个check加密字符串用做校验,微信最终会将公众号用户相关操作动作信息转发到我们自己配置的服务接口内,在这之前,需要做服务器公众号之间的接入绑定。在自己的服务端定义对应的接口路由,请求方式为‘GET’,提交时微信会请求当前接口并携带一定参数。
【signature, timestamp, nonce, echostr】大致就是拿到对应参数后加上自己之前定义的令牌key通过特定的排序组合解密完成,校验解密字符串是否与微信端一致从而保证服务安全性,这一步很简单,其实如果想要省事的话不做一系列的解密操作直接返回当前【echostr】也是可以的。
起初让我困惑的是我以为/wechat接口仅仅是用作校验接入,其实后续微信转发用户消息也是同样的接口,只不过请求方式改为‘POST’,接入成功后,你的公众号就进入了开发者模式,之前微信公众号后台管理页面中操作定义的菜单等其他自动回复相关功能就无效了,所有的功能处理全部进入自己的后台服务。
事件类型
现在,公众号的所有用户触发事件都会通过‘POST’请求将相关消息的XML数据包转发到你的接口,首先要做的就是想XML数据包解析,拿到我们真正想要的数据参数。
解析出的【handleMsg result】中,FromUserName【发送用户】,ToUserName【接收方微信】在回复消息时也需要指定,MsgType定义了当前消息类型,大致有普通消息、事件推送两大类;事件推送如【用户关注、取消关注、自定义菜单链接】等相关事件,普通消息同微信客户端发送消息中的基本功能【文本、图片、语音、视频、位置、链接】等,可以根据不同消息类型做对应处理。
消息处理
微信在调用转发的服务消息接口后一般超5s未响应就会超时,如果部分场景下调用外部api或者大模型相关处理,需要注意是否会超时。
消息模板
回复消息时可以根据需要返回相对应消息类型,此时就需要用到XML消息模板,如【文本、图片、语音、视频、音乐、图文】各种类型,需要注意的是,类似语音,图片,视频相关消息需要将素材资源通过资源接口上传到微信服务器才可以使用。
参考链接
[微信公众号消息接入] https://cnodejs.org/topic/5939fa64d3575f1303de3aab