ক্যালেন্ডারের সাথে ডায়ালগফ্লোকে সংহত করে পরিপূর্ণতা বুঝুন

১. শুরু করার আগে

এই কোডল্যাবে আপনি শিখবেন, ব্যবহারকারীদের প্রশ্নের সমৃদ্ধ ও গতিশীল উত্তর দেওয়ার জন্য Dialogflow কীভাবে ব্যাকএন্ড সিস্টেমের সাথে সংযোগ স্থাপন করে।

পূর্বশর্ত

এগিয়ে যাওয়ার আগে, আপনাকে নিম্নলিখিত কোডল্যাবগুলি সম্পূর্ণ করতে হবে:

  1. Dialogflow দিয়ে একটি অ্যাপয়েন্টমেন্ট শিডিউলার তৈরি করুন
  2. গুগল অ্যাকশন-এর সাথে ডায়ালগফ্লো একীভূত করুন
  3. Dialogflow-তে এনটিটিগুলি বুঝুন

আপনাকে Dialogflow-এর মৌলিক ধারণা এবং গঠন সম্পর্কেও বুঝতে হবে, যা আপনি 'Build a chatbot with Dialogflow' পাথওয়েতে থাকা নিম্নলিখিত ভিডিওগুলো থেকে জেনে নিতে পারেন।

আপনি যা শিখবেন

  • পরিপূর্ণতা কী
  • ক্যালেন্ডারের জন্য কীভাবে একটি পরিষেবা অ্যাকাউন্ট সেট আপ করবেন
  • ক্যালেন্ডার কীভাবে সেট আপ করবেন
  • Dialogflow-এ কীভাবে ফুলফিলমেন্ট সক্রিয় করবেন
  • পরিপূর্ণতা কীভাবে পরীক্ষা করবেন

আপনি যা তৈরি করবেন

  • ক্লাউড ফাংশন ব্যবহার করে পরিপূর্ণতা
  • Dialogflow এবং Calendar-এর মধ্যে একটি ইন্টিগ্রেশন

আপনার যা যা লাগবে

  • Dialogflow কনসোলে লগ ইন করার জন্য একটি ওয়েব ব্রাউজার এবং ইমেল ঠিকানা।
  • ক্যালেন্ডার অ্যাক্সেস করার জন্য একটি গুগল অ্যাকাউন্ট প্রয়োজন।

২. পরিপূর্ণতা বলতে কী বোঝায়?

ফুলফিলমেন্ট হলো একটি কোড যা ওয়েবহুক হিসেবে ডেপ্লয় করা হয় এবং এটি আপনার ডায়ালগফ্লো এজেন্টকে প্রতিটি ইনটেন্টের ভিত্তিতে বিজনেস লজিক কল করার সুযোগ দেয়। একটি কথোপকথন চলাকালীন, ফুলফিলমেন্ট আপনাকে ডায়ালগফ্লো-এর ন্যাচারাল-ল্যাঙ্গুয়েজ প্রসেসিং দ্বারা সংগৃহীত তথ্য ব্যবহার করে ডায়নামিক প্রতিক্রিয়া তৈরি করতে বা আপনার ব্যাকএন্ডে অ্যাকশন ট্রিগার করতে সাহায্য করে। বেশিরভাগ ডায়ালগফ্লো এজেন্টই ফুলফিলমেন্ট ব্যবহার করে থাকে।

নিম্নলিখিতগুলি হল এমন কিছু উদাহরণ যখন আপনি একজন এজেন্টের পরিধি বাড়াতে ফুলফিলমেন্ট ব্যবহার করতে পারেন:

  • ডাটাবেস থেকে খুঁজে বের করা তথ্যের ভিত্তিতে গতিশীল প্রতিক্রিয়া তৈরি করতে
  • গ্রাহকের অনুরোধ করা পণ্যের উপর ভিত্তি করে অর্ডার দেওয়া।
  • একটি খেলার নিয়ম ও জয়ের শর্তাবলী বাস্তবায়ন করা।

