「从模板消息改版订阅消息」小程序推送

前言

只有光头才能变强。

文本已收录至我的GitHub精选文章,欢迎Starhttps://github.com/ZhongFuCheng3y/3y

如果近期有看我文章的同学,会知道我最近在公司做的是推送系统。推送系统在我这也叫做消息管理平台,其实很容易理解:提供一个支持多渠道发送消息的系统。

推送系统支持的渠道

在前段时间,微信公布:小程序模板消息接口将于2020年1月10日下线,开发者可使用订阅消息功能

底层接口的变动,对程序员来说意味着什么,你懂的。

人在家中坐,班从天上来

本篇文章主要来聊聊我这边是怎么发送小程序消息的,以及改版后的简单介绍,希望对大家有帮助。

  • 本文不涉及任何的高深知识,放心观看。

一、前置知识

发送小程序消息其实很简单,微信提供了微信官方文档供我们开发者去查阅相关的基础知识,提供HTTP接口给我们去方便调用:

微信文档

对开发者来说,发送小程序消息总结来说就三步:

  • 在微信后台创建模板
  • 获取下发的权限
  • 调用发送接口,发送消息

无论是以前的模板消息,还是现在新的订阅消息,步骤都是一样的。

二、模板消息和订阅消息的区别

为什么微信要把模板消息下线,要上线订阅消息呢?我们从发送小程序的步骤来看,只有“获取下发的权限”是可动的,其余的两步都是相同的。

我们开发者要借助微信平台向用户发消息,需要一个理由(下发的权限)。因为微信还是注重用户体验的。

2.1 模板消息

模板消息下发的理由是:用户最近在小程序活跃过,有过交互的行为(比如说表单提交)。那么开发者可以从这些交互行为中收集formId

一条formId会保留7天,当我们调用发送接口的时候需要消耗一条formId。如果该用户没有formId的话,那么我们则会发送失败

  • 重点:发送模板消息一定要携带formId

说白了,这个formId就是用户与小程序的交互凭证。微信认为:用户最近使用过你的小程序,你才可以给他/她发送消息。

2.2 订阅消息

模板消息的下发理由我们可以发现:下发的权利是掌握在我们开发者手上的,只要我们通过用户的各种行为收集到大量的formId,那我们在7天内就可以发送多条消息给到用户。

订阅消息的下发理由是:把消息是否推送的权利还给用户。用户来决定能不能收到推送,简单来说就是:

  • 当用户触发某些场景时,给用户弹框,让用户决定是否收到推送(而且只会收到一次)
示例

2.3 让用户收到自己想要的消息

在最开始使用微信的时候,你可能还能收到一些营销类的小程序通知,但近期你应该就收不到的。

  1. 不允许恶意诱导用户进行触发操作,以达到可向用户下发模板目的
  2. 不允许恶意骚扰,下发对用户造成骚扰的模板
  3. 不允许恶意营销,下发营销目的模板

标题不能涉及营销相关内容,包括不限于:消费优惠类、购物返利类、商品更新类、优惠券类、代金券类、红包类、会员卡类、积分类、活动类等营销倾向通知

微信会检测你的模板有无问题,如果有问题就会把你的模板给删掉(当然了,也不让你创建可能是营销类的模板)。没有了模板,消费就发不出去了。

总的来说:微信会通过各种方式来限制你的消息下发,目的是想让用户收到他自己想要的消息。这次将模板消息改成订阅消息,更是把下发消息的权限交给用户了。

至于这件是好事,还是坏事。不同人有不同的看法。

有的人会觉得:让用户选择是否收到消息,用户所需要的操作就多了,弹窗也是对用户的一种打扰。如果用户不熟悉订阅消息或者直接点了“取消”,小程序就没法通知到用户了,用户可能因此错失服务,对商家和用户都是损失。

有的人也会觉得:把推送消息的权利掌握在用户手里,能很大程度上避免商家的恶意骚扰

对于此次的改版,可以在评论区下谈谈你的看法~

三、我们是怎么做的?

我这边来简单说一下我这边是怎么接入推送小程序消息的,希望对想要接入小程序消息的同学有一定的帮助。

首先,针对在微信后台创建的模板,我们是先把微信后台的模板拉取到自己的数据库保存起来,然后再做一个管理页面对模板进行管理。

后台管理页面

如果某个消息使用到了该模板,我们同样也会做关联起来(因为这样可以方便查阅哪些消息使用了这个模板)

  • 正因为有了这个功能,所以我们这次迁移就可以很方便整理出目前还在使用的模板有哪些,使用的场景在哪。后续只要将消息的模板ID改成订阅消息的模板ID就好了。
