微信小程序订阅消息(模版消息)

1,235 阅读2分钟

微信小程序模板消息接口将于2020年1月10日下线,开发者可使用订阅消息功能。编写该功能需要以下步骤:

  1. 编写模版消息,登录 mp.weixin.qq.com 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。

截屏2022-04-04 下午11.36.45.png 2.获取下发权限,也就是你想发消息,必须接受人的同意,也就是如下图所示**

image.png 如果没有经过同意,该消息就发不出去。一次性订阅消息、长期订阅消息,详见接口 wx.requestSubscribeMessage

设备订阅消息,详见接口 wx.requestSubscribeDeviceMessage

调起客户端小程序订阅消息界面,返回用户订阅消息的操作结果。当用户勾选了订阅面板中的“总是保持以上选择,不再询问”时,模板消息会被添加到用户的小程序设置页,通过 wx.getSetting 接口可获取用户对相关模板消息的订阅状态。

代码如下所示

wx.requestSubscribeMessage({
            tmplIds: ['KXoC0NS_Q8Z62cn15T-UkU-rpQEJn8nxM'],
            success (res) { console.log(res);}
          })
          wx.getSetting({
            success (res) {
                console.log(res);
              console.log(res.authSetting)
              // res.authSetting = {
              //   "scope.userInfo": true,
              //   "scope.userLocation": true
              // }
            }
          })

具体参数可以参考一次性订阅消息、长期订阅消息,详见接口 wx.requestSubscribeMessage

设备订阅消息,详见接口 wx.requestSubscribeDeviceMessage

3.调用接口下发订阅消息
一次性订阅消息、长期订阅消息,详见服务端接口 subscribeMessage.send

设备订阅消息,详见服务端接口 hardwareDevice.send

该接口应在服务器端调用,详细说明参见服务端API

发送接口: api.weixin.qq.com/cgi-bin/mes… 具体参数可点链接:subscribeMessage.send

wx.request({
            url:'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=55_8O_fxVtv-4hks4WkmFvvMFXhQuofhlGT1wmRIIHcoelpcVA9f9KapWEt9bAkvu-CpCMJu2uP-SuLZnp_Baus3IkfDB4ugRw23HB-dt-c09VRCbAHAMIT',
            method:'POST',
            data:{
                touser:'ohJ_25erYrEgoPo8',
                template_id:'KXoC0NS_Q8Z62cn15T-tXQEJn8nxM',
                data:{
                    name1:{value:'等等'},
                    phrase2:{value:'已申请'},
                    thing3:{value:'新'},
                    time4:{value:'2022-04-04'},
                    thing5:{value:'新申请架'}
                },
                page:'index'
            },
        success:(res) =>{
            console.log(res)
        }})

上面的data中的参数其实就是消息模版中的参数,如图所示:

截屏2022-04-04 下午11.59.43.png

这样就完成了订阅消息的开发,但是需要注意一下几点:

access_token:接口调用凭证

代码如:

wx.request({
              url:'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx43fcfd27&secret=f8fb6b1f564a51cc2b',
              header:{
                'content-type': 'application/json' // 默认值
              },
              success(res){
                  console.log(res.data.access_token);
              }
          })

而在获取access_token时需要secret,这个获取方式是: mp.weixin.qq.com

截屏2022-04-05 上午12.05.08.png

以上所有appid,templateid等信息均是假的,需要替换成自己的相关信息,如有错误,欢迎指正。