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

article/2025/10/4 23:37:51

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

本人专注使用云开发,实现一个前端可以做后端以及整个项目的部署与上线。
如果觉得我讲的好就可以给我点个赞。也可以加我微信了解详情。
在这里插入图片描述
1.我们先要了解什么是订阅消息
请添加图片描述
而现在小程序支持云开发,使用云函数可以免鉴权。
我们可以使用云开发来做后端的事,所谓一前端统揽全栈已经不是梦了。

一,我们先了解怎么设置点击订阅按钮后马上就发送订阅消息给你的微信
1.先看下图 请添加图片描述
2.了解完原理后我们来看看代码部分
微信小程序提供了wx.requestSubscribeMessage 接口来发起申请订阅权限界面。
我们先创建一个 subscribe 为名字的云函数, 以下为云函数代码。

const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async(event, context) => {const {OPENID} = cloud.getWXContext()try {const result = await cloud.openapi.subscribeMessage.send({touser: OPENID, //要推送给那个用户page: 'pages/home/home', //要跳转到那个小程序页面data: event.data,templateId: event.templateId //模板id})console.log(result)return result} catch (err) {console.log(err)return err}
}

js文件的按钮点击事件

onSubscribe: function (e) {// 获取课程信息 thing1,number2是根据你创建的模板消息的详细内容字段来的const item = { "thing1": { "value": "2021年第三次摸底考试" }, "number2": { "value": this.getnum() } };//模板idlet lessonTmplId = '********************************';// 调用微信 API 申请发送订阅消息wx.requestSubscribeMessage({// 传入订阅消息的模板id,模板 id 可在小程序管理后台申请tmplIds: [lessonTmplId],success(res) {// 申请订阅成功if (res.errMsg === 'requestSubscribeMessage:ok') {// 这里将订阅的课程信息调用云函数存入云开发数据  data: item, templateId: lessonTmplId,wx.cloud.callFunction({name:'subscribe',data:{data:item,templateId: lessonTmplId,}}).then((res) => {console.log(res)wx.showToast({title: '订阅成功',icon: 'success',duration: 2000,});}).catch(() => {wx.showToast({title: '订阅失败',icon: 'none',duration: 2000,});});}},});},})

二.使用云函数做定时器发送定时订阅消息
我们首先创建两个云函数(subscribe,send)send为定时云函数,和一个数据库集合(messages)
subscribe云函数没有很大的区别,
subscribe —>> index.js

const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async(event, context) => {try {const result = await cloud.openapi.subscribeMessage.send({touser: event.touser, //要推送给那个用户page: 'pages/home/home', //要跳转到那个小程序页面data: event.data,templateId: event.templateId //模板id})console.log(result)return result} catch (err) {console.log(err)return err}
}

重点是我们需要在这个云函数加上这个,我就是因为这个困惑了一晚上的,不加的话会发送不了
subscribe —>> config.json

{"permissions": {"openapi":  ["subscribeMessage.send"]}
}

定时云函数
定时任务有很多用途,譬如数据汇总产生报表数据、数据清理、文件清理等等。

云开发提供了定时触发器功能(triggers),提供了类似unix/Linux 下crontab的触发表达式。

triggers语法如下:
我们再看定时云函数我们先看一张图
请添加图片描述
请添加图片描述
主要定时是config字段,通过调用另一个云函数来实现。
我们看看我写的代码:
send —>> index.js

const cloud = require('wx-server-sdk');
cloud.init();
exports.main = async (event, context) => {const db = cloud.database();try {// 从云开发数据库中查询等待发送的消息列表const messages = await db.collection('messages')// 查询条件这里做了简化,只查找了状态为未发送的消息// 在真正的生产环境,可以根据开课日期等条件筛选应该发送哪些消息.where({static:'into_not'}).get();// 循环消息列表const sendPromises = messages.data.map(async message => {try {await cloud.callFunction({name:'subscribe',data:{data:message.data,templateId: message.templateId,touser: message._openid,}});// 发送成功后将消息的状态改为已发送return db.collection('messages').doc(message._id).update({data: {static:'into_yes'},});} catch (e) {return e;}});return Promise.all(sendPromises);} catch (err) {console.log(err);return err;}
};

send —>> config.json

{"permissions": {"openapi": ["subscribeMessage.send"]},"triggers": [{"name": "sendMessagerTimer","type": "timer","config": "0 * * * * * *"}]
}

到这我们就可以实现订阅消息定时发送消息了,我们要改变时间只需改变send —>> config.json中的 “config”: "0 * * * * * * "就行通过上面的介绍来使用

值得注意的是我们这个需要右击上传触发器,这个send属于触发器。所有我们上传时应该使用上传触发器

以上是我 的一个小项目的 源码,如有不正确的希望大神可以不吝赐教,大家也可以 看看我的思路。最后希望大家可以给我一个关注。我会继续创造下去的,谢谢大家。


http://chatgpt.dhexx.cn/article/TYePK0Tt.shtml

相关文章

java 基本微信小程序的一起考研资料学习系统 uniapp 小程序

随着移动互联网技术的迅速发展,要求人们的知识水平和综合素质越来越高。自学能力成为提高自己水平的关键,因此出现了各种适合自学的在线学习网站。如手机APP,电脑软件,书本等等,其中用户量最多的还是不受时间,地点限制的手机应用,和各类微信小程序。其原因是手机及微信已经成了…

java后端-微信小程序使用七牛云存储

微信小程序使用七牛云存储 导读开发前的准备七牛云配置微信小程序测试号配置java配置-spring-boot 正式开始java端代码七牛云工具类编写响应类编写七牛云响应结果获取token的控制器 小程序代码七牛云工具类工具类的调用 总结查阅资料七牛云 导读 最近在做一个微信小程序项目&a…

微信小程序开发前端基础知识

文章目录 一、简介1、是什么2、为什么 二、准备工作1、环境准备1.1、注册账号1.2、获取APPID1.3、开发工具 2、创建微信小程序 三、组件1、目录及其作用介绍2、页面操作3、view 块级元素4、<navigator>导航跳转5、scroll-view滚动6、text 行标签7、swiper 轮播8、常用表单…

微信小程序——图片识别

我的微信小程序 期末大作业——基于百度大脑API的图片识别小程序 具体实现了动物识别、植物识别、车辆识别 三个功能 实验源码已经放到了我的GitHub&#xff0c;欢迎测试修改 GitHub仓库地址&#xff1a;https://github.com/ZHJ0125/ImageMaster 备用码云仓库地址&#xff1a;h…

微信小程序使用云开发

微信小程序使用云开发 1.序言2.初识云开发3.环境搭建4.正式使用5.使用感受6.结语 1.序言 最近给一位即将毕业的同学做了一个毕设(需求是一个小程序)&#xff0c;最开始我是使用自身最为熟悉的语言(Java) 进行编写的后端接口。然后做了几天&#xff0c;哪怕最熟悉&#xff0c;但…

微信小程序学习笔记

1. 小程序简介 小程序是一种全新的连接用户与服务的方式&#xff0c;它可以在微信内被便捷地获取和传播&#xff0c;同时具有出色的使用体验。 2.小程序运行环境 微信小程序API文档 boolean wx.canIUse(string schema) | 微信开放文档https://developers.weixin.qq.com/minipr…

微信小程序 audio 音频 组件

完整微信小程序(Java后端) 技术贴目录清单页面&#xff08;必看&#xff09; 音频。1.6.0版本开始&#xff0c;该组件不再维护。建议使用能力更强的 wx.createInnerAudioContext 接口 属性类型默认值必填说明最低版本idstring否audio 组件的唯一标识符1.0.0srcstring否要播放…

微信小程序三级分类

今天&#xff0c;在做一个电商小程序的分类页面&#xff0c;要实现三级分类。首先&#xff0c;先上图。 要完成这样一个功能&#xff0c;前端的界面就不说了&#xff0c;具体说说怎么实现的吧&#xff0c;说复杂也挺复杂的&#xff0c;说简单只要会了思路就不难了。其实思路就…

微信小程序如何获取数组下标

我们在写代码的时候我们经常会用到获取数组下标的方法&#xff0c;我们知道java通常是用for循环&#xff0c;i,输出i就出来了&#xff0c;那对于小程序该怎么实现呢&#xff0c;首先我们会想到直接用index,但是这种方法是不可行的。 1.首先要在js文件里写一个方法&#xff0c;…

Maven项目无法使用JSONObject.fromObject方法的解决方案

JSONArray jsonArray JSONArray.fromObject (arrayStr); 解决方案 导包依赖 import net.sf.json.JSONObject;<!-- JSONObject对象依赖的jar包 --> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils<…

Cannot deserialize value of type `java.lang.Integer` from Object value (token `JsonToken.START_OBJEC

错误信息&#xff1a;org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type java.lang.Integer from Object value (token JsonToken.START_OBJECT); nested exception is com.fasterxml.jackson.databin…

cannot deserialize from Object value (no delegate- or property-based Creator) 解决方法

问题描述 直接上图 报错 cannot deserialize from Object value (no delegate- or property-based Creator) 无法从Object值反序列化&#xff08;没有基于委托或属性的创建者&#xff09; 原因分析&#xff1a; 返回的pojo类&#xff0c;里面添加了一个全参构造函数&#x…

JsonArray.fromObject()将集合转换成字符串(案例学习)

【辰兮要努力】&#xff1a;hello你好我是辰兮&#xff0c;很高兴你能来阅读&#xff0c;昵称是希望自己能不断精进&#xff0c;向着优秀程序员前行&#xff01; 博客来源于项目以及编程中遇到的问题总结&#xff0c;偶尔会有读书分享&#xff0c;我会陆续更新Java前端、后台、…

JSONObject没有fromObject方法(Json lib 库的使用)

刚开始还不知道为啥&#xff0c;最后到 jsonlib 网站上查看了原因&#xff0c;这个是连接地址 Json-lib comes in two flavors, depending on the jdk compatibility. json-lib-x.x-jdk13 is compatible with JDK 1.3.1 and upwards. json-lib-x.x-jdk15 is compatible with J…

关于JSONObject.fromObject方法报错解决方法

最近在学习web开发时&#xff0c;遇到了这样的一个报错&#xff1a; 查了很久才发现错误。 解决方案&#xff1a; 1、查看架包 一共是6个架包 下面是IDEA环境添加架包语句&#xff1a; <dependency><groupId>commons-beanutils</groupId><artifactId&…

JSONArray.fromObject(str)

com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex 根源 所在 引入的jar包重复了 &#xff01; 本次问题场景 &#xff1a; 使用 json 解析 [{"num":"D30","data":"23.6"},{"num":"D…

JSONObject.fromObject 日期类型转换问题

今天在开发的时候遇到的问题&#xff1a; 由于需要调用rest服务&#xff0c;所以将dto对象转换为JSON的时候出现了日期格式不正确的问题&#xff1a; 首先查看接收的DTO&#xff1a; 由于接口需要以数组的方式传输&#xff1a; JSONArray jsonArray array.fromObject ( Arra…

JSONObject.fromObject 找不到这个方法或是报错

本人是springboot快速创建项目生成&#xff0c;默认导入springboot json.jar。 JSONObject.fromObject 方法找不到。 解决&#xff1a;在pom依赖加入 <dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><ver…

微信接口报错:40163

场景&#xff1a;当使用H5做微信授权时&#xff0c;微信服务器返回错误信息{"errcode":40163,"errmsg":"code been used, hints: [ req_id: nkeen7aLRa-tGQn4 ]"}&#xff0c;从返回的errmsg中可以看出是code被使用过。 结论&#xff1a;微信网…

解决微信登录出现{errcode:40163,errmsg:code been used, hints: [ req_id: jEFDVY4ce-jz9NSA ]} (前提是使用友盟分享)

记录一下&#xff0c;记录一下。 &#xff08;真的想搞洗友盟&#xff09; 前提是接入友盟分享SDK。 错误信息 {"errcode":40163,"errmsg":"code been used, hints: [ req_id: qgFD07aLRa-xgHwXa ]"} 就是这个&#xff0c;40163 、code been u…