১. শুরু করার আগে
এই কোডল্যাবে, আপনি একটি Dialogflow অ্যাপের জন্য কথোপকথনের অভিজ্ঞতা তৈরি করার জন্য একটি ফ্রন্টএন্ড জ্যাঙ্গো ক্লায়েন্ট তৈরি করতে শিখবেন। বিশেষ করে, আপনাকে নিম্নলিখিতগুলি করতে হবে:
- জ্যাঙ্গো ফ্রন্টএন্ড ক্লায়েন্ট ডাউনলোড করুন, সেট আপ করুন এবং চালান।
- জ্যাঙ্গো ফ্রন্টএন্ড ক্লায়েন্ট থেকে কল করার জন্য Dialogflow detectIntent এন্ডপয়েন্ট সেট আপ করুন।
- অ্যাপ ইঞ্জিনে গুগল ক্লাউডে অ্যাপটি স্থাপন করুন।
- ব্যবহারকারীর অনুরোধ অনুসারে ক্যালেন্ডার আমন্ত্রণগুলি সেট আপ করা হচ্ছে কিনা তা পরীক্ষা করুন।
পূর্বশর্ত
এগিয়ে যাওয়ার আগে, আপনাকে নিম্নলিখিত কোডল্যাবগুলি সম্পূর্ণ করতে হবে:
- Dialogflow ব্যবহার করে একটি অ্যাপয়েন্টমেন্ট শিডিউলার তৈরি করুন
- Dialogflow-এ সত্তাগুলি বুঝুন
- ক্যালেন্ডারের সাথে ডায়ালগফ্লো ইন্টিগ্রেট করে পরিপূর্ণতা বুঝুন
তুমি কি শিখবে
- ডায়ালগফ্লো-এর জন্য জ্যাঙ্গো ফ্রন্টএন্ড ক্লায়েন্ট কীভাবে সেট আপ এবং চালানো যায়
- অ্যাপ ইঞ্জিনে গুগল ক্লাউডে জ্যাঙ্গো ফ্রন্টএন্ড ক্লায়েন্ট কীভাবে স্থাপন করবেন
- একটি কাস্টম ফ্রন্টএন্ড থেকে একটি ডায়ালগফ্লো অ্যাপ কীভাবে পরীক্ষা করবেন
তুমি কী তৈরি করবে
- তুমি Dialogflow-এর জন্য একটি Django ফ্রন্টএন্ড ক্লায়েন্ট সেট আপ এবং চালাবে।
- আপনি অ্যাপ ইঞ্জিনের গুগল ক্লাউডে জ্যাঙ্গো ফ্রন্টএন্ড ক্লায়েন্ট স্থাপন করবেন।
- তুমি সেই কাস্টম ফ্রন্টএন্ড থেকে একটি Dialogflow অ্যাপ পরীক্ষা করবে।
তোমার যা লাগবে
- পাইথনের একটি মৌলিক ধারণা
- ডায়ালগফ্লো সম্পর্কে একটি মৌলিক ধারণা
2. স্থাপত্য সারসংক্ষেপ
আপনি পূর্বে তৈরি অ্যাপয়েন্টমেন্ট শিডিউলার কথোপকথনের অভিজ্ঞতা ব্যবহার করবেন এবং অ্যাপটির জন্য একটি কাস্টম ফ্রন্টএন্ড তৈরি করবেন। আপনি জ্যাঙ্গো দিয়ে ফ্রন্টএন্ড তৈরি করবেন, স্থানীয়ভাবে এটি চালাবেন এবং পরীক্ষা করবেন এবং অ্যাপ ইঞ্জিনে স্থাপন করবেন।
ব্যবহারকারী ফ্রন্টএন্ডের মাধ্যমে একটি অ্যাপয়েন্টমেন্ট অনুরোধ পাঠাবেন, যা অনুরোধকৃত তারিখ এবং সময়ের জন্য একটি অ্যাপয়েন্টমেন্ট সেট আপ করার জন্য Dialogflow detectIntent API কল করবে। Dialogflow fulfillment তারপর সংশ্লিষ্ট অ্যাপয়েন্টমেন্ট সেট করার জন্য ক্যালেন্ডারে একটি অনুরোধ পাঠাবে এবং Dialogflow এর মাধ্যমে ব্যবহারকারীকে একটি নিশ্চিতকরণ ফেরত দেবে।

শেষ ফলাফলটি এরকম দেখাবে:

