paint-brush
Cách tôi xây dựng một trình lập lịch sự kiện trong NodeJstừ tác giả@arindam1729
303 lượt đọc
303 lượt đọc

Cách tôi xây dựng một trình lập lịch sự kiện trong NodeJs

từ tác giả Arindam Majumder 12m2024/08/18
Read on Terminal Reader

dài quá đọc không nổi

Trong bài viết này, tôi sẽ chỉ cho bạn cách tạo ứng dụng Node.js có thể tạo sự kiện và tự động gửi lời mời qua email với liên kết Google Meet. Chúng ta sẽ sử dụng khung Express để tạo trình lập lịch sự kiện. Để bắt đầu, chúng ta cần thiết lập môi trường node.js và thiết lập máy chủ Express.
featured image - Cách tôi xây dựng một trình lập lịch sự kiện trong NodeJs
Arindam Majumder  HackerNoon profile picture

Giới thiệu

Kể từ khi có COVID, lịch trình của tôi dày đặc các cuộc họp thường kỳ, họp nhóm và gọi điện cho khách hàng.


Tuy nhiên, việc lên lịch sự kiện và mời khách là những công việc nhàm chán. Một ngày thứ sáu, sau khi dành quá nhiều thời gian cho những việc này, tôi nghĩ rằng –

Tại sao tôi lại tốn nhiều thời gian vào việc này thế?

thất vọng nghiêm túc GIF

Vì vậy, tôi đã nảy ra ý tưởng tạo một Trình lập lịch sự kiện để đơn giản hóa công việc của mình!


Trong bài viết này, tôi sẽ chỉ cho bạn cách tạo ứng dụng Nodejs có thể tạo sự kiện và tự động gửi lời mời qua email với liên kết Google Meet.


Bạn có hào hứng không? Tôi cũng vậy.


Vậy thì không cần phải trì hoãn thêm nữa!


Hãy BẮT ĐẦU!

Thiết lập dự án:

1. Tạo dự án Node.js:

Để bắt đầu dự án, chúng ta cần thiết lập môi trường Node.js. Vì vậy, hãy tạo một dự án node. Chạy lệnh sau trong Terminal.

 npm init -y


Thao tác này sẽ khởi tạo một dự án Node.js mới.

2. Cài đặt các phụ thuộc:

Bây giờ, chúng ta sẽ cài đặt các phụ thuộc cần thiết cho dự án của mình.

 npm install express googleapis dotenv


Lệnh này sẽ cài đặt các gói sau:

  • express: một khuôn khổ web phổ biến cho Node.js


  • dotenv: tải các biến môi trường từ tệp .env .


  • googleapis: Cung cấp quyền truy cập vào nhiều API của Google

3. Thiết lập biến môi trường:

Tiếp theo, chúng ta sẽ tạo một thư mục .env để lưu trữ an toàn thông tin nhạy cảm như thông tin xác thực API.

 //.env PORT = YOUR_PORT || 8000 CLIENT_ID = YOUR_CLIENT_ID CLIENT_SECRET = YOUR_CLIENT_SECRET REDIRECT_URL = http://localhost:8000/auth/redirect API_KEY = YOUR_API_KEY

4. Tạo Express Server:

Bây giờ, chúng ta sẽ tạo một tệp index.js trong thư mục gốc và thiết lập một máy chủ express cơ bản. Xem đoạn mã sau:

 const express = require("express"); const dotenv = require("dotenv"); dotenv.config(); const app = express(); const port = process.env.PORT || 8000; app.get("/", (req, res) => { res.send("Hello World"); }); app.listen(port, () => { console.log(`Server running on port ${port}`); });

Ở đây, chúng tôi sử dụng gói "dotenv" để truy cập số PORT từ tệp .env .


Ở đầu dự án, chúng ta đang tải các biến môi trường bằng cách sử dụng dotenv.config() để có thể truy cập được trong toàn bộ tệp.

Thiết lập Google Console

Đầu tiên, chúng ta sẽ truy cập vào Google Cloud Console .


Sau đó chúng ta sẽ có Dashboard này. (Tôi đã tạo một dự án trước đó nên tôi nhận được Dashboard này, bạn có thể nhận được thứ khác).

Bảng điều khiển đám mây của Google

Bây giờ, chúng ta sẽ nhấp vào nút 'Dự án mới' để bắt đầu một dự án mới.

Trang dự án mới


