微信小程序发送一次性订阅消息

cduoa cduoa     2023-03-31     367

关键词:

原文

本文记录用户在微信小程序中主动订阅一次性消息,服务器接收订阅请求,定时通过发送订阅消息,最终在微信“服务通知”中显示。

一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。

一、在微信小程序后台启用并配置消息推送

登录微信小程序后台,在开发->开发管理->开发设置,下拉到消息推送面板,填写自己的服务器推送地址。

Token(令牌)和EncodingAESKey(消息加密密钥)随意,设置后最好不要再改变也不要泄露。

二、搭建服务器推送接口服务

步骤一中提到的服务器推送地址,需要自己编写代码搭建一个web api服务。

此接口服务要求,包括2个同名的接口,一个支持http get ,另外一个是http post。

在步骤一中设置推送地址时,腾讯服务器将请求http get的接口以进行权限归属认证,只调用一次。

当用户在微信小程序中主动订阅一次性消息时,腾讯服务器将请求http post的接口,发送用户的相关行为事件结果到开发者服务器。

http get接口示例:

[HttpGet]

public string Get(string signature, string timestamp, string nonce, string echostr)

return echostr;

http post接口示例:

[HttpPost]

public string Get()

try

StreamReader stream = new StreamReader(Request.Body);

string requestContent = stream.ReadToEndAsync().GetAwaiter().GetResult();

stream.Close();

//Tools.Log.WriteLog($"接收:requestContent");

return string.Empty;

请注意到这两个接口名称都是Get,其中http post接口中的参数requestContent就是当用户触发订阅消息弹框后,用户的相关行为事件结果。开发者须保存并解析这些数据,后续发送订阅消息时将会用到。

requestContent数据示例:

"ToUserName": "gh_123456789abc",

"FromUserName": "o7esq5OI1Uej6Xixw1lA2H7XDVbc",

"CreateTime": "1620973045",

"MsgType": "event",

"Event": "subscribe_msg_popup_event",

"List": [

"TemplateId": "hD-ixGOhYmUfjOnI8MCzQMPshzGVeux_2vzyvQu7O68",

"SubscribeStatusString": "accept",

"PopupScene": "0"

],

三、获取模板 ID

登录微信小程序后台,打开功能->订阅消息,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。

四、在微信小程序获取下发权限

在微信小程序中引导用户订阅消息,调用wx.requestSubscribeMessage(Object object)获取权限。

参考文档:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html

注意,wx.requestSubscribeMessage函数不能在回调函数中触发,可以在bindtap事件中绑定。

wx.requestSubscribeMessage(

tmplIds: [''],

success (res)

)

其中tmplIds填写的是步骤三中的模板ID

如图在微信小程序“密码盾”中的“习惯打卡”功能模块。

点击消息提醒按钮,选择提醒时间

确定后,提醒次数加1

五、服务器接收处理用户的相关行为事件结果

用户订阅消息后,腾讯将调用步骤二中的http post接口,并发送用户订阅的相关行为事件结果。最好在服务器后台保存这些事件结果,包括模板ID,发送者,订阅次数、发送时间等信息。

六、服务器按时发送订阅消息

参考文档:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-message-management/subscribe-message/sendMessage.html

新建一个服务程序,定时查询用户的订阅消息列表,符合条件的组装数据下发订阅消息。

POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN

获取ACCESS_TOKEN,参考文档:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.html

每小时定时发送代码参考:

Thread t3 = new Thread(new ThreadStart(delegate ()

Tools.Log.WriteLog("定时发送订阅消息");

while (action)

try

DateTime now = DateTime.Now;

int nextMin = 60 - now.Minute;

Thread.Sleep(1000 * 60 * nextMin + 2000);

//调用发送订阅消息函数...

Thread.Sleep(1000 * 60 * 1);

catch (Exception ex)

Thread.Sleep(1000 * 60 * 1);

));

t3.IsBackground = true;

t3.Start();

七、问题记录

1、一次性订阅必须是用户自主订阅后,开发者方可以不限时间地下发一条对应的服务消息。且订阅1次发送一次。

2、目前发现发送的数据中包含“优惠券”等字眼,发送失败。

3、当用户自主订阅时选择拒绝,则该模板的订阅次数将清0。如已经订阅了100次,一朝拒绝,次数清0。

4、wx.requestSubscribeMessage不能传递业务参数,可以在订阅成功后再次调用自定义的接口,进而完善业务流程。

原文:https://www.luweidong.cn/details/141

微信小程序之再说“一次性订阅消息”

参考技术A“一次性订阅消息”,按照官方文档说明如下:这里使用条件有限制:用户自主订阅。如果用户没有订阅过,想做成通知类消息主动推送是不行的。譬如,用户点了外卖,订阅了订单派送通知,是可以的,但如果系统... 查看详情

微信小程序订阅消息

...取下发权限在小程序应用代码中通过以下方法发起授权。一次性订阅消息、长期订阅消息,详见接口微信官方说明-wx.requestSubscribeMessage(Objectobject)3.服务端在指定场景推送消息一次性订阅消息、长期订阅消息,详见服务端... 查看详情

微信小程序订阅消息

