微信小程序发送模板消息限制的问题

前一段时间在开发微信小程序及后端接口,其中有一个功能是在a用户给b用户分配任务时,需要给b用户的微信发送一个提醒消息。但在开发过程中发现小程序发送模板消息有限制,不能满足我们的需求场景。

1、微信对模板消息的限制

微信小程序发送模板消息限制的问题_第1张图片
微信小程序允许下发模板消息的条件分为两类: 支付,或者提交表单。
通过 1 次支付,小程序可以向该用户下发 3 条模板消息。
通过提交表单来下发模板消息的方式,限制在 7 天内可以向用户推送一条模板消息。
这种消息的控制放的太宽的话,很容易对用户的体验造成很大冲击,给用户带来骚扰。但是,用户 1 次触发、7 天内推送 1 条通知明显是不够用的。
比如,小打卡小程序利用模板消息的推送来提醒用户每天打卡,只能在用户前一天打卡的情况下,获取一次推送模板消息的机会,用于第二天向用户发送打卡通知。
微信小程序发送模板消息限制的问题_第2张图片

2、方案

现有的解决方案主要是收集用户的formid,做法是让用户在小程序中主动点击按钮向服务器发送formid,百度搜索“小程序 模板消息 formid”会有一大堆文章介绍。这种解决方案还是比较复杂,一个小小功能需要编写大量辅助代码。

市面上有公司专门针对这个开发者痛点做了一款产品,百度搜古人云即可找到。他的优点是编码少,集成到项目中可以实现推送功能。缺点就是免费版限制多,需要付款。

3、生活中的微信消息功能

我在麦当劳用餐时,会收到麦当劳发送的用餐评价提醒。这是在没有用户主动触发的条件下实现的,意味着微信有这样的接口满足我们的业务需求。
微信小程序发送模板消息限制的问题_第3张图片

4、调研

后来查看微信接口,查看到微信公众号有这样的接口能满足业务需求,即申请微信公众服务号,在发公众号模板消息,也可以跳转到小程序中。模板消息接口

发送模板消息
接口调用请求说明
http请求方式: POST
https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
POST数据说明
POST数据示例如下:

  {
           "touser":"OPENID",
           "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
           "url":"http://weixin.qq.com/download",  
           "miniprogram":{
             "appid":"xiaochengxuappid12345",
             "pagepath":"index?foo=bar"
           },          
           "data":{
                   "first": {
                       "value":"恭喜你购买成功!",
                       "color":"#173177"
                   },
                   "keyword1":{
                       "value":"巧克力",
                       "color":"#173177"
                   },
                   "keyword2": {
                       "value":"39.8元",
                       "color":"#173177"
                   },
                   "keyword3": {
                       "value":"2014年9月22日",
                       "color":"#173177"
                   },
                   "remark":{
                       "value":"欢迎再次购买!",
                       "color":"#173177"
                   }
           }
       }

参数说明

参数 是否必填 说明
touser 接收者openid
template_id 模板ID
url 模板跳转链接
miniprogram 跳小程序所需数据,不需跳小程序可不用传该数据
appid 所需跳转到的小程序appid(该小程序appid必须与发模板消息的公众号是绑定关联关系,暂不支持小游戏)
pagepath 所需跳转到小程序的具体页面路径,支持带参数,(示例index?foo=bar),要求该小程序已发布,暂不支持小游戏
data 模板数据
color 模板内容字体颜色,不填默认为黑色

注:url和miniprogram都是非必填字段,若都不传则模板无跳转;若都传,会优先跳转至小程序。开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时,将会跳转至url。

备注

可借鉴点:古人云应用记录所有发送成功的消息和失败的消息,及量化形成数据报表。

你可能感兴趣的:(开发)