Tiếp theo, chúng ta sẽ có thứ gì đó như thế này. Ở đây, chúng ta sẽ thêm tên và tổ chức của Dự án. Đối với dự án này, tôi giữ nguyên là "Mail-integration-Demo." Sau đó, chúng ta sẽ nhấp vào nút tạo để tiếp tục


Chi tiết dự án mới

Tiếp theo, trong thanh điều hướng bên, chúng ta sẽ thấy "API và Dịch vụ". Trong phần này, có một menu phụ để bật API và dịch vụ. Chúng ta sẽ nhấp vào đó để tiếp tục.

API và Dịch vụ

Tiếp theo, chúng ta sẽ kích hoạt API mà chúng ta sẽ sử dụng trong dự án này, tức là Google Calender API.

API Lịch Google

Sau đó, chúng ta sẽ đến Màn hình đồng ý OAuth. Tại đây, chúng ta sẽ chọn Loại người dùng là Bên ngoài. Và chúng ta sẽ nhấn nút Tạo để tiếp tục.

Màn hình chấp thuận OAuth


Sau đó, chúng ta sẽ đến trang đăng ký ứng dụng. Tại đây, chúng ta sẽ thêm thông tin về ứng dụng của mình. Chúng ta bắt đầu bằng cách thêm tên ứng dụng và địa chỉ email để hỗ trợ người dùng.


Đối với dự án này, tôi sẽ đặt tên là "Tích hợp thư của Arindam" và sử dụng địa chỉ email của riêng tôi để hỗ trợ.

Trang thông tin ứng dụng

Tiếp theo, chúng ta phải xác định phạm vi của Ứng dụng.

Trang phạm vi

Trong Phạm vi, chúng tôi sẽ thêm các quyền cần thiết như userinfo.emailuserinfo.profile cho dự án này.

phạm vi được chọn

Sau đó, chúng ta sẽ thêm một người dùng thử nghiệm vào ứng dụng của mình.

Trang người dùng thử nghiệm

Vậy là xong. Ứng dụng của chúng tôi đã được đăng ký với nền tảng.


Bây giờ, chúng ta sẽ tạo bí mật ID máy khách OAuth. Đối với điều đó, chúng ta sẽ chuyển sang phần Tạo thông tin xác thực.

Bảng điều khiển Google Console

Ở đây, chúng ta sẽ thêm loại ứng dụng và tên của nó. Đối với dự án này, đó là một ứng dụng web và tên của nó là Arindam's Mail Demo.

ID máy khách OAuth

Ngoài ra, chúng tôi đã thêm một URL chuyển hướng. Đối với dự án này, URL sẽ là http://localhost:8000/auth/redirect .

Chuyển hướng URL

Và sau đó chúng ta sẽ nhận được thông tin xác thực OAuth.

Đã tạo máy khách OAuth

Tiếp theo, chúng ta sẽ tạo Khóa API.

Trang tạo khóa API

Sau khi thực hiện tất cả những điều này, chúng ta sẽ cập nhật tệp .env bằng khóa API và Thông tin xác thực OAuth mà chúng ta đã tạo trước đó.


Với điều này, chúng tôi đã thiết lập bảng điều khiển Google Cloud cho dự án này, bây giờ hãy chuyển sang phần tiếp theo

Xác thực OAuth 2:

Cho đến bây giờ, chúng ta đã hoàn thành thiết lập dự án cơ bản. Bây giờ, chúng ta sẽ tích hợp Xác thực OAuth2 vào Dự án của mình. Điều này cho phép ứng dụng của chúng ta tương tác an toàn với các dịch vụ của Google. Đối với điều đó, trước tiên, chúng ta sẽ nhập các gói cần thiết vào tệp index.js .

 const express = require('express'); const { google } = require('googleapis'); const dotenv = require('dotenv');


Sau đó, chúng tôi sẽ xác định phạm vi truy cập cần thiết cho Google Calendar API.

 const scopes = ['https://www.googleapis.com/auth/calendar'];


Tiếp theo, chúng ta sẽ cấu hình máy khách OAuth 2 bằng thông tin xác thực đã lưu trữ trong tệp .env .

 // OAuth 2 configuration const oauth2Client = new google.auth.OAuth2 ( process.env.CLIENT_ID, process.env.CLIENT_SECRET, process.env.REDIRECT_URL );