将模板同步到自己的数据库

像我司不单单只有一个小程序,所以要对小程序进行分类,这里就不再赘述了。实际上就是封装了一层,例如:蘑菇街女装 标识为88,蘑菇街直播购物台标识为 99

在设计和写代码的时候要考虑后续的可扩展性

模板消息的时候,前端会打formId的点,我这边会在StormMQ的数据清洗放到Redis里边。然后我这边在发送之前就判断用户有没有对应的formId

formId流程

现在微信将模板消息改为订阅消息,formId的收集到我这边的Storm解析进Redis的操作都免去了。微信貌似也没有提供接口给我判断用户是否有授权过。所以我只能在调用下发接口时,根据返回值来判断用户是否授权。

如果新接入微信小程序消息的同学,那整块流程就简单很多了。

  • 前端同学只要在必要的场景下弹窗,让用户授权
  • 后端的同学直接下发到用户,根据返回值判断下发的情况。

所以,现在我这边如果要下发一条消息主要有两个步骤:

  1. 在推送后台新建一条消息(选择微信的模板、消息创建者的基本信息、消息相关的规则处理(是否去重等等)
  2. 业务方调用我暴露的接口

业务方调用我这边的暴露接口,我主要做以下的事情:

  1. 对业务方的传入参数进行简单的校验,拼接成完整的一个模板消息内容
  2. 如果业务方传入的是userId,我这边需要转为openId
  3. 对消息速度限流,调用微信的下发接口
流程

除了消息下发以后,我们还会考虑到消息下发是否成功以及效果的问题(有无实时数据供查看,有无离线报表分析),所以我这边是这样做的:

  • 在关键的链路上进行打点
    • 业务方调用我接口,我已经确认收到消息了
    • 这条消息由于业务原因被过滤掉了(可能是userId转openId失败了)
    • 在下发时可能由于模板/token/用户无授权等等情况
  • 将打点的信息写到Kafka,再由Storm清洗,实时的查询的进Redis,离线的落到Hive表

这里的打点实际上就是我们打日志

报表or查询消息发送状态

比如下面是我实时推送后,根据userId查询推送的情况:

实时查看消息的发送情况

最后

推广服务器89/年,229/3年,买来送自己,送女朋友马上过年再合适不过了,买了搭建个项目给面试官看也香,还可以熟悉技术栈,(老用户用家人账号买就好了,我用我女朋友的😂)。扫码或者点击购买

image

搭建教程,从0开始一步一步带你搭建😂

总的来说,小程序推送消息并不难,也仅仅是几个接口而已。现在改版为订阅消息后,那接入起来就更加方便了。再过一个月,你们使用小程序的时候可能就会收到各种的弹窗提醒你们是否要授权xxx模板消息。

不知道大家看完我这篇文章有什么看法,欢迎在评论区留言。我会经常分享我在工作中遇到的问题以及学习后精心整理后的笔记,希望对大家有所帮助,觉得我的文章还有点东西,不妨关注我!

本已收录至我的GitHub精选文章,欢迎Starhttps://github.com/ZhongFuCheng3y/3y

乐于输出干货的Java技术公众号:Java3y。公众号内有300多篇原创技术文章、海量视频资源、精美脑图,关注即可获取!

转发到朋友圈是对我最大的支持!

非常感谢人才们能看到这里,如果这个文章写得还不错,觉得「三歪」我有点东西的话 求点赞 求关注️ 求分享👥 求留言💬 对暖男我来说真的 非常有用!!!

创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,649评论 0 15
  • 可以在遵守官方相关运营规范、保证用户体验的情况下, 倒腾一个「让用户一次触发、多次推送,甚至群发模板消息」的解决方...
    奇点一氪阅读 3,747评论 0 5
  • 【2018.10.28】Sketch Today Day 33 (P3) 昨天中断了一天,今天继续,又画了很多可爱...
    栖月阅读 205评论 1 0
  • 回想奥黛丽赫本一生的婚姻,她曾几次不顾母亲的反对和自己喜欢的人在一起,最终仍是以悲剧收尾。 第一次婚姻,她的老公因...
    成长记录袋阅读 422评论 0 0
  • 一、学习与实践 1.付出不亚于任何人的努力 2.要谦虚,不要骄傲 3.要每天反省 4.活着,就要感谢 5.积善行,...
    015058阅读 143评论 0 1