如何使用 Node.js 和 Twilio API 在移动设备上获取每日天气通知?
每天查找天气信息是一项微不足道的任务。作为程序员,我们可以通过创建通知服务来简化这项任务。我们将使用Twilio SMS API发送 SMS 并使用 Node.js 编写每天在特定时间运行的服务。
获取 Twilio 凭证:要使用 Twilio API,我们需要注册我们的应用程序并从 Twilio 的控制台获取 API 密钥。我们需要获取ACCOUNT SID
、 AUTH TOKEN
和TRIAL NUMBER
。您可以从此处获取所有这些凭据。
将这些凭据与您的电话号码一起保存到项目根目录中的.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 密钥,如下所示:
我们将使用 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();
});
如果一切顺利,您将收到一条显示天气信息的短信。
输出: