032-云开发定时器功能

为什么需要这个功能

用于提醒用户,或者是唤醒用户去使用我们的小程序。

实现

每天固定时间推送数据,比如每天的早报,提醒用户有新的话题。

订阅功能肯定是必须的,我们在用户订阅消息的时候将数据存入单独的集合中,然后我们在send云函数中配置好定时器的定时发送功能,最后就是在云函数中查询哪些用户订阅了数据,最后就是发送数据了。

config.json中配置定时器数据:

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

index.js中发送订阅消息:

关于消息订阅可查看之前的文章

const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV,
})
exports.main = async (event, context) => {
  const db = cloud.database();
  try {
    // 从云开发数据库中获取推送的消息
    const messages = await db
      .collection('t_messages')
      .get();

    // 循环消息列表
    messages.data.map(async message => {
      try {
        // 发送订阅消息
        const result = await cloud.openapi.subscribeMessage.send({
          "touser": message.touser,
          "page": message.page,
          "lang": message.lang,
          "data": message.data,
          "templateId": message.templateId,
          "miniprogramState": message.miniprogramState // 上线后删除,即可为上线版本
        });
        return result
      } catch (e) {
        return e;
      }
    });
  } catch (err) {
    return err
  }
}

end

posted @ 2021-10-19 10:25  龙衣  阅读(98)  评论(0编辑  收藏  举报