৩. ফ্রন্টএন্ড অ্যাপটি ডাউনলোড করে চালান
- আপনার কম্পিউটারের স্থানীয় টার্মিনালে এই কমান্ডটি টাইপ করে আপনার স্থানীয় মেশিনে রিপোজিটরিটি ক্লোন করুন:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
- কোডটি ধারণকারী ডিরেক্টরিতে যান। বিকল্পভাবে, আপনি নমুনাটি জিপ আকারে ডাউনলোড করে এক্সট্র্যাক্ট করতে পারেন।
cd Django-Dialogflow-Appointment-Scheduler
৪. আপনার স্থানীয় পরিবেশ সেট আপ করুন
যখন আপনার অ্যাপটি স্থাপন করা হয়, তখন আপনার অ্যাপটি আপনার ক্লাউড SQL ইনস্ট্যান্সের সাথে যোগাযোগ করার জন্য অ্যাপ ইঞ্জিন স্ট্যান্ডার্ড পরিবেশে তৈরি ক্লাউড SQL প্রক্সি ব্যবহার করে। তবে, স্থানীয়ভাবে আপনার অ্যাপটি পরীক্ষা করার জন্য, আপনাকে আপনার ডেভেলপমেন্ট পরিবেশে ক্লাউড SQL প্রক্সির একটি স্থানীয় কপি ইনস্টল এবং ব্যবহার করতে হবে। আরও তথ্যের জন্য, ক্লাউড SQL প্রক্সি সম্পর্কে দেখুন।
আপনার ক্লাউড এসকিউএল ইনস্ট্যান্সে মৌলিক অ্যাডমিন কাজগুলি সম্পাদন করতে, আপনি মাইএসকিউএল ক্লায়েন্টের জন্য ক্লাউড এসকিউএল ব্যবহার করতে পারেন।
ক্লাউড এসকিউএল প্রক্সি ইনস্টল করুন
ক্লাউড এসকিউএল প্রক্সি ডাউনলোড এবং ইনস্টল করুন। স্থানীয়ভাবে চলাকালীন ক্লাউড এসকিউএল প্রক্সি আপনার ক্লাউড এসকিউএল ইনস্ট্যান্সের সাথে সংযোগ করতে ব্যবহৃত হয়।
প্রক্সিটি ডাউনলোড করুন।
curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
প্রক্সি এক্সিকিউটেবল করুন।
chmod +x cloud_sql_proxy
একটি ক্লাউড SQL ইনস্ট্যান্স তৈরি করুন
- MySQL সেকেন্ড জেনারেশন ইনস্ট্যান্সের জন্য একটি ক্লাউড SQL তৈরি করুন। ইনস্ট্যান্সটির নাম "পোলস-ইনস্ট্যান্স" বা অনুরূপ কিছু রাখুন। ইনস্ট্যান্সটি প্রস্তুত হতে কয়েক মিনিট সময় লাগতে পারে। এটি প্রস্তুত হওয়ার পরে, এটি ইনস্ট্যান্স তালিকায় দৃশ্যমান হওয়া উচিত।
- নিম্নলিখিত কমান্ডটি চালানোর জন্য gcloud টুলটি ব্যবহার করুন যেখানে
[YOUR_INSTANCE_NAME]আপনার ইনস্ট্যান্সের নাম উপস্থাপন করে। পরবর্তী ধাপের জন্য ইনস্ট্যান্স সংযোগ নামের জন্য দেখানো মানটি নোট করুন, যা[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].
gcloud sql instances describe [YOUR_INSTANCE_NAME]
অন্যথায়, আপনি ইনস্ট্যান্স সংযোগের নাম দেখতে ইনস্ট্যান্সে ক্লিক করতে পারেন।

আপনার ক্লাউড SQL ইনস্ট্যান্সটি শুরু করুন
পূর্ববর্তী ধাপে দেওয়া ইনস্ট্যান্স সংযোগের নাম ব্যবহার করে ক্লাউড SQL প্রক্সি শুরু করুন। [YOUR_INSTANCE_CONNECTION_NAME] এর পরিবর্তে পূর্ববর্তী ধাপে রেকর্ড করা মানটি ব্যবহার করুন। এটি স্থানীয় পরীক্ষার উদ্দেশ্যে আপনার স্থানীয় কম্পিউটার থেকে আপনার ইনস্ট্যান্সের সাথে একটি সংযোগ স্থাপন করে। স্থানীয়ভাবে আপনার অ্যাপ পরীক্ষা করার সময় ক্লাউড SQL প্রক্সি চালু রাখুন।
./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306
এরপর, একটি নতুন ক্লাউড SQL ব্যবহারকারী এবং ডাটাবেস তৈরি করুন।
- আপনার ক্লাউড SQL ইনস্ট্যান্সের জন্য Google Cloud Console ব্যবহার করে polls-instance নামে একটি নতুন ডাটাবেস তৈরি করুন। উদাহরণস্বরূপ, আপনি নাম হিসেবে "polls" লিখতে পারেন।

