Calendar के साथ Dialogflow को जोड़कर, ग्राहक को आइटम भेजने के बारे में जानें

1. शुरू करने से पहले

इस कोडलैब में, आपको यह जानने को मिलेगा कि Dialogflow, बैकएंड सिस्टम से कैसे कनेक्ट होता है, ताकि लोगों के सवालों के जवाब ज़्यादा बेहतर और डाइनैमिक तरीके से दिए जा सकें.

ज़रूरी शर्तें

आगे बढ़ने से पहले, आपको ये कोडलैब पूरे करने होंगे:

  1. Dialogflow की मदद से अपॉइंटमेंट शेड्यूलर बनाना
  2. Dialogflow को Actions on Google के साथ इंटिग्रेट करना
  3. Dialogflow में मौजूद इकाइयों के बारे में जानकारी

आपको Dialogflow के बुनियादी कॉन्सेप्ट और स्ट्रक्चर के बारे में भी पता होना चाहिए. इसके बारे में जानने के लिए, Dialogflow की मदद से चैटबॉट बनाना पाथवे में मौजूद ये वीडियो देखें.

आपको क्या सीखने को मिलेगा

  • फ़ुलफ़िलमेंट क्या है
  • Calendar के लिए सेवा खाता सेट अप करने का तरीका
  • Calendar को सेट अप करने का तरीका
  • Dialogflow में फ़ुलफ़िलमेंट की सुविधा चालू करने का तरीका
  • फ़ुलफ़िलमेंट की जांच करने का तरीका

आपको क्या बनाना है

  • Cloud Functions का इस्तेमाल करके फ़ुलफ़िलमेंट करना
  • Dialogflow और Calendar के बीच इंटिग्रेशन

आपको किन चीज़ों की ज़रूरत होगी

  • Dialogflow कंसोल में लॉग इन करने के लिए, एक वेब ब्राउज़र और एक ईमेल पता
  • Calendar ऐक्सेस करने के लिए Google खाता

2. फ़ुलफ़िलमेंट क्या होता है?

फ़ुलफ़िलमेंट, एक ऐसा कोड होता है जिसे वेबुक के तौर पर डिप्लॉय किया जाता है. इससे आपका Dialogflow एजेंट, हर इंटेंट के हिसाब से कारोबार के लॉजिक को कॉल कर पाता है. बातचीत के दौरान, फ़ुलफ़िलमेंट की सुविधा का इस्तेमाल करके, Dialogflow की नैचुरल लैंग्वेज प्रोसेसिंग से निकाली गई जानकारी का इस्तेमाल किया जा सकता है. इससे डाइनैमिक जवाब जनरेट किए जा सकते हैं या बैकएंड पर कार्रवाइयां ट्रिगर की जा सकती हैं. ज़्यादातर Dialogflow एजेंट, फ़ुलफ़िलमेंट का इस्तेमाल करते हैं.

यहां कुछ उदाहरण दिए गए हैं, जिनमें एजेंट की क्षमताओं को बढ़ाने के लिए फ़ुलफ़िलमेंट का इस्तेमाल किया जा सकता है:

  • डेटाबेस से खोजी गई जानकारी के आधार पर डाइनैमिक जवाब जनरेट करने के लिए
  • किसी ग्राहक के अनुरोध किए गए प्रॉडक्ट के आधार पर ऑर्डर देने के लिए
  • किसी गेम के लिए नियम और जीतने की शर्तें लागू करने के लिए

3. Calendar API चालू करना

  1. Dialogflow कंसोल में, d7d792687e597dd5.png पर क्लिक करें.
  2. सामान्य टैब में, प्रोजेक्ट आईडी तक स्क्रोल करें. इसके बाद, Google Cloud f2bffd4fcdb84fa9.png पर क्लिक करें.

34be16fcd4c5aeff.png

  1. Google Cloud Console में, नेविगेशन मेन्यू ☰ > एपीआई और सेवाएं > लाइब्रेरी पर क्लिक करें.
  2. "Google Calendar API" खोजें. इसके बाद, अपने Google Cloud प्रोजेक्ट पर एपीआई का इस्तेमाल करने के लिए, चालू करें पर क्लिक करें.

4. सेवा खाता सेट अप करना

  1. नेविगेशन मेन्यू ☰ > एपीआई और सेवाएं > क्रेडेंशियल पर क्लिक करें.
  2. क्रेडेंशियल बनाएं > सेवा खाता पर क्लिक करें.