...取下发权限在小程序应用代码中通过以下方法发起授权。一次性订阅消息、长期订阅消息,详见接口微信官方说明-wx.requestSubscribeMessage(Objectobject)3.服务端在指定场景推送消息一次性订阅消息、长期订阅消息,详见服务端... 查看详情

微信小程序-订阅消息定时发送

...提醒功能,奈何没这么流量支持,所以只能做个记录。在微信公众平台-订阅消息中获取wx.requestSubscribeMessage(Objectobject)编写getOpenId的云函数...Talkischeap,showmethecode.index.wxmlindex.js获取openid云函数-index.js推送云函数定时发送需要用到... 查看详情

小程序发送模板消息给用户——一次性模板实现“长期订阅”(代码片段)

...息功能了,下面我使用Java语言来详细演示下如何使用一次性订阅消息发送消息给用户。1.微信发消息流程因为微信算是比较正式的社交软件,主动向用户发信息这个动作很容易被一些商家作为推销的手段,为了避免用... 查看详情

微信小程序订阅消息调研

...接收消息的权利交给用户呢?  众所周知,根据微信小程序模板消息规则,商家则可在不经用户同意的情况下,在限定时间内向用户发起限定条数的消息。比如原来使用模板消息支付完成后商家可在7天内发送3条模板消... 查看详情

微信小程序怎么实现消息推送

微信小程序怎么实现消息推送需要用户在微信小程序中订阅。就是当用户在小程序内点击特定按钮后会弹出申请订阅弹窗,同意后小程序才会在后续任意时间给该用户推送服务通知。但是微信订阅消息有如下几个特点:1、选择... 查看详情

微信小程序订阅消息

微信小程序订阅消息在特定的场景中,用户在小程序中发起了操作后,我们需要将该操作的后续结果通知到用户,这个时候我们就需要使用到微信小程序的订阅消息功能。如:车主为爱车预约保养时,车主在... 查看详情

小程序接入订阅消息操作指南

...户自主订阅消息,用户有了更多的主动权,开发者更是有一次性和长期性模板消息两种选择,服务形成闭环,订阅消息将成为用户回到小程序的又一方式,助力提升用户留存。还在用小程序模板消息的你,赶紧加快脚步跟上来吧... 查看详情

uni-app.11.开发微信小程序实现消息订阅(代码片段)

开发微信小程序实现消息订阅使用场景订阅消息一次性订阅消息长期订阅消息实现步骤1.获取模板ID2.uni.requestSubscribeMessage3.subscribeMessage.send4.测试使用场景在我们开发的小程序中司机首次登录需要先认证从业资质和车辆。司机在... 查看详情

微信小程序云开发订阅消息获取下发权限失败errcode:20001

通过下面的代码获取订阅消息的下发权限提示错误errMsg:"requestSubscribeMessage:failNotemplatedatareturn,verifythetemplateidexist",errCode:20001这个错误的意思是,没有模板数据返回,请检查模板id是否存在。确认模板ID是订阅消息的... 查看详情

微信小程序订阅消息开发指南(java)(代码片段)

微信小程序订阅消息开发指南(java)第一步准备阶段1、你得有一个小程序,并且认证了,个人的也行2、开通订阅消息小程序后台->功能->订阅消息3、公共模板库选择一个模板选择的时候,选择你需要的字段,因为字段有限制4... 查看详情

微信小程序订阅消息wx.requestsubscribemessage需要注意的几个地方

参考技术A1,只能bindtap点击事件或者发起支付回调后才能触发,bindsubmit发送表单不行,不过现在的订阅消息已经不需要formid,所以改起来挺容易的.2,wx.requestSubscribeMessage里的success(res)fail(res)并不是分别点击确定取消触发的回调,而是wx.r... 查看详情

微信小程序常见问题汇总与解答

微信小程序是一个全新而陌生的领域,很多人对微信小程序了解的不是很深刻。常常会有这样或那样的疑问,下面特意给大家整理了一些微信小程序常见问题的汇总与解答,一起来看看吧!1.微信小程序能否在手机端桌面生成快... 查看详情

微信小程序发送通知给他人

...知并进行审批,然而小程序的消息推送只能发送给本人的微信号,这就不好了,但是服务号确可以实现这个功能于是去翻服务号的文档,发现服务号的模版消息推送是不用传formid,并且有参数miniprogram(跳小程序所需数据,不需... 查看详情

如何使用 GCP 在 pubsub 模型中一次向所有订阅者发送消息

】如何使用GCP在pubsub模型中一次向所有订阅者发送消息【英文标题】:HowtosendmessagetoallsubscribersatonceinpubsubmodelusingGCP【发布时间】:2021-03-1602:53:30【问题描述】:使用google云平台实现pubsub模型,使用函数创建topic、subscriber、publish... 查看详情

redis的发布订阅

...订阅/发布消息图 先订阅后发布后才能收到消息1.可以一次性订阅多个,SUBSCRIBEc1c2c32.消息发布,PUBLISHc2hello-redis 先订阅127.0.0.1:6379>SUBSCRIBEc1c2c3Readingmessages...(press 查看详情

微信小程序|微信公众平台springboot开发实例│模板消息的应用开发

 在手机微信公众号中输入文本(如“你好”),公众号发送两条模板消息,如下图所示。1、说明1●模板消息的基本规则模板消息用来帮助公众号进行业务通知,是在模板内容中设定参数(参数必须以开头࿰... 查看详情