৩. ক্যালেন্ডার এপিআই সক্রিয় করুন

  1. Dialogflow কনসোলে , ক্লিক করুন d7d792687e597dd5.png .
  2. জেনারেল ট্যাবে, প্রজেক্ট আইডি পর্যন্ত স্ক্রোল করুন, তারপর গুগল ক্লাউড-এ ক্লিক করুন। f2bffd4fcdb84fa9.png .

34be16fcd4c5aeff.png

  1. গুগল ক্লাউড কনসোলে, নেভিগেশন মেনু ☰ > এপিআই ও পরিষেবা > লাইব্রেরি- তে ক্লিক করুন।
  2. "Google Calendar API" লিখে সার্চ করুন, তারপর আপনার Google Cloud প্রজেক্টে API-টি ব্যবহার করার জন্য Enable-এ ক্লিক করুন।

৪. পরিষেবা অ্যাকাউন্ট তৈরি করুন

  1. নেভিগেশন মেনু ☰ > এপিআই ও পরিষেবা > ক্রেডেনশিয়ালস-এ ক্লিক করুন।
  2. ক্রেডেনশিয়াল তৈরি করুন > পরিষেবা অ্যাকাউন্ট-এ ক্লিক করুন।

86f51af0e7886fdd.png

  1. সার্ভিস অ্যাকাউন্ট ডিটেইলস -এ, সার্ভিস অ্যাকাউন্ট নেম হিসেবে "appointment-scheduler" লিখুন, তারপর ক্রিয়েট-এ ক্লিক করুন।

845d25f3e07ff770.png

  1. যেখানে ‘এই পরিষেবা অ্যাকাউন্টকে প্রকল্পে অ্যাক্সেস দিন’ লেখা আছে, সেটি এড়িয়ে যেতে ‘ চালিয়ে যান ’ ক্লিক করুন।
  2. যেখানে ‘ব্যবহারকারীদের এই পরিষেবা অ্যাকাউন্টে অ্যাক্সেস দিন (ঐচ্ছিক)’ লেখা আছে, সেখানে ‘Create Key’-তে ক্লিক করুন, তারপর ‘JSON’ নির্বাচন করে ‘Create’-এ ক্লিক করুন।

আপনার কম্পিউটারে একটি JSON ফাইল ডাউনলোড হবে, যা পরবর্তী সেটআপ পর্বগুলোতে আপনার প্রয়োজন হবে। a424cec60144d707.png

৫. ক্যালেন্ডার সেটআপ

  1. ক্যালেন্ডারে যান, তারপর প্রধান মেনু ☰ > অন্যান্য ক্যালেন্ডার যোগ করুন -এ ক্লিক করুন। fbc354048b0a2c6c.png নতুন ক্যালেন্ডার তৈরি করুন

d6ec2fcf0bd2ae22.png

  1. ক্যালেন্ডারের নাম হিসেবে "Appointment Calendar" লিখুন এবং Create calendar-এ ক্লিক করুন।
  2. পৃষ্ঠাটি পুনরায় লোড করুন, তারপর 'অ্যাপয়েন্টমেন্ট ক্যালেন্ডার'-এ ক্লিক করুন, 'নির্দিষ্ট ব্যক্তিদের সাথে শেয়ার' পর্যন্ত স্ক্রোল করুন, এরপর 'ব্যক্তি যোগ করুন'-এ ক্লিক করুন।
  3. সার্ভিস অ্যাকাউন্ট সেটআপের অংশ হিসেবে ডাউনলোড করা JSON ফাইল থেকে client_email টি কপি করে ডায়ালগ বক্সে পেস্ট করুন।

7927f6fa675e3e87.png

  1. পারমিশন ড্রপ-ডাউন লিস্টে ক্লিক করুন, তারপর মেক চেঞ্জেস টু ইভেন্টস > সেন্ড-এ ক্লিক করুন।