- আপনার ক্লাউড SQL ইনস্ট্যান্সের জন্য ক্লাউড কনসোল ব্যবহার করে polls-instance নামে একটি নতুন ব্যবহারকারী অ্যাকাউন্ট তৈরি করুন।

ডাটাবেস সেটিংস কনফিগার করুন
- সম্পাদনার জন্য
mysite/settings.pyখুলুন। - দুটি জায়গায়,
[YOUR-USERNAME]এবং[YOUR-PASSWORD]এর পরিবর্তে পূর্ববর্তী বিভাগে তৈরি করা ডাটাবেস ব্যবহারকারীর নাম এবং পাসওয়ার্ড দিন। এটি অ্যাপ ইঞ্জিন স্থাপন এবং স্থানীয় পরীক্ষার জন্য ডাটাবেসের সাথে সংযোগ স্থাপন করতে সাহায্য করে। -
'HOST': 'cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]'লেখা লাইনে,[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]আগের বিভাগে রেকর্ড করা মান দিয়ে প্রতিস্থাপন করুন। - নিম্নলিখিত কমান্ডটি চালান এবং পরবর্তী ধাপের জন্য আউটপুট করা ইনস্ট্যান্স সংযোগের নামের মানটি অনুলিপি করুন।
gcloud sql instances describe [YOUR_INSTANCE_NAME]
-
[YOUR-CONNECTION-NAME]এর পরিবর্তে আগের অংশে রেকর্ড করা মানটি ব্যবহার করুন। -
[YOUR-DATABASE]এর পরিবর্তে আগের বিভাগে আপনার বেছে নেওয়া নামটি দিন।
# [START db_setup]
if os.getenv('GAE_APPLICATION', None):
# Running on production App Engine, so connect to Google Cloud SQL using
# the unix socket at /cloudsql/<your-cloudsql-connection string>
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '/cloudsql/[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]',
'USER': '[YOUR-USERNAME]',
'PASSWORD': '[YOUR-PASSWORD]',
'NAME': '[YOUR-DATABASE]',
}
}
else:
# Running locally so connect to either a local MySQL instance or connect to
# Cloud SQL via the proxy. To start the proxy via command line:
# $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306
# See https://cloud.google.com/sql/docs/mysql-connect-proxy
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1',
'PORT': '3306',
'NAME': '[YOUR-DATABASE]',
'USER': '[YOUR-USERNAME]',
'PASSWORD': '[YOUR-PASSWORD]'
}
}
# [END db_setup]
-
settings.pyবন্ধ করে সংরক্ষণ করুন।
৫. পরিষেবা অ্যাকাউন্ট সেটআপ
- Dialogflow এর কনসোলে, ক্লিক করুন
. Project ID এর পাশে General ট্যাবে, Google Cloud এ ক্লিক করুন।
. - নেভিগেশন মেনু ☰ > API এবং পরিষেবা > শংসাপত্র ক্লিক করুন।
- ক্রেডেনশিয়াল তৈরি করুন > পরিষেবা অ্যাকাউন্ট ক্লিক করুন।

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

- যেখানে লেখা আছে "এই পরিষেবা অ্যাকাউন্টকে প্রকল্পে অ্যাক্সেস দিন" , সেখানে এটি এড়িয়ে যেতে " চালু থাকুন " এ ক্লিক করুন।
- যেখানে লেখা আছে ব্যবহারকারীদের এই পরিষেবা অ্যাকাউন্টে অ্যাক্সেস দিন (ঐচ্ছিক) , সেখানে Create Key > JSON > Create এ ক্লিক করুন।
আপনার কম্পিউটারে একটি JSON ফাইল ডাউনলোড হবে, যা আপনার নিম্নলিখিত সেটআপ বিভাগগুলিতে প্রয়োজন হবে।

৬. অ্যাপ থেকে কল করার জন্য Dialogflow detectIntent এন্ডপয়েন্ট সেট আপ করুন
- চ্যাট ফোল্ডারে,
AppointmentScheduler.jsonআপনার ক্রেডেনশিয়াল JSON ফাইল দিয়ে প্রতিস্থাপন করুন। - চ্যাট ফোল্ডারের
views.pyতে,GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>"কে আপনার প্রোজেক্ট আইডিতে পরিবর্তন করুন।
৭. স্থানীয়ভাবে অ্যাপটি তৈরি করুন এবং চালান
আপনার স্থানীয় কম্পিউটারে Django অ্যাপটি চালানোর জন্য, আপনাকে Python, pip এবং virtualenv সহ একটি Python ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করতে হবে। নির্দেশাবলীর জন্য, Python ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করা দেখুন।
- একটি বিচ্ছিন্ন পাইথন পরিবেশ তৈরি করুন এবং নির্ভরতা ইনস্টল করুন:
virtualenv env source env/bin/activate pip install -r requirements.txt
- আপনার মডেল সেট আপ করতে জ্যাঙ্গো মাইগ্রেশন চালান।
python3 manage.py makemigrations python3 manage.py makemigrations polls python3 manage.py migrate
- একটি স্থানীয় ওয়েব সার্ভার শুরু করুন।
python3 manage.py runserver
- আপনার ওয়েব ব্রাউজারে, http://localhost:8000/ লিখুন। নিচের স্ক্রিনশটের মতো আপনি একটি সাধারণ ওয়েবপৃষ্ঠা দেখতে পাবেন:

