Облачные функции Firestore для запуска смс - PullRequest
0 голосов
/ 21 мая 2019

У меня есть следующая облачная функция, которая запускает отправку смс-сообщения с использованием Twillio. Он работает как есть, но вызывает отправку текстового сообщения дважды. Есть ли способ, которым я могу изменить свою функцию, чтобы предотвратить это? Обратите внимание, что я не использую базу данных Firebase Realtime; Я использую базу данных Firebase Firestore. Эта функция используется вместе с проектом Ionic 4.

export const textPrayedForNotification = functions.firestore.document('/prayerRequests/{prayerRequestId}').onUpdate(snap => {
    const phone: string = snap.after.get('phoneNumber');
    const receiveNotifications: boolean = snap.after.get('receiveNotifications');

    if (receiveNotifications) {
        return client.messages.create({
            to: phone,
            from: twilioNumber,
            body: 'Someone has prayed for you.'
        }).then((data: any) => {
            console.log(data);
        }).catch((error: any) => {
            console.log(error);
        });
    }
});

Обновление: Измените функцию на эту, и теперь она работает.

export const textPrayedForNotification = functions.firestore.document('/prayerRequests/{prayerRequestId}').onUpdate(snap => {
    const phone: string = snap.after.get('phoneNumber');
    const receiveNotifications: boolean = snap.after.get('receiveNotifications');
    const dateLastPrayedBefore = snap.before.get('dateLastPrayed');
    const dateLastPrayedAfter = snap.after.get('dateLastPrayed');

    if (receiveNotifications) {
        if (dateLastPrayedBefore !== dateLastPrayedAfter) {
            return client.messages.create({
                to: phone,
                from: twilioNumber,
                body: 'Someone has prayed for you.'
            }).then((data: any) => {
                console.log(data);
            }).catch((error: any) => {
                console.log(error);
            });
        }
    }
});
...