Как я упоминал в своем последнем посте, одна из самых приятных частей разработки программного обеспечения для меня - это написание кода для решения проблемы, для которой это совершенно не нужно. Когда я начал думать о сегодняшней задаче, я понял, что использование некоторых навыков разработки программного обеспечения, чтобы исправить это, на самом деле не было худшей идеей, поэтому сегодня мы займемся именно этим. Давайте погрузимся в написание кода, который поможет нам избежать обезвоживания!

Любую проблему можно решить с помощью питьевой воды. Головная боль? Вы, вероятно, обезвожены; выпей немного воды. Голодный? Также возможно, что вы просто хотите пить, поэтому выпейте воды перед тем, как что-нибудь съесть. Боль в животе? Воды. Калечащее социальное беспокойство? Выпейте эту воду - это даст вам шанс немного не разговаривать. Сломанная нога? Обратитесь к врачу, но также выпейте немного воды, почему бы и нет?

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

Итак, хотя есть множество веских причин пить больше воды, на удивление сложно не забыть об этом. Без напоминаний я часто забываю много пить между приемами пищи. Раньше я настраивал напоминания на своем телефоне, но это неудобно из-за необычного времени, в которое я хочу, чтобы напоминание повторялось. Я могу настроить напоминания почасово, ежедневно, еженедельно, раз в две недели и т. Д. Настроить их, скажем, каждые 2 или 3 часа с момента пробуждения до момента сна немного сложнее. В итоге я установил ежедневное напоминание на 10 часов утра, отдельное ежедневное напоминание на полдень и т. Д., Чтобы бороться с тем фактом, что я не могу настроить по своему вкусу. Так что на самом деле кодирование - не худшая идея.

Решение

Один из вариантов, который я рассмотрел, - это создание клиентского приложения и настройка его для получения уведомлений. Это выглядело как лишние накладные расходы, когда все, что мне было нужно, - это само уведомление. Вместо этого я выбрал бессерверное задание cron, которое отправляет на мой телефон текстовое сообщение с напоминанием о необходимости выпить воды.

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

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

import * as functions from ‘firebase-functions’;
import * as twilio from ‘twilio’;
const accountSid = functions.config().twilio.accountsid;
const authToken = functions.config().twilio.authtoken;
const client = twilio(accountSid, authToken);
exports.scheduledFunctionCrontab = functions.pubsub
    .schedule(‘0 8,10,12,14,16 * * *’)
    .timeZone(‘America/Chicago’)
    .onRun((context) => {
        return client.messages
            .create({
                body: ‘girl, don\’t forget to drink that water!’,
                from: ‘+15555550142’,
                to: ‘+15558675309’
            })
            .then(message => {
                console.log(message.sid);
            })
            .catch(error => {
                console.error(error);
            });
    });

Вот и все! Кроме…

… Одно и то же сообщение снова и снова устаревает. Кроме того, было бы неплохо, если бы я мог отвечать и отслеживать, сколько я пью? Думаю, мне придется добавить еще немного в этот проект! Будьте на связи :-)