নমুনা অ্যাপ পৃষ্ঠাগুলি আপনার কম্পিউটারে চলমান Django ওয়েব সার্ভার দ্বারা সরবরাহ করা হয়। যখন আপনি এগিয়ে যাওয়ার জন্য প্রস্তুত হন, তখন স্থানীয় ওয়েব সার্ভারটি বন্ধ করতে Control+S ( Macintosh-এ Command+S ) টিপুন।
৮. অ্যাপ ইঞ্জিন স্ট্যান্ডার্ড পরিবেশে অ্যাপটি স্থাপন করুন
settings.py তে STATIC_ROOT দ্বারা নির্দিষ্ট ফোল্ডারে অ্যাপের সমস্ত স্ট্যাটিক ফাইল সরাতে নিম্নলিখিত কমান্ডটি চালান:
python3 manage.py collectstatic
অ্যাপের ডিরেক্টরিতে যেখানে app.yaml ফাইলটি অবস্থিত, সেখানে নিম্নলিখিত কমান্ডটি চালিয়ে অ্যাপটি আপলোড করুন:
gcloud app deploy
আপডেট সম্পন্ন হয়েছে বলে আপনাকে জানানো বার্তাটির জন্য অপেক্ষা করুন।
৯. ফ্রন্টএন্ড ক্লায়েন্ট পরীক্ষা করুন
আপনার ওয়েব ব্রাউজারে, https://<your_project_id>.appspot.com লিখুন।
এবার, আপনার অনুরোধটি অ্যাপ ইঞ্জিন স্ট্যান্ডার্ড পরিবেশে চলমান একটি ওয়েব সার্ভার দ্বারা পরিবেশিত হবে।
app deploy কমান্ড app.yaml এ বর্ণিত অ্যাপটি স্থাপন করে এবং নতুন স্থাপন করা সংস্করণটিকে ডিফল্ট সংস্করণ হিসেবে সেট করে, যার ফলে এটি সমস্ত নতুন ট্র্যাফিক পরিবেশন করে।
১০. উৎপাদন
১১. যখন আপনি প্রোডাকশনে আপনার কন্টেন্ট পরিবেশন করার জন্য প্রস্তুত হবেন, তখন mysite/settings.py-তে DEBUG ভেরিয়েবলটিকে False-এ পরিবর্তন করুন।
১২. আপনার চ্যাটবট পরীক্ষা করুন
https://<your_project_id>.appspot.com-এ যান এবং নিম্নলিখিতটি লিখুন:
- ব্যবহারকারী: "আগামীকাল বিকাল ৩টায় গাড়ি নিবন্ধনের জন্য একটি অ্যাপয়েন্টমেন্ট নির্ধারণ করুন।"
- চ্যাটবটটি নিম্নরূপ প্রতিক্রিয়া জানায়:

- ক্যালেন্ডারে সাড়া জারী করা হয়।

১৩. পরিষ্কার করা
যদি আপনি অন্যান্য ডায়ালগফ্লো কোডল্যাব সম্পূর্ণ করার পরিকল্পনা করেন, তাহলে আপাতত এই অংশটি এড়িয়ে যান এবং পরে আবার এটিতে ফিরে আসুন।
ডায়ালগফ্লো এজেন্ট মুছে ফেলুন
- ক্লিক করুন
আপনার বিদ্যমান এজেন্টের পাশে। 
- জেনারেল ট্যাবে, নীচে স্ক্রোল করুন এবং Delete This Agent এ ক্লিক করুন।
- যে উইন্ডোটি আসবে তাতে Delete টাইপ করুন এবং Delete এ ক্লিক করুন।
১৪. অভিনন্দন
আপনি Dialogflow-এ একটি চ্যাটবট তৈরি করেছেন এবং এটি ক্যালেন্ডারের সাথে ইন্টিগ্রেট করেছেন। আপনি এখন একজন চ্যাটবট ডেভেলপার!
আরও জানুন
আরও জানতে নিম্নলিখিত সম্পদগুলি দেখুন:
- ডায়ালগফ্লো-এর সাথে ভিশন এপিআই ইন্টিগ্রেট করুন
- ডায়ালগফ্লো গিথুব পৃষ্ঠায় কোড নমুনা