个人案例
- 文传翻转助手
用于展示“子周国波”公众号的图片
与你笔记扫码体验
- 云开发定时发送模板消息实现方案
在实际开发过程中,许多需求需要定时发送模板消息通知用户比如说给发起助力3小时未完成用户发送消息,传统开发通过自己发的服务器定时函数很容易就可以实现。但是小程序云开发定时函数不支持云调用,所以通过云开发实现定时发送模板消息也就无法实现。最初想的一个方案是:发送模板消息仍然通过自己的服务器发送。但是这样一来仍然会用到自己的服务器,服务器的部署维护仍需要自己来处理,这样就跟云开发提出的观念背道而驰了。于是想有没有一种方案完全脱离自己的服务器,就像云开发提出的口号让开发者只需要关注代码的逻辑。之前看了一篇文章《云开发如何对外提供URL》不少涉及到支付、订单等异步操作的场景,会需要提供一个回调 URL,以确保在用户完成自己的支付过程后,由支付服务器对回调的 URL 发起请求,确认调用成功。因此,不少用户在使用时提出了自己的疑问,应该如何实现这样的功能? 由于目前云开发云函数尚不支持云调用,所以我们需要借助腾讯云提供的云函数和 定时器,来实现类似的功能。 流程如下: [图片] 具体实现1. 创建云函数访问 https://console.cloud.tencent.com/ ,使用你的腾讯云账号登陆,在顶部菜单栏中找到「云产品」— 「Serverless」—「云函数」 [图片] 在云函数中,选择「函数服务」,并在函数服务页面点击「新建」 [图片] 创建一个新的云函数,其中函数名称根据你的需要填写 [图片] 运行环境选择 Node.js 8.9,创建方式选择空白函数,完成后点击下一步。 在下一页不需要做修改,直接点击完成。 2. 创建 API 网关调用在创建完成云函数以后,我们会进入到这样的界面,在这个界面中选择「触发方式」 [图片] 在触发方式页面新增一个触发方式,使用 「定时触发」,定时任务名字「任意」,触发周期「根据需求设置」,传入参数「可根据需求选择」。 [图片] 填写完成后,点击保存 3,编写小程序云函数 js代码 [代码]// 云函数入口文件[代码][代码]const cloud = require([代码][代码]'wx-server-sdk'[代码][代码])[代码] [代码]cloud.init()[代码] [代码]// 云函数入口函数[代码][代码]exports.main = async(event, context) => {[代码][代码] [代码][代码]const wxContext = cloud.getWXContext()[代码] [代码] [代码][代码]const sendresult = await sendMsg()[代码][代码] [代码][代码]return[代码] [代码]sendresult[代码][代码]}[代码][代码]async [代码][代码]function[代码] [代码]sendMsg() {[代码][代码] [代码][代码]return[代码] [代码]await cloud.openapi.templateMessage.send({[代码][代码] [代码][代码]touser: [代码][代码]"otgvn5YlKfigH0T6pNowJXVmElUk"[代码][代码],[代码][代码] [代码][代码]page: [代码][代码]'pages/pStepInfo/info'[代码][代码],[代码][代码] [代码][代码]template_id: [代码][代码]"LnF85yDgCq44-_ECl3pA_fnddZq9Uhv7J_V-eZf3jZs"[代码][代码],[代码][代码] [代码][代码]form_id: [代码][代码]"c365b4f3cb0b4dd18f3ccbc3d8071349"[代码][代码],[代码][代码] [代码][代码]emphasis_keyword: [代码][代码]'keyword1.DATA'[代码][代码],[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]keyword1: {[代码][代码] [代码][代码]value: [代码][代码]"charb"[代码][代码],[代码][代码] [代码][代码]},[代码][代码] [代码][代码]keyword2: {[代码][代码] [代码][代码]value: [代码][代码]"测试模板消息"[代码][代码],[代码][代码] [代码][代码]},[代码][代码] [代码][代码]keyword3: {[代码][代码] [代码][代码]value: [代码][代码]'拼点已完成'[代码][代码],[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]}[代码][代码] [代码][代码]}).then(res => {[代码][代码] [代码][代码]return[代码] [代码]res[代码][代码] [代码][代码]}).[代码][代码]catch[代码][代码](err => {[代码][代码] [代码][代码]return[代码] [代码]err[代码][代码] [代码][代码]})[代码][代码]}[代码]json配置[代码]{[代码][代码] [代码][代码]"permissions"[代码][代码]: {[代码][代码] [代码][代码]"openapi"[代码][代码]: [[代码][代码] [代码][代码]"templateMessage.send"[代码][代码] [代码][代码]][代码][代码] [代码][代码]}[代码][代码]}[代码] 保存,上传云函数 4. 编写程序调用当我们完成了云函数的配置以后,接下来我们可以修改云函数,使其完成我们自己想要的功能。 我们希望云函数可以从外部发来的请求中获取到参数,并借助云开发提供的 API,调用云开发的云函数。则我们可以这样操作 我们在本地新建一个目录,并在其中执行如下命令(需要你提前安装了 N ode.js 环境) [代码]cd 新建文件夹[代码][代码]npm install --save request npm install --save request-promise[代码] 然后创建一个文件[代码]index.js[代码],并在其中加入如下代码,并设置其中的 APPID、SECRET、ENV_ID 等字段。 [代码]const rp = require([代码][代码]'request-promise'[代码][代码]);[代码][代码]const APPID = [代码][代码]''[代码][代码]; [代码][代码]// 小程序 APPID[代码][代码]const SECRET = [代码][代码]''[代码][代码]; [代码][代码]// 小程序 Secret[代码][代码]const ENV_ID = [代码][代码]''[代码][代码][代码]// 小程序 云环境 [代码][代码][代码]const NAME = [代码][代码]''//小程序云函数名[代码][代码]const TOKEN_URL = `https:[代码][代码]//api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${SECRET}`[代码][代码]// const QUERY_URL = 'https://api.weixin.qq.com/tcb/invokecloudfunction'[代码] [代码]exports.main_handler = async (event, context, callback) => {[代码][代码] [代码][代码]let token_resp = await rp(TOKEN_URL)[代码][代码] [代码][代码]let token = JSON.parse(token_resp).access_token[代码][代码] [代码][代码]const QUERY_URL = [代码][代码]'https://api.weixin.qq.com/tcb/invokecloudfunction?access_token='[代码][代码]+token+[代码][代码]"&env="[代码][代码]+ENV_ID+[代码][代码]"&name="[代码][代码]+NAME[代码][代码] [代码][代码]const para = event.queryString||event[代码][代码] [代码][代码]para.time=[代码][代码]new[代码] [代码]Date().getTime()[代码][代码] [代码][代码]const options = {[代码][代码] [代码][代码]method: [代码][代码]'POST'[代码][代码],[代码][代码] [代码][代码]uri: QUERY_URL,[代码][代码] [代码][代码]body: {[代码][代码] [代码][代码]POSTBODY: para,[代码][代码] [代码][代码]},[代码][代码] [代码][代码]headers: {[代码][代码] [代码][代码]'User-Agent'[代码][代码]: [代码][代码]'Request-Promise'[代码][代码] [代码][代码]},[代码][代码] [代码][代码]json: [代码][代码]true[代码] [代码]// Automatically parses the JSON string in the response[代码][代码] [代码][代码]};[代码][代码] [代码][代码]const result = await rp(options)[代码] [代码] [代码][代码]return[代码] [代码]result[代码] [代码]}[代码] 配置完成后,保存文件。 5. 上传代码打包完成后,重新访问腾讯云控制台,找到刚刚创建的云函数,进入到「函数代码」中,选择其中的「本地上传文件夹」,选择你刚刚创建的文件夹,等待其自动压缩完成后,点击保存上传。 [图片] 上传完成后,会自动进行部署。 这样过一会模板消息就会发送成功了 在这里需要感谢一下社区的 白宦成,他的文章《云开发如何对外提供url》给了我灵感,也解决了困扰我多天的问题 至于如何定时发送多个模板消息请结合之前的一篇文章《云开发如何同时发送对个模板消息》
2019-09-23 - 层叠轮播图
[图片] 请大佬指点下这种效果怎么做
2018-11-29