2ee99d3d15eed97b.png

  1. সেটিংস- এ থাকা অবস্থায়, ‘Integrate calendar’ পর্যন্ত স্ক্রোল করুন এবং ক্যালেন্ডার আইডিটি কপি করুন।

df8a731f0713c52.png

৬. Dialogflow-তে ফুলফিলমেন্ট সেট আপ করুন।

পরিপূর্ণতায় পরিষেবা অ্যাকাউন্ট এবং ক্যালেন্ডার আইডি যোগ করুন

  1. AppointmentScheduler Dialogflow এজেন্টে যান এবং Fulfillment-এ ক্লিক করুন।
  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. (ঐচ্ছিক।) অ্যাপয়েন্টমেন্ট ক্যালেন্ডারের টাইমজোন অনুযায়ী const timeZone এবং const timeZoneOffset পরিবর্তন করুন।
  4. ডিপ্লয়-এ ক্লিক করুন।

পরিপূর্ণতা প্রতিক্রিয়া সক্ষম করুন

  1. Dialogflow কনসোলে যান এবং Intents-এ ক্লিক করুন।
  2. অ্যাপয়েন্টমেন্ট নির্ধারণের অভিপ্রায়ে ক্লিক করুন।
  3. Fulfillment পর্যন্ত স্ক্রোল করুন এবং ইন্টেন্টটির জন্য Enable webhook call চালু করুন।

a5b41336b5249e44.png

  1. সংরক্ষণ করুন- এ ক্লিক করুন।
  2. ডিপ্লয়-এ ক্লিক করুন।

৭. আপনার চ্যাটবট পরীক্ষা করুন

আপনি অ্যাকশন সিমুলেটরে আপনার চ্যাটবট পরীক্ষা করতে পারেন, অথবা পূর্বে শেখা ওয়েব বা গুগল হোম ইন্টিগ্রেশন ব্যবহার করতে পারেন।

  1. ব্যবহারকারী: "আগামীকাল দুপুর ২টায় গাড়ি নিবন্ধনের জন্য একটি অ্যাপয়েন্টমেন্ট ঠিক করুন।"
  2. চ্যাটবট: "আচ্ছা, দেখি আপনাকে জায়গা দেওয়া যায় কিনা। ২৪শে এপ্রিল, দুপুর ২টা আপনার জন্য সুবিধাজনক!"

96d3784c103daf5e.png

  1. ক্যালেন্ডার বইগুলো প্রতিক্রিয়া জানায়।

b7da9da814271db8.png

৮. পরিষ্কার করুন

আপনি যদি অন্যান্য Dialogflow কোডল্যাবগুলো সম্পন্ন করার পরিকল্পনা করে থাকেন, তাহলে আপাতত এই অংশটি এড়িয়ে যান এবং পরে আবার এখানে ফিরে আসতে পারেন।

Dialogflow এজেন্টটি মুছে ফেলুন

  1. ক্লিক করুন dc4ac6f9c0ae94e9.png আপনার বর্তমান এজেন্টের পাশে।

520c1c6bb9f46ea6.png

  1. জেনারেল ট্যাবে, একদম নিচে স্ক্রোল করুন এবং ‘ডিলিট দিস এজেন্ট’ এ ক্লিক করুন।
  2. ডায়ালগ বক্সে Delete টাইপ করুন এবং Delete-এ ক্লিক করুন।

৯. অভিনন্দন

আপনি Dialogflow-তে একটি চ্যাটবট তৈরি করেছেন এবং এটিকে ক্যালেন্ডারের সাথে সংযুক্ত করেছেন। আপনি এখন একজন চ্যাটবট ডেভেলপার!

আরও জানুন

আরও জানতে, Dialogflow গিটহাব পেজে থাকা কোড নমুনাগুলো দেখুন।