【背景/价值】
业务产生的消息通知到用户,有各种各样的形式,app内消息、系统内消息、邮件通知、短信通知等,本文不涉及以上消息形式,仅为微信公众号的模板消息使用说明。
在尝试的过程中发现,微信的消息包括,公众号模板消息和小程序的模板消息,各有各的优势和局限:
公众号模板消息:先说局限,只有认证的服务号,才能开通模板消息,而且公众号需要设置服务类目。不过作为个人开发者,可以使用测试号尝鲜,如何使用公众号的测试号,可以自行百度。
小程序模板消息:分为一次订阅消息和长期订阅消息。小程序的优势在于,不需要认证的服务号,只要有小程序即可使用。只是一次订阅消息跟用户使用小程序有关,长期订阅消息又跟服务类目有关。具体情况请自行查看微信的说明,本次实现最终选择的是公众号模板消息,没有使用小程序的消息。
本次实验,最终实现的效果是,通过访问一个URL,调用程序的模板消息接口,实现通过公众号将消息推送给用户。这种方式的价值在于,可以在程序中调用这个能力实现消息通知,或者在数据库触发器上调用这个URL,实现消息通知(比如将OA、ERP等系统的通知消息,通过微信发送给用户)。
【使用步骤】
1、准备好微信公众号的测试号(有认证的服务号当然也可以),准备好发送目标用户的openid、模板消息等。https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
2、做好内网穿透(花生壳、金万维的快解析或者自建ngrok、frp服务器均可,注意,现在第三方的内网穿透工具都需要做实名认证),并将服务器外网地址配置到测试号上。
3、下载源码https://gitee.com/kanen/weixin-java-mp-msg,源码为java springboot实现(如何启动服务,请先学习springboot)启动服务前,请先将appid、appsecret、接收消息的用户的openid、模板消息ID,替换成自己的实际参数。
4、启动服务后,调用消息发送接口https://{domain}/wx/sendmsg/send 该接口的实现在:WxSendMsgController中,具体逻辑可以自行查看。
5、接口调用成功后,如何使用(比如在数据库触发器上调用这个接口。)自行百度吧~
【特别说明】
该实验项目以com.github.binarywang的weixin-java-mp-demo为基础,参考了Thinkingcao的模板消息示例代码。在此感谢。