经过了几天的奋战,终于把微信服务号的模板消息给写完了。后端其实没花多少时间,因为之前已经有同学提过pull request
了,我在这基础之上简单优化下就完事了,主要的时间都是花在前端上,对前端页面和参数的适配比较麻烦。
消息推送平台推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉钉】等消息类型。
不多说了,先来看看效果图吧。
要实现微信服务号的模板消息推送,首先我们得有一个服务号。要值得注意的是,服务号是服务号,订阅号是订阅号。服务号会有单独的聊天框,所以Java3y实际上是一个订阅号。
服务号申请要有企业的资料,而我,是没有的。那我这次是怎么调试的呢?后来经朋友圈提醒,微信是能让我们申请测试号的,相关的API都是能用的,得知了以后,那我不就屁颠屁颠花了几天实现了嘛。
申请测试号链接:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
进入到测试号以后,我们能把自己加入到测试的微信号内,拿到对应的openId
创建几个测试下发的模板;
0reG3uUoUSonh0jGi-8ufj3VheCFlaoXqxBxD-zvswE
待处理作业提醒
{{first.DATA}} 作业类型:{{keyword1.DATA}} 作业名称:{{keyword2.DATA}} 所属项目:{{keyword3.DATA}} 提交日期:{{keyword4.DATA}} {{remark.DATA}}
我们还能直接拿到appID
和appsecret
,这就相当于当前服务号账号的信息。那我要做的就是把这个信息加入到消息推送平台的账号体系下。
在新建模板发送消息的时候,我们就可以选择到这个被加入到账号体系的账户,拿到这个账户下的模板列表,再得到具体模板的详情信息啦,这会有个联动的效果。
我这就一个完整的消息模板,来让大家看看,顺便讲讲相关的功能吧。
保存之后就会跳转到模板的列表页,就能看到刚才所建的模板啦。
这时候,我们点击测试按钮,就能看到下发的效果:
至于功能实现,我就不在这多说啦。因为消息推送平台的架构已经搭好了,接入消息这个过程没多少工作量,主要是适配整个架构代码的实现就好了。至于做了什么改动,你们看commit就好啦。
几个关键代码入口:
- 前端交互:com.java3y.austin.web.controller.OfficialAccountController
- 发送消息入口:com.java3y.austin.service.api.impl.service.SendServiceImpl#send
- 真正处理微信服务号模板消息发送入口:com.java3y.austin.handler.handler.impl.OfficialAccountHandler#handler
如果想学Java项目的,我还是强烈推荐我的开源项目消息推送平台Austin(8K stars) ,可以用作毕业设计,可以用作校招,可以看看生产环境是怎么推送消息的。开源项目消息推送平台austin仓库地址:
消息推送平台推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉钉】等消息类型。