微信小程序模板消息群发解决思路

基于微信的通知渠道,微信为开发者提供了可以高效触达用户的模板消息能力,以便实现服务的闭环并提供更佳的体验。(微信6.5.2及以上版本支持模板功能。低于该版本将无法收到模板消息。)

模板推送位置:服务通知(点击查看详情还能跳转到下发消息的小程序的指定页面)

模板下发条件:用户本人在微信体系内与页面有交互行为后触发

微信小程序模板消息使用说明(官方文档):https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html

为了防止对模板消息的滥用,带来不好的用户体验,小程序对模板消息推送做了相应的限制。

下发条件说明(触发模板消息下发的两个场景):

  1. 支付

    当用户在小程序内完成过支付行为,可允许开发者向用户在7天内推送有限条数的模板消息(1次支付可下发3条,多次支付下发条数独立,互相不影响)

  2. 提交表单

    当用户在小程序内发生过提交表单行为且该表单声明为要发模板消息的,开发者需要向用户提供服务时,可允许开发者向用户在7天内推送有限条数的模板消息(1次提交表单可下发1条,多次提交下发条数独立,相互不影响)

  也就是说,用户提交一次表单,会提供给开发者一次推送权限,多次提交的情况下下发条数独立。所以如果开发者想要哎7天内无限制的为用户推送消息,需要做的就是-->从用户那里获取足够多的推送权限(推送权限就是form表单的formid)。

  所以,我们可以在前端页面来收集用户的formid,然后保存在服务器上。根据小程序的文档说明:用户在小程序内发生过提交表单行为且该表单声明为要发模板消息的,只能在用户发生提交行为的时候收集formid,所以,我们可以把页面上用户可点击的按钮或其他元素用表单组件中的button按钮组件来代替,把用户的交互点击的bindtap事件通过表单的bindsubmit来代替 ,从而捕获用户的点击事件来产生更多的formId。等到真正需要网络请求的时候将收集到的formid发送至服务器保存。发送成功以后清空formid,以便再次收集新的formid。

  后端在发送模板消息的时候先从保存的formid中挑出未过期的一条formid,删除已过期的不可用的fromid以及当前将要用的formid。

  注:这只是一个解决思路,请务必在严格遵守小程序运营规范的前提下把本思路作为一个参考。

  未解决问题:如果用户在一周内没有访问或点击过小程序中的任何组件,那我们就收集不到有效的fromid,也就意味着我们失去了给用户发送模板消息的权限,这种情况下该怎么办?

时间: 2024-10-16 19:01:44

微信小程序模板消息群发解决思路的相关文章

设置小程序模板消息keyword_id_list问题

设置小程序模板消息时,会传一个keyword_id_list,这个参数是由一串数字组成的,开发时如果碰到设置错误,会有疑问这串数字是怎么来的,这里解释一下: 小程序的keyword_id_list主要是来控制小程序模板消息发送给顾客的格式的,具体是什么格式是有开发者自行去选择定义的 那开发者如何去自行定义这些数字呢?这个数字实际上是在微信小程序的模板消息后台获取的 原文地址:https://www.cnblogs.com/gramblog/p/11636809.html

微信小程序订阅消息

微信小程序后台添加订阅消息,目前大多数服务类目下仅支持一次性订阅,持续更新中.若没有符合的消息模板,申请自定义模板即可,审核周期是挺长的. 填写模板时,一定要注意参数类型. 小程序发送订阅消息必须要获取用户接收消息的授权 小程序需调用 wx.requestSubscribeMessage({ tmplIds: ['RYdO0OyVwOmFJ5M9whapadK55agtmvWuumc_utFr7D4', 'bgEvkAITRuYbPET0IOPn8QPurVkXP7V6vjfPl7XDzrM']

微信小程序-滚动消息通知

写在前面: 微信小程序学的不太多,做了一个简单的项目,回来很快时间内把在深圳两天的房租给赚回来了. 这次我主要想总结一下微信小程序实现上下滚动消息提醒,主要是利用swiper组件来实现,swiper组件在小程序中是滑块视图容器. 我们通过vertical属性(默认为false,实现默认左右滚动)设置为true来实现上下滚动.  (需要注意的是:只要你的swiper存在vertical属性,无论你给值为true或者false或者不设参数值,都将实现上下滚动) wxml 1 <swiper clas

微信小程序 --- 模板的使用

由于微信小程序文件大小的限制,可以把一些公用的文件 单离出来形成模板,从而被各个模板引用: 定义模板第一种方式: 新建一个目录: 写入: <text>hello world</text> 模板引入:(这里引入后面一定要有反斜杠   /  ) <include src="../template/header" /> 定义模板第二种方式: 定义一个 common.wxml 文件 写入: <template name="header&quo

微信小程序bug记录与解决

微信小程序bug记录 textarea textarea在模拟器上没有padding,可是在真机上会自带padding,而且在外部改不了,并且在安卓和IOS上padding还不一样 第一张图是在开发工具上的,第二张图是在IOS真机上的.从上图可以看出来,在开发工具上显示很正常,而且没有padding,可是在真机上左上角就出现了padding,并且无论你在外部对textarea的padding做任何处理,都无法覆盖. 目前有一种解决方式是根据ios和android的不同平台来给teaxarea设置

C# .net 填充无效,无法被移除 微信小程序解密失败的解决办法

微信小程序获取用户信息诸如unionId的时候需要解密,如果遇到偶然的解密失败(填充无效,无法被移除),原因很有可能是session_key错误, 也是就你用作解密的session_key并不是微信用作加密的那个了,但是并不代表你的session_key已经失效. C#解密代码(亲测有效,可以直接复制使用) /// <summary> /// Aes解密 /// </summary> /// <param name="str">需要解密的字符串<

小程序模板消息使用

最近公司项目需要做一个活动,活动的服务通知,对小程序的模板消息了解了一下! 模板消息的实现,前端主要是提供几个参数给后台就好了.因为,无法把https://api.weixin.qq.com这个域名添加到小程序的请求域名.这里是设置了不校验域名.. 1.首先小程序后台的模板消息添加一个模板! 2.wxml <form bind:submit="submitTest" report-submit="true"> <button form-type=&

小程序模板消息后台发送(集体通知)

1.在小程序后台配置好模板 2.其中curl需要加上一个参数设置(https发送需要) 3.项目代码示例:其中有token过期更新的处理方法 /* * 通知最近7天小程序用户 * param() */public function xiaoUsersNotice(Request $r) { $data = $r->all(); $name = $data['name'];//商品名称 $tmp = $data['jianjie']; $char = implode(".", $t

errcode 4103 invalid page hint 小程序模板消息推送遇到的坑

invalid page hint一直提示这个坑爹的就是,我的小程序没发布之前,也就是测试版本用这个格式是可以的 /pages/myGroup/myGroup?groupid=22***但是发布成功以后,线上版本经常报错.说页面无效,后来不断的改,也百度搜了下别人踩到的坑,后来发现去掉斜杠,用相对路径就可以了. pages/myGroup/myGroup?groupid=22**** 上面这个格式就可以了 仅此记录下我踩到的坑 其他如果还有不明白的地方   可以加我微信 qiufeng2983