• 售前

  • 售后

热门帖子
入门百科

Nodejs 微信小程序消息推送的实现

[复制链接]
刘得福姊妹 显示全部楼层 发表于 2021-10-25 19:29:39 |阅读模式 打印 上一主题 下一主题
选择或创建订阅消息模板


登录到微信小程序内里找到功能->订阅消息。可以在公共模板库里选择必要的模板,如果没有找到自己必要的也可以自己创建然后等候考核、

选择完模板查察详情会得到模板ID,以及发送推送时必要的字段、

小程序发送订阅的请求


必要用到上一步获取的模板Id
  1. // 小程序
  2. <Text className='rights-buy' onClick={this.messageSubmit}>
  3. 入驻申请
  4. </Text>
  5. // 入驻申请消息订阅
  6. messageSubmit = () => {
  7. Taro.requestSubscribeMessage({
  8.   tmplIds: ['SuGMwqyYY9cocuP-LxfElcM3a7ITaF34lKNux6EaE9'],
  9.   success: (res) => {
  10.    // 调用服务端接口,在数据库写入一条订阅记录
  11.    // this.subscribeDeal()
  12.   }
  13. })
  14. }
复制代码
服务端发起推送


推送一样寻常有两种
      
  • 手动触发、  
  • 还有就是订阅消息后,达到某个条件自动触发推送、
对于第一种情况,就直接调用微信的推送接口就好了。第二中情况轻微贫苦一点,可以加一个定时的任务,大概使用相干的队列库、等条件符合了再触发、

必要留意的地方
      
  • 发送推送的时间必要用户的openid,以及模板id。具体的推送内容字段,在第一步模板详情内里可以查察、  
  • 调用微信推送的接口的时间必要access_token,最好缓存一下,频繁调用会有失效的题目、
获取access_token并缓存
  1. async getAccessToken () {
  2. const { appId, appSecert, host } = this.app.config.idolWxAConfig;
  3. return new Promise(async (resolve) => {
  4.   const currentTime = new Date().getTime()
  5.   const redisToken = await this.app.redis.get('wxtoken').get('token') || '{access_token: "", expries_time: 0}'
  6.   const accessTokenJson = JSON.parse(redisToken)
  7.   if (accessTokenJson.access_token === '' || accessTokenJson.expries_time < currentTime) {
  8.    const res = await this.ctx.curl(`${host}/cgi-bin/token?appid=${appId}&secret=${appSecert}&grant_type=client_credential`, { dataType: 'json' })
  9.    if (res.data) {
  10.     accessTokenJson.access_token = res.data.access_token
  11.     accessTokenJson.expries_time = new Date().getTime() + (parseInt(res.data.expires_in) - 200) * 1000
  12.     await this.app.redis.get('wxtoken').set('token', JSON.stringify(accessTokenJson))
  13.     resolve(accessTokenJson)
  14.    }
  15.   } else {
  16.    resolve(accessTokenJson)
  17.   }
  18. })
  19. }
复制代码
向微信发送推送请求
  1. async sendSubscribeMsg (openid) {
  2. let requestData = {
  3.   "touser": `${openid}`,
  4.   "template_id": "SuGMwqyYY9cocuP-LxfElcM3a7ITaF34lKNux6EaE9",
  5.   "page": `/pages/certification/index`,
  6.   "data": {
  7.     "phrase2": {
  8.      "value": `审核通过`
  9.     },
  10.     "thing3": {
  11.      "value": `您的申请已经审核通过`
  12.     }
  13.   }
  14. }
  15. const { host } = this.app.config.idolWxAConfig;
  16. // 获取access_toekn
  17. const tokenJson = await this.ctx.service.wx.getAccessToken()
  18. const res = await this.ctx.curl(`${host}/cgi-bin/message/subscribe/send?access_token=${tokenJson.access_token}
  19. `, {
  20.   method: 'POST',
  21.   contentType: 'json',
  22.   data: requestData,
  23.   dataType: 'json'
  24. });
  25. if (res.data.errmsg === 'ok') {
  26.   console.log('========推送成功========')
  27.   // TODO
  28. } else {
  29.   console.log('========推送失败========')
  30.   // TODO
  31. }
  32. }
复制代码
到此这篇关于Nodejs 微信小程序消息推送的实现的文章就介绍到这了,更多相干Nodejs小程序消息推送内容请搜索脚本之家从前的文章或继承欣赏下面的相干文章渴望各人以后多多支持脚本之家!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作