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

চূড়ান্ত ফলাফলটি দেখতে এইরকম হবে:

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

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

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

ডাটাবেস সেটিংস কনফিগার করুন
- সম্পাদনার জন্য
mysite/settings.pyখুলুন। - দুটি জায়গায়,
[YOUR-USERNAME]এবং[YOUR-PASSWORD]এর পরিবর্তে পূর্ববর্তী বিভাগে তৈরি করা ডাটাবেস ইউজারনেম এবং পাসওয়ার্ড লিখুন। এটি অ্যাপ ইঞ্জিন ডেপ্লয়মেন্ট এবং লোকাল টেস্টিংয়ের জন্য ডাটাবেসের সাথে সংযোগ স্থাপন করতে সাহায্য করে। -
'HOST': 'cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTAN],'লেখা লাইনে,[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-এর কনসোলে, ক্লিক করুন
জেনারেল ট্যাবে প্রজেক্ট আইডি-র পাশে গুগল ক্লাউড-এ ক্লিক করুন।
. - নেভিগেশন মেনু ☰ > এপিআই ও পরিষেবা > ক্রেডেনশিয়ালস-এ ক্লিক করুন।
- ক্রেডেনশিয়াল তৈরি করুন > পরিষেবা অ্যাকাউন্ট-এ ক্লিক করুন।

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

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

৬. অ্যাপ থেকে কল করার জন্য Dialogflow detectIntent এন্ডপয়েন্টটি সেট আপ করুন।
- চ্যাট ফোল্ডারে,
AppointmentScheduler.jsonফাইলটির পরিবর্তে আপনার ক্রেডেনশিয়ালস JSON ফাইলটি দিন। - chat ফোল্ডারের
views.pyফাইলে,GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>"লাইনটি পরিবর্তন করে আপনার প্রজেক্ট আইডি দিন।
৭. অ্যাপটি স্থানীয়ভাবে বিল্ড ও রান করুন।
আপনার স্থানীয় কম্পিউটারে জ্যাঙ্গো অ্যাপটি চালানোর জন্য, আপনাকে পাইথন, পিপ এবং ভার্চুয়ালএনভ সহ একটি পাইথন ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করতে হবে। নির্দেশাবলীর জন্য, "একটি পাইথন ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করা" দেখুন।
- একটি বিচ্ছিন্ন পাইথন পরিবেশ তৈরি করুন এবং নির্ভরতাগুলি ইনস্টল করুন:
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/ লিখুন। আপনি নিচের স্ক্রিনশটে দেখানো একটি সাধারণ ওয়েবপেজ দেখতে পাবেন:

নমুনা অ্যাপ পেজগুলো আপনার কম্পিউটারে চলমান জ্যাঙ্গো ওয়েব সার্ভারের মাধ্যমে সরবরাহ করা হয়। যখন আপনি সামনে এগোতে প্রস্তুত হবেন, তখন স্থানীয় ওয়েব সার্ভারটি বন্ধ করতে Control+S (ম্যাকিনটোশে 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-এ যান এবং নিম্নলিখিত তথ্য প্রবেশ করান:
- ব্যবহারকারী: "আগামীকাল বিকাল ৩টায় গাড়ি নিবন্ধনের জন্য একটি অ্যাপয়েন্টমেন্ট ঠিক করুন।"
- চ্যাটবটটি নিম্নরূপ উত্তর দেয়:

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

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