Sau khi Cấu hình OAuth 2, chúng ta sẽ tạo một Tuyến để Xác thực Người dùng.

 app.get('/auth', (req, res) => { const url = oauth2Client.generateAuthUrl ({ access_type: 'offline', scope: scopes }); res.redirect(url); } );

Khi người dùng của chúng tôi đi theo hướng này, họ sẽ được chuyển hướng đến trang xác thực của Google, tại đó họ sẽ yêu cầu cấp các quyền cụ thể cho ứng dụng của chúng tôi.


Sau khi xác thực thành công, Google sẽ chuyển hướng người dùng đến URL chuyển hướng của chúng tôi ( /auth/redirect )

 app.get("/auth/redirect", async (req, res) => { const {tokens} = await oauth2Client.getToken(req.query.code); oauth2Client.setCredentials(tokens); res.send('Authentication successful! Please return to the console.'); } );


Ở đây, chúng ta sẽ lấy mã thông báo làm mới từ Query và lưu trữ chúng dưới dạng thông tin xác thực trong oauth2Client . Những thông tin xác thực này sẽ giúp chúng ta thực hiện yêu cầu tới Google Calendar API.


Sau đây là mã đầy đủ cho index.js :

 //index.js const express = require('express'); const { google } = require('googleapis'); const dotenv = require('dotenv'); const app = express(); dotenv.config(); const port = process.env.PORT || 8000; app.get('/', (req, res) => { res.send('Hello World'); } ); // Define the scope of access for the Google Calendar API. const scopes = ['https://www.googleapis.com/auth/calendar']; // OAuth 2 configuration const oauth2Client = new google.auth.OAuth2 ( process.env.CLIENT_ID, process.env.CLIENT_SECRET, process.env.REDIRECT_URL ); app.get('/auth', (req, res) => { const url = oauth2Client.generateAuthUrl ({ access_type: 'offline', scope: scopes }); res.redirect(url); } ); app.get("/auth/redirect", async (req, res) => { const {tokens} = await oauth2Client.getToken(req.query.code); oauth2Client.setCredentials(tokens); res.send('Authentication successful! Please return to the console.'); } );

Lên lịch sự kiện trên Google Calendar

Đây là phần quan trọng nhất! Trong phần này, chúng ta sẽ lên lịch sự kiện trên Google Calendar!


Để bắt đầu, chúng ta sẽ khởi tạo ứng dụng khách Google Calendar API.

 const calendar = google.calendar({ version: 'v3', auth: oauth2Client });


Tiếp theo, chúng ta sẽ tạo một đối tượng sự kiện trong đó chúng ta sẽ thêm tất cả các chi tiết của sự kiện như Tóm tắt, Địa điểm, Thời gian bắt đầu và kết thúc, v.v.

 const event = { summary: 'Tech Talk with Arindam', location: 'Google Meet', description: "Demo event for Arindam's Blog Post.", start: { dateTime: "2024-03-14T19:30:00+05:30", timeZone: 'Asia/Kolkata' }, end: { dateTime: "2024-03-14T20:30:00+05:30", timeZone: 'Asia/Kolkata' }, };

Sau đó, chúng ta sẽ tạo một Route ( /create-event ) để tạo sự kiện.


Ở đây chúng ta chèn một sự kiện vào Lịch của người dùng bằng phương thức calendar.events.insert() .

 app.get('/create-event', async (req, res) => { try { const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client, resource: event }); res.send({ status: 200, message: 'Event created', }); } catch (err) { console.log(err); res.send(err); } } );

Với điều này, chúng ta có thể lên lịch sự kiện một cách linh hoạt trên Google Calendar.

Thêm liên kết Google Meet:

Cho đến bây giờ, chúng ta đã khám phá cách tạo sự kiện đơn giản trên Google Calendar. Trong phần này, chúng ta sẽ khám phá cách thêm Liên kết Google Meet vào Sự kiện đó!


Đối với điều đó, chúng tôi sẽ cập nhật đối tượng sự kiện mà chúng tôi đã tạo ở phần trước. Chúng tôi sẽ thêm thuộc tính conferenceData để chỉ định yêu cầu tạo cho liên kết Google Meet.

 conferenceData: { createRequest: { requestId: uuid(), } },


Chúng tôi cũng sẽ thêm thuộc tính attendees để mời khách đến Sự kiện. Sau đây là một ví dụ đơn giản về điều đó:

 attendees: [ {email: '[email protected]'}, ]


