现在一次性订阅是只能用户点一次才能发送一次,而针对长期模板只有规定的几种类目政务、民生、交通等等的才可以,所以说感觉这功能其实已经不是很适合使用了,只适合一些特别的场景才可以使用。

地址:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html

在这里插入图片描述

一、先去小程序管理后台,添加订阅模板

在这里插入图片描述

二、页面让用户点击订阅(wx.requestSubscribeMessage)

在这里插入图片描述

<button slot="right-icon" type="primary" @click="alarmSubScrube" size="mini">{{alarmStatus ? '已订阅':'立即订阅'}}</button>

方法

alarmSubScrube(e){
    wx.requestSubscribeMessage({
      tmplIds: ['模板ID'],
      success (res) { 
          console.log(res);
          if (res['模板ID'] == 'accept') {
              this.alarmStatus = true
            wx.showToast({
              title: '订阅成功',
              icon: 'success',
              duration: 2000
            })
          } else if (res['模板ID'] == 'reject') {
              this.alarmStatus = false
            wx.showToast({
              title: '用户取消订阅',
              icon: 'error',
              duration: 2000
            })
          } else if (res['模板ID'] == 'ban') {
              this.alarmStatus = false
            wx.showToast({
              title: '订阅已被封禁',
              icon: 'error',
              duration: 2000
            })
          } else if (res['模板ID'] == 'filter') {
              this.alarmStatus = false
            wx.showToast({
              title: '订阅模板错误',
              icon: 'error',
              duration: 2000
            })
          }else {
              this.alarmStatus = false
            wx.showToast({
              title: '订阅失败',
              icon: 'error',
              duration: 2000
            })
          }
      },
      fail (err) {
          this.alarmStatus = false
          wx.showToast({
            title: err.errCode + err.errMsg,
            icon: 'error',
            duration: 2000
          })

      }
    })
},

三、发送订阅信息(使用postman来测试)

地址:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-message-management/subscribe-message/sendMessage.html

在这里插入图片描述

(1)从参数可以看到,我们要先拿到access_token

接口:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential

在管理后台获取小程序的appID和secret密钥

在这里插入图片描述

(2)获取用户的openID

在页面调用wx.login

实际业务逻辑应该是用户在页面出发wx.loin的时候获取到的code,然后后端请求获取到openID,存在用户信息上

(3)发送订阅信息

接口:https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=上面获取到的token

参数

{
	"touser": "用户openID",
	"page": "pages/warnInfo/warnInfo?id=9ec7c41c16db4a0eb29396bc6db79e77", //点击通知进入的页面
	"lang": "zh_CN",
	"data": {
        //这些字段都是有字符要求的,请仔细看文档
		"character_string6": {
			"value": "SH079600022031"
		},
		"thing1": {
			"value": "测试"
		},
		"thing2": {
			"value": "扬尘噪声黄色报警"
		},
		"time3": {
			"value": "2023-10-19 01:00"
		},
		"thing4": {
			"value": "监测到pm.25达到82.0 ug/㎡"
		}
	},
	"template_id": "模板ID",
	"miniprogramState": "trial" //developer为开发版;trial为体验版;formal为正式版;默认为正式版
}

在这里插入图片描述

(4)错误码

在这里插入图片描述

(5)效果

在这里插入图片描述

以上就可以实现用户点击订阅,然后我们用postman调试了,但是实际上这些调用应该是在服务端调用,防止信息泄露。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