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

1. আপনি শুরু করার আগে

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

পূর্বশর্ত

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

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

এছাড়াও আপনাকে ডায়ালগফ্লো-এর মৌলিক ধারণা এবং গঠনগুলি বুঝতে হবে, যা আপনি ডায়ালগফ্লো পথের সাথে একটি চ্যাটবট তৈরি করুন- এ পাওয়া নিম্নলিখিত ভিডিওগুলি থেকে সংগ্রহ করতে পারেন।

আপনি কি শিখবেন

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

আপনি কি নির্মাণ করবেন

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

আপনি কি প্রয়োজন হবে

  • ডায়ালগফ্লো কনসোলে লগ ইন করার জন্য একটি ওয়েব ব্রাউজার এবং একটি ইমেল ঠিকানা৷
  • ক্যালেন্ডার অ্যাক্সেস করার জন্য একটি Google অ্যাকাউন্ট

2. পরিপূর্ণতা কি?

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

আপনি কখন এজেন্টকে প্রসারিত করতে পরিপূর্ণতা ব্যবহার করতে পারেন তার কিছু উদাহরণ নিচে দেওয়া হল:

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

3. ক্যালেন্ডার API সক্ষম করুন৷

  1. ডায়ালগফ্লো কনসোলে , ক্লিক করুন d7d792687e597dd5.png .
  2. সাধারণ ট্যাবে, প্রজেক্ট আইডিতে স্ক্রোল করুন, তারপর Google ক্লাউডে ক্লিক করুন f2bffd4fcdb84fa9.png .

34be16fcd4c5aeff.png

  1. Google ক্লাউড কনসোলে, নেভিগেশন মেনুতে ক্লিক করুন ☰ > APIs এবং পরিষেবাগুলি > লাইব্রেরি
  2. "Google ক্যালেন্ডার API" অনুসন্ধান করুন, তারপর আপনার Google ক্লাউড প্রকল্পে API ব্যবহার করতে সক্ষম করুন ক্লিক করুন৷

4. পরিষেবা অ্যাকাউন্ট সেট আপ করুন

  1. নেভিগেশন মেনুতে ক্লিক করুন ☰ > APIs & Services > Credentials .
  2. ক্রিয়েট ক্রেডেনশিয়াল > সার্ভিস অ্যাকাউন্টে ক্লিক করুন।

86f51af0e7886fdd.png

  1. পরিষেবা অ্যাকাউন্টের বিবরণে , পরিষেবা অ্যাকাউন্টের নাম হিসাবে "অ্যাপয়েন্টমেন্ট-শিডিউলার" লিখুন, তারপর তৈরি করুন ক্লিক করুন৷

845d25f3e07ff770.png

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

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

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

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

d6ec2fcf0bd2ae22.png

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

7927f6fa675e3e87.png

  1. অনুমতি ড্রপ-ডাউন তালিকাতে ক্লিক করুন, তারপরে ইভেন্টে পরিবর্তন করুন > পাঠান ক্লিক করুন।

2ee99d3d15eed97b.png

  1. সেটিংসে থাকাকালীন, ইন্টিগ্রেট ক্যালেন্ডারে স্ক্রোল করুন এবং ক্যালেন্ডার আইডি কপি করুন।

df8a731f0713c52.png

6. ডায়ালগফ্লোতে পূর্ণতা সেট আপ করুন

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

  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. আপনার JSON ফাইলের বিষয়বস্তুর সাথে <INSERT CONTENTS OF YOUR JSON FILE HERE> প্রতিস্থাপন করুন।
  3. (ঐচ্ছিক।) অ্যাপয়েন্টমেন্ট ক্যালেন্ডারের টাইমজোন অনুযায়ী const timeZone এবং const timeZoneOffset পরিবর্তন করুন।
  4. ডিপ্লোয় ক্লিক করুন।

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

  1. ডায়ালগফ্লো কনসোলে নেভিগেট করুন এবং ইন্টেন্টে ক্লিক করুন।
  2. শিডিউল অ্যাপয়েন্টমেন্ট ইন্টেন্টে ক্লিক করুন।
  3. পূরণ করতে নিচে স্ক্রোল করুন এবং অভিপ্রায়ের জন্য ওয়েবহুক কল চালু করুন।

a5b41336b5249e44.png

  1. Save এ ক্লিক করুন।
  2. ডিপ্লোয় ক্লিক করুন।

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

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

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

96d3784c103daf5e.png

  1. ক্যালেন্ডার বই সাড়া.

b7da9da814271db8.png

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

আপনি যদি অন্যান্য ডায়ালগফ্লো কোডল্যাবগুলি সম্পূর্ণ করার পরিকল্পনা করে থাকেন, তাহলে আপাতত এই বিভাগটি এড়িয়ে যান এবং পরে এটিতে ফিরে যান৷

ডায়ালগফ্লো এজেন্ট মুছুন

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

520c1c6bb9f46ea6.png

  1. সাধারণ ট্যাবে, নীচে স্ক্রোল করুন এবং এই এজেন্ট মুছুন ক্লিক করুন।
  2. ডায়ালগে Delete টাইপ করুন এবং Delete এ ক্লিক করুন।

9. অভিনন্দন

আপনি ডায়ালগফ্লোতে একটি চ্যাটবট তৈরি করেছেন এবং এটি ক্যালেন্ডারের সাথে একত্রিত করেছেন। আপনি এখন একজন চ্যাটবট বিকাশকারী!

আরও জানুন

আরও জানতে, ডায়ালগফ্লো গিথুব পৃষ্ঠায় কোডের নমুনাগুলি দেখুন।