Есть ли способ отправить дайджест электронной почты пользователю, когда у него есть непрочитанные сообщения / уведомления, с помощью облачных функций firebase? - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь отправлять электронные письма пользователям, у которых есть непрочитанные сообщения / уведомления, но я изо всех сил пытаюсь найти способ сделать это. Я думал о системе, которая отслеживает сообщения / уведомления, и если они не будут прочитаны в течение часа, она отправит электронное письмо пользователю, которое проинформирует его о сообщениях.

Что я нашел : с облачным планировщиком я смогу отправлять электронные письма каждый час пользователям, у которых есть непрочитанные уведомления. Однако, если пользователь получил уведомление через минуту a go, он все равно получит электронное письмо, и это будет его раздражать.

Отправка уведомления по электронной почте с каждым сообщением / уведомлением, с firestore onUpdate будет быть еще более раздражающим.

Кто-нибудь знает, есть ли способ сделать это, отслеживая уведомления / сообщения, как я описал вверху? Есть ли другой способ сделать это, который я пропустил?

Ответы [ 2 ]

1 голос
/ 03 августа 2020

Почему бы вам не попробовать

  1. Установите функцию облака для запуска каждые 1-5 минут.
  2. Отфильтруйте уведомления за 1 час и раньше, которые не читаются. Примерно так: .where ("Read", "==", false "). Where (" Date Reminded "," <= ", currentTime - 60 <em>60 1000). Обратите внимание, что мы использовали напоминание даты здесь устанавливается такая же, как дата создания при создании и обновляется каждый раз, когда электронное письмо отправляется, чтобы не отправлять электронные письма каждую минуту.
  3. Отправлять электронные письма этим пользователям после привязки уведомлений к каждому пользователю.

Очевидной альтернативой, конечно же, является развертывание сервера, который наблюдает за облачным хранилищем и отправляет электронные письма с помощью модуля node-schedule.

0 голосов
/ 03 августа 2020

Вы можете использовать Cloud Tasks , чтобы запускать задачу для каждого непрочитанного уведомления, чтобы вызвать функцию, которая отправляет электронное письмо для этого уведомления с некоторой задержкой. Вам нужно будет написать изрядное количество кода, чтобы создать и настроить задачу и функцию (возможно, облачную функцию) для получения отложенного сообщения.

Если вы хотите отправлять электронные письма с пакетными уведомлениями вам, очевидно, придется реализовать некоторые дополнительные logi c, чтобы гарантировать, что каждая задача отправляет накопительный пакет, а не отдельное сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...