¿Cómo obtener una notificación meteorológica diaria en el móvil usando Node.js y la API de Twilio?

Buscar información meteorológica a diario es una tarea trivial. Como programadores, podemos facilitar esta tarea creando un servicio de notificación. Usaremos la API de SMS de Twilio para enviar SMS y Node.js para escribir el servicio que se ejecuta todos los días a una hora determinada.

Obtención de credenciales de Twilio: para usar las API de Twilio, debemos registrar nuestra aplicación y obtener las claves de API de la consola de Twilio. Necesitamos obtener ACCOUNT SID, AUTH TOKENy TRIAL NUMBER. Puede obtener todas estas credenciales desde aquí .

Consola Twilio

Guarde estas credenciales en .envun archivo en el directorio raíz de su proyecto junto con su número de teléfono. Dado que es una mejor práctica de seguridad guardar cada credencial en un archivo separado.

ACC_SID = 'your-account-sid'
AUTH_TOKEN = 'your-auth-token'
  
TO = 'your-number-with-country-code'
FROM = 'twilio-trial-number'

Envío de SMS: Para enviar SMS podemos utilizar la librería de Twilio para Node.js. Instale la biblioteca usando el siguiente comando:

npm install twilio

Ahora probemos nuestras credenciales enviando un mensaje. Agregue el siguiente código al index.jsarchivo.

// Getting Data from .env file
const accountSid = process.env.ACC_SID;
const authToken = process.env.AUTH_TOKEN;
  
const twilio = require("twilio");
const client = new twilio(accountSid, authToken);
  
client.messages
    .create({
        body: "Hello from GeeksForGeeks!",
        to: process.env.TO,
        from: process.env.FROM
    })
    .then(message => console.log(message.sid));

Si todo va bien, recibirá un SMS de Twilio con el texto «¡Hola de GeeksForGeeks!».

Obtención de la información meteorológica: para obtener la información meteorológica más reciente, utilizaremos la API de Openweathermap , que está disponible gratuitamente.

Para usar el registro API en el sitio web y vaya al tablero para generar la clave API de la siguiente manera:

Tablero de Openweather map.org

Usaremos la requestbiblioteca de Node.js para obtener los datos de la API. Instale la dependencia usando el siguiente comando:

npm install request

Y luego agregue el siguiente fragmento de código al index.jsarchivo.

// Import request library
const request = require("request");
  
function getdata() {
    request(
"http://api.openweathermap.org/data/2.5/weather?q=delhi&appid=<your-api-key>&units=metric",
    { json: true },
    (err, res, body) => {
        if (err) {
            return console.log(err);
        }
  
        // Printing fetched data
        console.log(body); 
    });
}
  
// Calling function
getData();

Ahora, cree una función para enviar datos de notificación y agregue el código para enviar SMS como se muestra a continuación:

// Send message
function sendNotification(msg) {
  client.messages
    .create({
      body: msg,
      to: process.env.TO,
      from: process.env.FROM
    })
    .then(message => console.log(message.sid));
}

Ahora tenemos que crear un mensaje a partir de los datos recibidos de la API meteorológica. Reemplace la getData(función ) con el siguiente código:

function getdata(){
  request(
    "http://api.openweathermap.org/data/2.5/weather?q=delhi&appid=<your-api-key>&units=metric",
    { json: true },
    (err, res, body) => {
        if (err) {
            return console.log(err);
        }
        
        // Create a message
        let msg = `\nToday's Weather : \n${body.weather[0].main}, ${body.main.temp}°C\nHumidity : ${body.main.humidity}%    
      `;
        
        // Calling Send Message function
        sendNotification(msg);
    });
}

Ahora, para enviar el mensaje todos los días, debemos configurar un cronjob usando la node-cronbiblioteca.

npm install node-cron

Agregue el cronjob para llamar al método getData() todos los días a las 8:00 AM:

// Importing library
const twilio = require("node-cron");
  
// Cronjob runs everyday at 8:00 AM
cron.schedule("0 8 * * *", () => {
  
    // Calling getData method which
    // calls the send message method
    getData(); 
});

Si todo va bien, recibirá un SMS con la información meteorológica.

Producción:

Publicación traducida automáticamente

Artículo escrito por frikishaan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *