कोविड के बाद से मेरा कैलेंडर स्टैंड-अप, टीम मीटिंग और क्लाइंट कॉल से भरा हुआ है।
हालाँकि, किसी कार्यक्रम का शेड्यूल बनाना और मेहमानों को आमंत्रित करना उबाऊ काम है। एक शुक्रवार को, इन पर बहुत समय बिताने के बाद, मैंने सोचा -
मैं इस पर इतना समय क्यों खर्च कर रहा हूं?
इस प्रकार, मेरे मन में अपने काम को सरल बनाने के लिए एक इवेंट शेड्यूलर बनाने का विचार आया!
इस लेख में, मैं आपको दिखाऊंगा कि एक Nodejs एप्लिकेशन कैसे बनाया जाए जो ईवेंट बना सके और Google Meet लिंक के साथ स्वचालित रूप से ईमेल आमंत्रण भेज सके।
उत्साहित हो? मैं भी.
तो, अब और देरी न करते हुए!
चलो शुरू करो!
अपना प्रोजेक्ट शुरू करने के लिए, हमें Node.js वातावरण सेट अप करना होगा। तो, चलिए एक नोड प्रोजेक्ट बनाते हैं। टर्मिनल में निम्न कमांड चलाएँ।
npm init -y
इससे एक नया Node.js प्रोजेक्ट आरंभ हो जाएगा।
अब, हम अपनी परियोजना की आवश्यक निर्भरताएँ स्थापित करेंगे।
npm install express googleapis dotenv
इससे निम्नलिखित पैकेज स्थापित हो जाएंगे:
.env
फ़ाइल से पर्यावरण चर लोड करता है।
इसके बाद, हम अपनी संवेदनशील जानकारी जैसे API क्रेडेंशियल्स को सुरक्षित रूप से संग्रहीत करने के लिए एक .env
फ़ोल्डर बनाएंगे।
//.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
अब, हम रूट डायरेक्टरी में index.js
फ़ाइल बनाएंगे और एक बेसिक एक्सप्रेस सर्वर सेट अप करेंगे। निम्न कोड देखें:
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}`); });
यहां, हम .env
फ़ाइल से पोर्ट नंबर तक पहुंचने के लिए "dotenv" पैकेज का उपयोग कर रहे हैं।
प्रोजेक्ट के शीर्ष पर, हम dotenv.config()
का उपयोग करके पर्यावरण चरों को लोड कर रहे हैं ताकि उन्हें संपूर्ण फ़ाइल में सुलभ बनाया जा सके।
सबसे पहले, हम Google क्लाउड कंसोल पर जाएंगे।
फिर हमें यह डैशबोर्ड मिलेगा। (मैंने पहले एक प्रोजेक्ट बनाया है इसलिए मुझे यह मिल रहा है, आपको कुछ और मिल सकता है)।
अब, हम एक नया प्रोजेक्ट शुरू करने के लिए 'न्यू प्रोजेक्ट' बटन पर क्लिक करेंगे।
आगे, हमें कुछ इस तरह का मिलेगा। यहाँ, हम अपने प्रोजेक्ट का नाम और संगठन जोड़ेंगे। इस प्रोजेक्ट के लिए, मैं इसे "मेल-इंटीग्रेशन-डेमो" के रूप में रख रहा हूँ। फिर हम आगे बढ़ने के लिए क्रिएट बटन पर क्लिक करेंगे।
इसके बाद, साइड नेविगेशन बार में, हमें "API और सेवाएँ" मिलेंगी। इस अनुभाग में, API और सेवाएँ सक्षम करने के लिए एक सबमेनू है। हम आगे बढ़ने के लिए उस पर क्लिक करेंगे।
इसके बाद, हम उस API को सक्षम करेंगे जिसका उपयोग हम इस परियोजना में करेंगे, अर्थात Google कैलेंडर API.
उसके बाद, हम OAuth सहमति स्क्रीन पर जाएँगे। यहाँ, हम उपयोगकर्ता प्रकार को External के रूप में चुनेंगे। और आगे बढ़ने के लिए Create बटन दबाएँगे।
फिर, हम ऐप पंजीकरण पृष्ठ पर जाएंगे। यहां हम अपने एप्लिकेशन के बारे में अधिक जानकारी जोड़ेंगे। हम अपने ऐप का नाम और उपयोगकर्ता सहायता के लिए एक ईमेल पता जोड़कर शुरू करते हैं।
इस परियोजना के लिए, मैं इसका नाम "अरिंदम का मेल एकीकरण" रखूंगा और समर्थन के लिए अपना स्वयं का ईमेल पता उपयोग करूंगा।
इसके बाद, हमें एप्लिकेशन का दायरा परिभाषित करना होगा।
स्कोप्स में, हम इस प्रोजेक्ट के लिए आवश्यक अनुमतियाँ जैसे userinfo.email
और userinfo.profile
जोड़ेंगे।
इसके बाद, हम अपने एप्लिकेशन में एक परीक्षण उपयोगकर्ता जोड़ेंगे।
बस इतना ही। हमारा एप्लीकेशन प्लेटफॉर्म पर पंजीकृत है।
अब, हम अपना OAuth क्लाइंट ID सीक्रेट बनाएंगे। इसके लिए, हम क्रेडेंशियल बनाने वाले भाग पर जाएँगे।
यहाँ, हम अपने एप्लिकेशन का प्रकार और उसका नाम जोड़ेंगे। इस प्रोजेक्ट के लिए, यह एक वेब एप्लिकेशन है, और इसका नाम है अरिंदम का मेल डेमो।
इसके अलावा, हमने एक रीडायरेक्ट URL भी जोड़ा है। इस प्रोजेक्ट के लिए, यह http://localhost:8000/auth/redirect
होगा।
और फिर हमें OAuth क्रेडेंशियल मिल जाएगा।
आगे, हम API कुंजियाँ बनाएंगे।
यह सब करने के बाद, हम अपनी .env
फ़ाइल को API कुंजियों और OAuth क्रेडेंशियल्स के साथ अपडेट करेंगे जो हमने पहले जेनरेट किए थे।
इसके साथ, हमने इस प्रोजेक्ट के लिए अपना Google क्लाउड कंसोल सेट अप कर लिया है, अब अगले भाग पर चलते हैं
अब तक, हमने अपना मूल प्रोजेक्ट सेटअप कर लिया है। अब, हम अपने प्रोजेक्ट में OAuth2 प्रमाणीकरण को एकीकृत करेंगे। यह हमारे एप्लिकेशन को Google सेवाओं के साथ सुरक्षित रूप से इंटरैक्ट करने में सक्षम बनाता है। इसके लिए, सबसे पहले, हम आवश्यक पैकेज को index.js
फ़ाइल में आयात करेंगे।
const express = require('express'); const { google } = require('googleapis'); const dotenv = require('dotenv');
फिर हम Google कैलेंडर API के लिए आवश्यक पहुँच का दायरा परिभाषित करेंगे.
const scopes = ['https://www.googleapis.com/auth/calendar'];
इसके बाद, हम .env
फ़ाइल में संग्रहीत क्रेडेंशियल्स का उपयोग करके OAuth 2 क्लाइंट को कॉन्फ़िगर करेंगे।
// OAuth 2 configuration const oauth2Client = new google.auth.OAuth2 ( process.env.CLIENT_ID, process.env.CLIENT_SECRET, process.env.REDIRECT_URL );
OAuth 2 कॉन्फ़िगरेशन के बाद, हम अपने उपयोगकर्ताओं को प्रमाणित करने के लिए एक रूट बनाएंगे।
app.get('/auth', (req, res) => { const url = oauth2Client.generateAuthUrl ({ access_type: 'offline', scope: scopes }); res.redirect(url); } );
जब हमारे उपयोगकर्ता इस मार्ग पर जाएंगे, तो उन्हें गूगल के प्रमाणीकरण पृष्ठ पर पुनः निर्देशित किया जाएगा, जहां यह हमारे एप्लिकेशन के लिए विशिष्ट अनुमतियां मांगेगा।
सफल प्रमाणीकरण के बाद, Google उपयोगकर्ता को हमारे रीडायरेक्ट URL ( /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.'); } );
यहाँ, हम क्वेरी से रिफ्रेश टोकन प्राप्त कर रहे हैं और उन्हें oauth2Client
में क्रेडेंशियल के रूप में संग्रहीत कर रहे हैं। ये क्रेडेंशियल हमें Google कैलेंडर API से अनुरोध करने में मदद करेंगे।
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.'); } );
अब सबसे महत्वपूर्ण हिस्सा आता है! इस भाग में, हम Google कैलेंडर पर एक ईवेंट शेड्यूल करेंगे!
आरंभ करने के लिए, हम Google कैलेंडर API क्लाइंट को आरंभ करेंगे.
const calendar = google.calendar({ version: 'v3', auth: oauth2Client });
इसके बाद, हम एक इवेंट ऑब्जेक्ट बनाएंगे, जिसमें हम इवेंट के सभी विवरण जोड़ेंगे, जैसे सारांश, स्थान, प्रारंभ और समाप्ति समय, आदि।
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' }, };
उसके बाद हम एक रूट ( /create-event
) बनाएंगे जहां हम इवेंट बनाएंगे।
यहां हम 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); } } );
इसके साथ, हम गूगल कैलेंडर पर ईवेंट को गतिशील रूप से शेड्यूल कर सकते हैं।
अब तक हमने यह पता लगाया है कि Google कैलेंडर पर एक सरल ईवेंट कैसे बनाया जाता है। इस अनुभाग में, हम यह पता लगाएंगे कि उस ईवेंट में Google Meet लिंक कैसे जोड़ा जाता है!
इसके लिए, हम पिछले सेक्शन में बनाए गए इवेंट ऑब्जेक्ट को अपडेट करेंगे। हम Google Meet लिंक के लिए निर्माण अनुरोध निर्दिष्ट करने के लिए एक conferenceData
प्रॉपर्टी जोड़ेंगे।
conferenceData: { createRequest: { requestId: uuid(), } },
हम इवेंट में मेहमानों को आमंत्रित करने के लिए एक attendees
प्रॉपर्टी भी जोड़ेंगे। यहाँ इसका एक सरल उदाहरण दिया गया है:
attendees: [ {email: '[email protected]'}, ]
अब, इवेंट ऑब्जेक्ट इस तरह दिखता है:
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]'}, ] };
इसके बाद, इवेंट सम्मिलन चरण में, हम इसमें conferenceDataVersion
पैरामीटर जोड़ेंगे।
const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client , conferenceDataVersion: 1, resource: event });
इससे Google Meet लिंक के साथ एक इवेंट तैयार हो जाएगा। हम लिंक को इस तरह प्रतिक्रिया के तौर पर भी शेयर कर सकते हैं:
res.send({ status: 200, message: 'Event created', link: result.data.hangoutLink });
तो, हमारा प्रोजेक्ट लगभग पूरा हो चुका है, बस अंतिम टच बाकी है। अब तक, हमारा प्रोजेक्ट सीधे आमंत्रित अतिथियों के कैलेंडर में इवेंट को जोड़ देगा।
हालाँकि, उन्हें इन घटनाओं के बारे में सूचित करने के लिए, हमें एक मेल भेजना होगा। इसके लिए, हमें इवेंट निर्माण भाग में एक पैरामीटर sendUpdates: 'all',
जोड़ना होगा। इसके साथ, एप्लिकेशन स्वचालित रूप से आमंत्रित मेहमानों को ईमेल भेजेगा।
const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client , conferenceDataVersion: 1 , sendUpdates: 'all', resource: event });
इस सुविधा के साथ, अब हमारी परियोजना ईवेंट निर्माण और ईमेल अधिसूचना दोनों को सहजता से संभालती है।
हमारे प्रोजेक्ट का कोडिंग वाला हिस्सा पूरा हो गया है। अब देखते हैं कि यह काम कर रहा है या नहीं!
इसके लिए, हम परियोजना शुरू करेंगे!
npm run start
और हमने अपना सर्वर पोर्ट 8000 पर शुरू कर दिया है! अब, हम उपयोगकर्ता को प्रमाणित करने के लिए http://localhost:8000/auth/ रूट पर जाएँगे। यह हमें कुछ इस तरह से रीडायरेक्ट करेगा:
यह एप्लिकेशन के लिए कुछ अनुमति मांगेगा।
यह code
क्वेरी पैरामीटर के साथ /auth/redirect
रूट पर रीडायरेक्ट करेगा।
उपयोगकर्ता को सफलतापूर्वक प्रमाणित करने के बाद, हम ईवेंट को शेड्यूल करने के लिए http://localhost:8000/create-event रूट पर जाएंगे।
बहुत बढ़िया! इसका मतलब है कि हमारा ईवेंट Google Meet लिंक से बनाया गया है।
यह सत्यापित करने के लिए कि ईवेंट निर्माण प्रक्रिया सही ढंग से काम कर रही है, आइए अपना Google कैलेंडर देखें
कमाल है! हमारा इवेंट बन गया है, जिसका मतलब है कि इवेंट-निर्माण मार्ग पूरी तरह से काम कर रहा है! और हमें एक आमंत्रण मेल भी मिला:
बहुत बढ़िया! हमारा एप्लीकेशन पूरी तरह से काम कर रहा है!
इसके साथ ही, हमने अपने Node.js ऐप में Google कैलेंडर को एकीकृत कर दिया है। अगले लेखों में, हम Google कैलेंडर के साथ और अधिक उपयोग के मामलों का पता लगाएंगे।
तब तक, बने रहिए!
अगर आपको यह ब्लॉग पोस्ट मददगार लगी हो, तो कृपया इसे दूसरों के साथ शेयर करने पर विचार करें, जिन्हें इससे फ़ायदा हो सकता है। आप जावास्क्रिप्ट, रिएक्ट और अन्य वेब डेवलपमेंट विषयों पर अधिक सामग्री के लिए मुझे फ़ॉलो भी कर सकते हैं।
सशुल्क सहयोग के लिए, मुझे इस पते पर मेल करें: [email protected]
ट्विटर , लिंक्डइन , यूट्यूब और गिटहब पर मुझसे जुड़ें।
पढ़ने के लिए आपका शुक्रिया :)