Bây giờ, đối tượng Sự kiện trông như thế này:

 const event = { summary: 'Tech Talk with Arindam', location: 'Google Meet', description: "Demo event for Arindam's Blog Post.", start: { dateTime: "2024-03-14T19:30:00+05:30", timeZone: 'Asia/Kolkata' }, end: { dateTime: "2024-03-14T20:30:00+05:30", timeZone: 'Asia/Kolkata' }, colorId: 1, conferenceData: { createRequest: { requestId: uuid(), } }, attendees: [ {email: '[email protected]'}, ] };


Tiếp theo, trong bước chèn sự kiện, chúng ta sẽ thêm tham số conferenceDataVersion vào đó.

 const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client , conferenceDataVersion: 1, resource: event });


Thao tác này sẽ tạo Sự kiện với Liên kết Google Meet. Chúng ta cũng có thể chia sẻ liên kết dưới dạng phản hồi như sau:

 res.send({ status: 200, message: 'Event created', link: result.data.hangoutLink });

Gửi lời nhắc nhở tới người tham dự:

Vậy là chúng ta đã gần hoàn thành dự án, chỉ còn lại khâu hoàn thiện cuối cùng. Cho đến bây giờ, dự án của chúng ta sẽ trực tiếp thêm sự kiện vào lịch của khách mời.


Tuy nhiên, để thông báo cho họ về những sự kiện này, chúng ta phải gửi một Mail. Để làm được điều đó, chúng ta phải thêm một tham số sendUpdates: 'all', vào phần tạo sự kiện. Với tham số này, ứng dụng sẽ tự động gửi email đến những khách được mời.

 const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client , conferenceDataVersion: 1 , sendUpdates: 'all', resource: event });

Với sự bổ sung này, dự án của chúng tôi hiện có thể xử lý liền mạch cả việc tạo sự kiện và thông báo qua email.

Kiểm tra ứng dụng:

Phần mã hóa của dự án đã hoàn tất. Bây giờ, chúng ta hãy xem nó có hoạt động hay không!


Để làm được điều đó, chúng ta sẽ bắt đầu dự án!

 npm run start


Và chúng tôi đã khởi động Server của mình trên cổng 8000! Bây giờ, chúng tôi sẽ đi đến tuyến http://localhost:8000/auth/ để xác thực người dùng. Nó sẽ chuyển hướng chúng tôi đến một cái gì đó như thế này:

Trang đăng nhập

Nó sẽ yêu cầu một số quyền cho ứng dụng.

Trang cho phép

Nó sẽ chuyển hướng đến tuyến đường /auth/redirect với tham số truy vấn code .

/auth/chuyển hướng tuyến đường

Sau khi xác thực người dùng thành công, chúng ta sẽ chuyển đến tuyến đường http://localhost:8000/create-event để lên lịch Sự kiện.

http://localhost:8000/create-event lộ trình

Tuyệt vời! Điều đó có nghĩa là sự kiện của chúng tôi được tạo bằng liên kết Google Meet.


Để xác minh rằng quy trình tạo sự kiện đang hoạt động chính xác, hãy kiểm tra Google Calendar của chúng tôi

Lịch Google

Thật tuyệt vời! Sự kiện của chúng tôi đã được tạo, điều đó có nghĩa là tuyến đường tạo Sự kiện đang hoạt động hoàn hảo! Và chúng tôi cũng nhận được thư Mời:

Thư mời tham dự sự kiện.

Tuyệt vời! Ứng dụng của chúng tôi hoạt động hoàn hảo!


Với điều đó, chúng tôi đã tích hợp Google Calendar vào ứng dụng Node.js của mình. Trong các bài viết sau, chúng tôi sẽ khám phá thêm các trường hợp sử dụng với Google Calendar.


Cho đến lúc đó, hãy chú ý theo dõi!

Phần kết luận

Nếu bạn thấy bài đăng trên blog này hữu ích, vui lòng cân nhắc chia sẻ với những người khác có thể hưởng lợi. Bạn cũng có thể theo dõi tôi để biết thêm nội dung về Javascript, React và các chủ đề Phát triển web khác.


Để được cộng tác có trả phí, hãy gửi email cho tôi theo địa chỉ: [email protected]


Kết nối với tôi trên Twitter , LinkedIn , YouTubeGitHub .


Cảm ơn bạn đã đọc :)

Cảm ơn