📜  如何使用 Node.js 和 Twilio API 在移动设备上获取每日天气通知?

📅  最后修改于: 2022-05-13 01:56:18.431000             🧑  作者: Mango

如何使用 Node.js 和 Twilio API 在移动设备上获取每日天气通知?

每天查找天气信息是一项微不足道的任务。作为程序员,我们可以通过创建通知服务来简化这项任务。我们将使用Twilio SMS API发送 SMS 并使用 Node.js 编写每天在特定时间运行的服务。

获取 Twilio 凭证:要使用 Twilio API,我们需要注册我们的应用程序并从 Twilio 的控制台获取 API 密钥。我们需要获取ACCOUNT SIDAUTH TOKENTRIAL NUMBER 。您可以从此处获取所有这些凭据。

Twilio 控制台

将这些凭据与您的电话号码一起保存到项目根目录中的.env文件中。由于将每个凭据保存在单独的文件中是一种安全最佳实践。

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

发送短信:为了发送短信,我们可以使用 Twilio 的 Node.js 库。使用以下命令安装库:

npm install twilio

现在让我们通过发送消息来测试我们的凭据。将以下代码添加到index.js文件中。

// 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));

如果一切顺利,您将收到来自 Twilio 的短信,内容为“来自 GeeksForGeeks 的您好!”。

获取天气信息:为了获取最新的天气信息,我们将使用免费提供的 Openweathermap API。

要在网站上使用 API 注册并转到仪表板以生成 API 密钥,如下所示:

Openweather map.org 仪表板

我们将使用 Node.js 的request库从 API 中获取数据。使用以下命令安装依赖项:

npm install request

然后将以下代码片段添加到index.js文件中。

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

现在,创建一个发送通知数据的函数并添加发送短信的代码,如下所示:

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

现在我们必须根据从天气 API 接收到的数据创建一条消息。用以下代码替换getData( )函数:

function getdata(){
  request(
    "http://api.openweathermap.org/data/2.5/weather?q=delhi&appid=&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);
    });
}

现在,要每天发送消息,我们必须使用node-cron库设置一个 cronjob。

npm install node-cron

添加 cronjob 以在每天上午 8:00 调用 getData() 方法:

// 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(); 
});

如果一切顺利,您将收到一条显示天气信息的短信。

输出: