1. शुरू करने से पहले
इस कोडलैब में, आपको Dialogflow ऐप्लिकेशन के लिए बातचीत वाली सुविधा बनाने के लिए, फ़्रंटएंड Django क्लाइंट बनाने का तरीका बताया जाएगा. खास तौर पर, आपको ये काम करने होंगे:
- Django फ़्रंटएंड क्लाइंट को डाउनलोड, सेट अप, और रन करें.
- Django के फ़्रंटएंड क्लाइंट से कॉल किए जाने वाले Dialogflow detectIntent एंडपॉइंट को सेट अप करें.
- ऐप्लिकेशन को App Engine पर Google Cloud पर डिप्लॉय करें.
- यह टेस्ट करें कि Calendar के न्योते, उपयोगकर्ता के अनुरोध के हिसाब से सेट अप किए जा रहे हैं या नहीं.
ज़रूरी शर्तें
आगे बढ़ने से पहले, आपको ये कोडलैब पूरे करने होंगे:
- Dialogflow की मदद से अपॉइंटमेंट का शेड्यूल बनाने वाला टूल बनाना
- Dialogflow में मौजूद इकाइयों के बारे में जानकारी
- Dialogflow को Calendar के साथ इंटिग्रेट करके, अनुरोध पूरा करने की सुविधा के बारे में जानकारी
आपको क्या सीखने को मिलेगा
- Dialogflow के लिए Django फ़्रंटएंड क्लाइंट को सेट अप और चलाने का तरीका
- App Engine पर Google Cloud में Django फ़्रंटएंड क्लाइंट को डिप्लॉय करने का तरीका
- कस्टम फ़्रंटएंड से Dialogflow ऐप्लिकेशन की जांच करने का तरीका
आपको क्या बनाना है
- आपको Dialogflow के लिए, Django फ़्रंटएंड क्लाइंट को सेट अप और चलाना होगा.
- आपको Django फ़्रंटएंड क्लाइंट को Google Cloud पर App Engine पर डिप्लॉय करना होगा.
- आपको उस कस्टम फ़्रंटएंड से Dialogflow ऐप्लिकेशन की जांच करनी होगी.
आपको किन चीज़ों की ज़रूरत होगी
- Python की बुनियादी जानकारी
- Dialogflow के बारे में बुनियादी जानकारी
2. आर्किटेक्चर की खास जानकारी
आपको अपॉइंटमेंट शेड्यूलर के साथ बातचीत करने की सुविधा का इस्तेमाल करना होगा. इसे आपने पहले बनाया था. साथ ही, आपको ऐप्लिकेशन के लिए कस्टम फ़्रंटएंड बनाना होगा. आपको Django की मदद से फ़्रंटएंड बनाना होगा. साथ ही, इसे स्थानीय तौर पर चलाना और टेस्ट करना होगा. इसके बाद, इसे App Engine पर डिप्लॉय करना होगा.
उपयोगकर्ता, फ़्रंटएंड के ज़रिए अपॉइंटमेंट का अनुरोध भेजेगा. इससे Dialogflow detectIntent API कॉल होगा. यह एपीआई, अनुरोध की गई तारीख और समय के लिए अपॉइंटमेंट सेट अप करेगा. इसके बाद, Dialogflow फ़ुलफ़िलमेंट, Calendar को अपॉइंटमेंट सेट करने का अनुरोध भेजेगा. साथ ही, Dialogflow के ज़रिए उपयोगकर्ता को इसकी पुष्टि करेगा.

आखिरी नतीजा कुछ ऐसा दिखेगा:

3. फ़्रंटएंड ऐप्लिकेशन डाउनलोड और चलाना
- अपने कंप्यूटर के लोकल टर्मिनल में यह कमांड टाइप करके, रिपॉज़िटरी को अपनी लोकल मशीन पर क्लोन करें:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
- उस डायरेक्ट्री पर जाएं जिसमें कोड मौजूद है. इसके अलावा, सैंपल को zip फ़ाइल के तौर पर डाउनलोड करके भी एक्सट्रैक्ट किया जा सकता है.
cd Django-Dialogflow-Appointment-Scheduler
4. अपना लोकल एनवायरमेंट सेट अप करना
डप्लॉय किए जाने पर, आपका ऐप्लिकेशन Cloud SQL इंस्टेंस से कम्यूनिकेट करने के लिए, App Engine के स्टैंडर्ड एनवायरमेंट में पहले से मौजूद Cloud SQL प्रॉक्सी का इस्तेमाल करता है. हालांकि, अपने ऐप्लिकेशन को स्थानीय तौर पर टेस्ट करने के लिए, आपको अपने डेवलपमेंट एनवायरमेंट में Cloud SQL Proxy की लोकल कॉपी इंस्टॉल करनी होगी और उसका इस्तेमाल करना होगा. ज़्यादा जानकारी के लिए, Cloud SQL Proxy के बारे में जानकारी लेख पढ़ें.
Cloud SQL इंस्टेंस पर बुनियादी एडमिन टास्क पूरे करने के लिए, Cloud SQL for MySQL क्लाइंट का इस्तेमाल किया जा सकता है.
Cloud SQL Proxy इंस्टॉल करना
Cloud SQL Proxy को डाउनलोड और इंस्टॉल करें. Cloud SQL प्रॉक्सी का इस्तेमाल, स्थानीय तौर पर चलाने के दौरान Cloud SQL इंस्टेंस से कनेक्ट करने के लिए किया जाता है.
प्रॉक्सी डाउनलोड करें.
curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
प्रॉक्सी को एक्ज़ीक्यूटेबल बनाएं.
chmod +x cloud_sql_proxy
Cloud SQL इंस्टेंस बनाना
- Cloud SQL for MySQL का सेकंड जनरेशन इंस्टेंस बनाएं. उदाहरण का नाम "polls-instance" या इससे मिलता-जुलता कुछ और रखें. इंस्टेंस को तैयार होने में कुछ मिनट लग सकते हैं. तैयार होने के बाद, यह इंस्टेंस की सूची में दिखेगा.
- gcloud टूल का इस्तेमाल करके, यहां दिया गया निर्देश चलाएं. इसमें
[YOUR_INSTANCE_NAME]आपके इंस्टेंस का नाम दिखाता है. अगले चरण के लिए, इंस्टेंस कनेक्शन के नाम के लिए दिखाई गई वैल्यू को नोट करें. यह वैल्यू[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].फ़ॉर्मैट में दिखती है
gcloud sql instances describe [YOUR_INSTANCE_NAME]
इसके अलावा, इंस्टेंस कनेक्शन का नाम देखने के लिए, इंस्टेंस पर क्लिक करें.

Cloud SQL इंस्टेंस को शुरू करना
पिछले चरण में दिए गए इंस्टेंस कनेक्शन के नाम का इस्तेमाल करके, Cloud SQL प्रॉक्सी शुरू करें. [YOUR_INSTANCE_CONNECTION_NAME] को उस वैल्यू से बदलें जिसे आपने पिछले चरण में रिकॉर्ड किया था. इससे, लोकल टेस्टिंग के लिए आपके लोकल कंप्यूटर और इंस्टेंस के बीच कनेक्शन बन जाता है. अपने ऐप्लिकेशन को स्थानीय तौर पर टेस्ट करते समय, Cloud SQL Proxy को चालू रखें.
./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306
इसके बाद, नया Cloud SQL उपयोगकर्ता और डेटाबेस बनाएं.
- polls-instance नाम के Cloud SQL इंस्टेंस के लिए, Google Cloud Console का इस्तेमाल करके एक नया डेटाबेस बनाएं. उदाहरण के लिए, नाम के तौर पर "पोल" डाला जा सकता है.

- Cloud Console का इस्तेमाल करके, polls-instance नाम के Cloud SQL इंस्टेंस के लिए नया उपयोगकर्ता खाता बनाएं.

डेटाबेस की सेटिंग कॉन्फ़िगर करना
- बदलाव करने के लिए,
mysite/settings.pyखोलें. - दो जगहों पर,
[YOUR-USERNAME]और[YOUR-PASSWORD]को डेटाबेस के उस उपयोगकर्ता नाम और पासवर्ड से बदलें जिसे आपने पिछले सेक्शन में बनाया था. इससे App Engine डिप्लॉयमेंट और लोकल टेस्टिंग के लिए, डेटाबेस से कनेक्शन सेट अप करने में मदद मिलती है. ‘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.
5. सेवा खाते का सेटअप
- Dialogflow के कंसोल में,
पर क्लिक करें. प्रोजेक्ट आईडी के बगल में मौजूद सामान्य टैब में, Google Cloud
पर क्लिक करें. - नेविगेशन मेन्यू ☰ > एपीआई और सेवाएं > क्रेडेंशियल पर क्लिक करें.
- क्रेडेंशियल बनाएं > सेवा खाता पर क्लिक करें.

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

- जहां इस सेवा खाते को प्रोजेक्ट का ऐक्सेस दें लिखा है वहां जारी रखें पर क्लिक करके इसे छोड़ें.
- जहां उपयोगकर्ताओं को इस सेवा खाते का ऐक्सेस दें (ज़रूरी नहीं) लिखा है वहां कुंजी बनाएं > JSON > बनाएं पर क्लिक करें.
आपके कंप्यूटर पर एक JSON फ़ाइल डाउनलोड होगी. आपको सेटअप के इन सेक्शन में इसकी ज़रूरत पड़ेगी.

6. ऐप्लिकेशन से कॉल किए जाने वाले Dialogflow detectIntent एंडपॉइंट को सेट अप करें
- चैट फ़ोल्डर में,
AppointmentScheduler.jsonको क्रेडेंशियल वाली JSON फ़ाइल से बदलें. - चैट फ़ोल्डर में मौजूद
views.pyमें,GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>"की जगह अपना प्रोजेक्ट आईडी डालें.
7. ऐप्लिकेशन को स्थानीय तौर पर बनाना और चलाना
अपने लोकल कंप्यूटर पर Django ऐप्लिकेशन चलाने के लिए, आपको Python डेवलपमेंट एनवायरमेंट सेट अप करना होगा. इसमें Python, pip, और virtualenv शामिल हैं. निर्देशों के लिए, Python डेवलपमेंट एनवायरमेंट सेट अप करना लेख पढ़ें.
- एक अलग Python एनवायरमेंट बनाएं और डिपेंडेंसी इंस्टॉल करें:
virtualenv env source env/bin/activate pip install -r requirements.txt
- अपने मॉडल सेट अप करने के लिए, Django माइग्रेशन चलाएं.
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) दबाएं.
8. ऐप्लिकेशन को App Engine स्टैंडर्ड एनवायरमेंट में डिप्लॉय करना
ऐप्लिकेशन की सभी स्टैटिक फ़ाइलों को settings.py में STATIC_ROOT के ज़रिए तय किए गए फ़ोल्डर में ले जाने के लिए, यह कमांड चलाएं:
python3 manage.py collectstatic
ऐप्लिकेशन को अपलोड करने के लिए, ऐप्लिकेशन की उस डायरेक्ट्री में यह कमांड चलाएं जहां app.yaml फ़ाइल मौजूद है:
gcloud app deploy
अपडेट पूरा होने की सूचना देने वाले मैसेज का इंतज़ार करें.
9. फ़्रंटएंड क्लाइंट की जांच करना
अपने वेब ब्राउज़र में, https://<your_project_id>.appspot.com डालें.
इस बार, आपके अनुरोध को App Engine स्टैंडर्ड एनवायरमेंट में चल रहा वेब सर्वर पूरा करता है.
app deploy कमांड, ऐप्लिकेशन को app.yaml में बताए गए तरीके से डिप्लॉय करती है. साथ ही, डिप्लॉय किए गए नए वर्शन को डिफ़ॉल्ट वर्शन के तौर पर सेट करती है. इससे, सभी नए ट्रैफ़िक को यह वर्शन दिखाया जाता है.
10. प्रोडक्शन
11. जब आपको प्रोडक्शन में अपना कॉन्टेंट दिखाना हो, तब mysite/settings.py में DEBUG वैरिएबल को False पर सेट करें.
12. अपने चैटबॉट की जांच करना
https://<your_project_id>.appspot.com पर जाएं और यह जानकारी डालें:
- उपयोगकर्ता: "कल दोपहर 3 बजे, वाहन के रजिस्ट्रेशन के लिए अपॉइंटमेंट सेट करो."
- चैटबॉट इस तरह जवाब देता है:

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

13. व्यवस्थित करें
अगर आपको Dialogflow के अन्य कोडलैब पूरे करने हैं, तो अभी इस हिस्से को छोड़ दें और बाद में इस पर वापस आएं.
Dialogflow एजेंट को मिटाना
- अपने मौजूदा एजेंट के बगल में मौजूद,
पर क्लिक करें. 
- सामान्य टैब में, सबसे नीचे तक स्क्रोल करें और इस एजेंट को मिटाएं पर क्लिक करें.
- इसके बाद, दिखने वाली विंडो में मिटाएं टाइप करें और मिटाएं पर क्लिक करें.
14. बधाई हो
आपने Dialogflow में एक चैटबॉट बनाया हो और उसे Calendar के साथ इंटिग्रेट किया हो. अब आप चैटबॉट डेवलपर बन गए हैं!
ज़्यादा जानें
ज़्यादा जानने के लिए, यहां दिए गए लेख पढ़ें:
- Vision API को Dialogflow के साथ इंटिग्रेट करना
- Dialogflow Github पेज पर कोड के सैंपल