有没有办法使用 firebase 云函数在用户未读 messages/notifications 时向他们发送电子邮件摘要?

Is there a way to send email digest to a user when they have unread messages/notifications using firebase cloud functions?

我正在尝试向未读的用户发送电子邮件 messages/notifications,但我正在努力寻找一种方法来做到这一点。我在想一个跟踪 messages/notifications 的系统,如果他们在一个小时内没有被阅读,那么它会向用户发送电子邮件,通知他们消息。

我发现了什么: 使用云调度程序,我将能够每小时向有未读通知的用户发送电子邮件。但是,如果用户在一分钟前收到通知,他们仍然会收到一封电子邮件,这会让他们很烦。

使用 firestore onUpdate 每 message/notifications 发送电子邮件通知会更烦人。

有谁知道是否有办法通过跟踪 notifications/messages 来做到这一点,就像我在顶部描述的那样?还有其他我错过的方法吗?

你为什么不试试

  1. 将云函数设置为 运行 每 1-5 分钟一次。
  2. 过滤 1 小时及之前未阅读的通知。类似于:.where("Read","==",false").where("Date Reminded","<=", currentTime - 60 * 60 * 1000)。请注意,我们在这里使用了提醒日期,该日期设置为与创建时创建的日期相同,并在每次发送电子邮件时更新,以避免每分钟发送一次电子邮件。
  3. 将通知链接到每个用户后,向这些用户发送电子邮件。

一个明显的替代方案当然是部署一个服务器来监视云 firestore 并使用 node-schedule 模块发送电子邮件。

您可以使用 Cloud Tasks to kick off a task for each unread notification, to invoke a function that sends the email for that notification on some delay. You would need to write a fair amount of code to create and configure the task 和函数(可能是 Cloud Function)来接收延迟消息。

如果您想发送带有批量通知的电子邮件,您显然必须实施一些额外的逻辑以确保每个任务发送汇总消息而不是单个消息。