86f51af0e7886fdd.png

  1. सेवा खाते की जानकारी में, सेवा खाते का नाम के तौर पर "appointment-scheduler" डालें. इसके बाद, बनाएं पर क्लिक करें.

845d25f3e07ff770.png

  1. जहां इस सेवा खाते को प्रोजेक्ट का ऐक्सेस दें लिखा है वहां जारी रखें पर क्लिक करके इसे छोड़ें.
  2. जहां उपयोगकर्ताओं को इस सेवा खाते का ऐक्सेस दें (ज़रूरी नहीं) लिखा है वहां कुंजी बनाएं पर क्लिक करें. इसके बाद, JSON चुनें और बनाएं पर क्लिक करें.

आपके कंप्यूटर पर एक JSON फ़ाइल डाउनलोड होगी. आपको सेटअप के इन सेक्शन में इसकी ज़रूरत पड़ेगी. a424cec60144d707.png

5. कैलेंडर सेटअप करना

  1. Calendar पर जाएं. इसके बाद, मुख्य मेन्यू ☰ > दूसरे कैलेंडर जोड़ें fbc354048b0a2c6c.png> नया कैलेंडर बनाएं पर क्लिक करें.

d6ec2fcf0bd2ae22.png

  1. कैलेंडर का नाम "अपॉइंटमेंट कैलेंडर" डालें और कैलेंडर बनाएं पर क्लिक करें.
  2. पेज को फिर से लोड करें. इसके बाद, अपॉइंटमेंट कैलेंडर पर क्लिक करें. इसके बाद, खास लोगों के साथ शेयर करें पर जाएं. इसके बाद, लोगों को जोड़ें पर क्लिक करें.
  3. सेवा खाते के सेटअप के दौरान डाउनलोड की गई JSON फ़ाइल से client_email को कॉपी करें और डायलॉग में चिपकाएं.

7927f6fa675e3e87.png

  1. अनुमतियां ड्रॉप-डाउन सूची पर क्लिक करें. इसके बाद, इवेंट में बदलाव करें > भेजें पर क्लिक करें.

2ee99d3d15eed97b.png

  1. सेटिंग में रहते हुए, कैलेंडर जोड़ें तक स्क्रोल करें और कैलेंडर आईडी को कॉपी करें.

df8a731f0713c52.png

6. Dialogflow में फ़ुलफ़िलमेंट सेट अप करना

फ़ुलफ़िलमेंट में सेवा खाता और कैलेंडर आईडी जोड़ना

  1. AppointmentScheduler Dialogflow एजेंट पर जाएं और फ़ुलफ़िलमेंट पर क्लिक करें.
  2. इनलाइन एडिटर को चालू करें.

c8574c6ef899393f.png

  1. index.js फ़ाइल को इस कोड से अपडेट करें:
'use strict';

// Import the Dialogflow module from Google client libraries.
const functions = require('firebase-functions');
const {google} = require('googleapis');
const {WebhookClient} = require('dialogflow-fulfillment');

// Enter your calendar ID below and service account JSON below
const calendarId = "<INSERT YOUR CALENDAR ID>";
const serviceAccount = {<INSERT CONTENTS OF YOUr JSON FILE HERE>}; // Starts with {"type": "service_account",...

// Set up Google Calendar Service account credentials
const serviceAccountAuth = new google.auth.JWT({
 email: serviceAccount.client_email,
 key: serviceAccount.private_key,
 scopes: 'https://www.googleapis.com/auth/calendar'
});

const calendar = google.calendar('v3');
process.env.DEBUG = 'dialogflow:*'; // enables lib debugging statements

const timeZone = 'America/Los_Angeles';
const timeZoneOffset = '-07:00';

// Set the DialogflowApp object to handle the HTTPS POST request.
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
 const agent = new WebhookClient({ request, response });
 console.log("Parameters", agent.parameters);
 const appointment_type = agent.parameters.appointment_type;
 function makeAppointment (agent) {
   // Calculate appointment start and end datetimes (end = +1hr from start)
   const dateTimeStart = new Date(Date.parse(agent.parameters.date.split('T')[0] + 'T' + agent.parameters.time.split('T')[1].split('-')[0] + timeZoneOffset));
   const dateTimeEnd = new Date(new Date(dateTimeStart).setHours(dateTimeStart.getHours() + 1));
   const appointmentTimeString = dateTimeStart.toLocaleString(
     'en-US',
     { month: 'long', day: 'numeric', hour: 'numeric', timeZone: timeZone }
   );
    // Check the availability of the time, and make an appointment if there is time on the calendar
   return createCalendarEvent(dateTimeStart, dateTimeEnd, appointment_type).then(() => {
     agent.add(`Ok, let me see if we can fit you in. ${appointmentTimeString} is fine!.`);
   }).catch(() => {
     agent.add(`I'm sorry, there are no slots available for ${appointmentTimeString}.`);
   });
 }

// Handle the Dialogflow intent named 'Schedule Appointment'.
 let intentMap = new Map();
 intentMap.set('Schedule Appointment', makeAppointment);
 agent.handleRequest(intentMap);
});

//Creates calendar event in Google Calendar
function createCalendarEvent (dateTimeStart, dateTimeEnd, appointment_type) {
 return new Promise((resolve, reject) => {
   calendar.events.list({
     auth: serviceAccountAuth, // List events for time period
     calendarId: calendarId,
     timeMin: dateTimeStart.toISOString(),
     timeMax: dateTimeEnd.toISOString()
   }, (err, calendarResponse) => {
     // Check if there is a event already on the Calendar
     if (err || calendarResponse.data.items.length > 0) {
       reject(err || new Error('Requested time conflicts with another appointment'));
     } else {
       // Create event for the requested time period
       calendar.events.insert({ auth: serviceAccountAuth,
         calendarId: calendarId,
         resource: {summary: appointment_type +' Appointment', description: appointment_type,
           start: {dateTime: dateTimeStart},
           end: {dateTime: dateTimeEnd}}
       }, (err, event) => {
         err ? reject(err) : resolve(event);
       }
       );
     }
   });
 });
}
  1. <INSERT YOUR CALENDAR ID> को उस कैलेंडर आईडी से बदलें जिसे आपने पिछले सेक्शन में कॉपी किया था.
  2. <INSERT CONTENTS OF YOUR JSON FILE HERE> को अपनी JSON फ़ाइल के कॉन्टेंट से बदलें.
  3. (ज़रूरी नहीं.) Appointment Calendar के टाइमज़ोन के हिसाब से, const timeZone और const timeZoneOffset बदलें.
  4. डिप्लॉय करें पर क्लिक करें.

फ़ुलफ़िलमेंट के जवाब देने की सुविधा चालू करना

  1. Dialogflow कंसोल पर जाएं और इंटेंट पर क्लिक करें.
  2. अपॉइंटमेंट शेड्यूल करने का इरादा पर क्लिक करें.
  3. नीचे की ओर स्क्रोल करके फ़ुलफ़िलमेंट पर जाएं. इसके बाद, इंटेंट के लिए वेबुक कॉल चालू करें को चालू करें.

a5b41336b5249e44.png

  1. सेव करें पर क्लिक करें.
  2. डिप्लॉय करें पर क्लिक करें.

7. अपने चैटबॉट की जांच करना

अपने चैटबॉट को Actions सिम्युलेटर में टेस्ट किया जा सकता है. इसके अलावा, वेब या Google Home के साथ इंटिग्रेशन का इस्तेमाल किया जा सकता है, जिसके बारे में आपने पहले सीखा था.

  1. उपयोगकर्ता: "कल दोपहर 2 बजे के लिए, वाहन के रजिस्ट्रेशन का अपॉइंटमेंट सेट करो."
  2. चैटबॉट: "ठीक है, हम देखते हैं कि क्या हम आपको शामिल कर सकते हैं. 24 अप्रैल, दोपहर 2 बजे ठीक है!"

96d3784c103daf5e.png

  1. Calendar, जवाब को बुक कर लेता है.

b7da9da814271db8.png

8. व्यवस्थित करें

अगर आपको Dialogflow के अन्य कोडलैब पूरे करने हैं, तो अभी इस सेक्शन को छोड़ दें और बाद में इस पर वापस आएं.

Dialogflow एजेंट को मिटाना

  1. अपने मौजूदा एजेंट के बगल में मौजूद, dc4ac6f9c0ae94e9.png पर क्लिक करें.

520c1c6bb9f46ea6.png

  1. सामान्य टैब में, सबसे नीचे तक स्क्रोल करें और इस एजेंट को मिटाएं पर क्लिक करें.
  2. डायलॉग में मिटाएं टाइप करें और मिटाएं पर क्लिक करें.

9. बधाई हो

आपने Dialogflow में एक चैटबॉट बनाया हो और उसे Calendar के साथ इंटिग्रेट किया हो. अब आप चैटबॉट डेवलपर बन गए हैं!

ज़्यादा जानें

ज़्यादा जानने के लिए, Dialogflow Github पेज पर कोड के सैंपल देखें.