1. शुरू करने से पहले
इस कोडलैब में, आपको Dialogflow ऐप्लिकेशन में बातचीत का अनुभव देने के लिए, फ़्रंटएंड Django क्लाइंट बनाने का तरीका पता चलेगा. खास तौर पर, आपको ये काम करने होंगे:
- Django फ़्रंटएंड क्लाइंट डाउनलोड करें, सेट करें और चलाएं.
- Django फ़्रंटएंड क्लाइंट से कॉल करने के लिए, DialogflowdetectIntent एंडपॉइंट को सेट अप करें.
- App Engine पर Google Cloud में ऐप्लिकेशन को डिप्लॉय करें.
- यह जांच करें कि हर उपयोगकर्ता के अनुरोध के हिसाब से, Calendar पर न्योते सेट अप किए जा रहे हैं या नहीं.
ज़रूरी शर्तें
आगे बढ़ने से पहले, आपको नीचे दिए गए कोडलैब पूरे करने होंगे:
- Dialogflow की मदद से अपॉइंटमेंट शेड्यूल करने वाला टूल बनाना
- Dialogflow में मौजूद इकाइयों को समझना
- Calendar के साथ Dialogflow को इंटिग्रेट करके, ऑर्डर पूरा करने की जानकारी पाएं
आप इन चीज़ों के बारे में जानेंगे
- Dialogflow के लिए Django फ़्रंटएंड क्लाइंट को सेट अप करने और चलाने का तरीका
- Django फ़्रंटएंड क्लाइंट को App Engine पर Google Cloud में डिप्लॉय करने का तरीका
- कस्टम फ़्रंटएंड से, Dialogflow ऐप्लिकेशन को टेस्ट करने का तरीका
आपको क्या बनाना होगा
- आप Dialogflow के लिए Django फ़्रंटएंड क्लाइंट सेट अप करेंगे और चलाएं.
- आपको Django फ़्रंटएंड क्लाइंट को App Engine पर Google Cloud में डिप्लॉय करना होगा.
- आपको उस कस्टम फ़्रंटएंड से, Dialogflow ऐप्लिकेशन की जांच करनी होगी.
आपको इनकी ज़रूरत होगी
- Python के बारे में बुनियादी जानकारी
- Dialogflow के बारे में बुनियादी जानकारी
2. आर्किटेक्चर से जुड़ी खास जानकारी
आपको अपॉइंटमेंट शेड्यूल करने वाले उस टूल का इस्तेमाल करना होगा जो आपने पहले बनाया था. साथ ही, ऐप्लिकेशन के लिए कस्टम फ़्रंटएंड बनाएं. आपको Django के साथ फ़्रंटएंड बनाना होगा, इसे स्थानीय तौर पर चलाना और टेस्ट करना होगा, और App Engine पर डिप्लॉय करना होगा.
उपयोगकर्ता, फ़्रंटएंड से अपॉइंटमेंट का अनुरोध भेजेगा. इसके बाद, Dialogflow 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 प्रॉक्सी की लोकल कॉपी इंस्टॉल और इस्तेमाल करनी होगी. ज़्यादा जानकारी के लिए, Cloud SQL प्रॉक्सी के बारे में जानकारी देखें.
Cloud SQL के इंस्टेंस पर एडमिन के बुनियादी टास्क करने के लिए, Cloud SQL for MySQL क्लाइंट का इस्तेमाल किया जा सकता है.
Cloud SQL प्रॉक्सी इंस्टॉल करें
Cloud SQL प्रॉक्सी डाउनलोड और इंस्टॉल करें. 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 सेकंड जनरेशन का इंस्टेंस बनाएं. इंस्टेंस को "पोल-इंस्टेंस" नाम दें या इससे मिलते-जुलते सुझाव. इंस्टेंस को तैयार होने में कुछ मिनट लग सकते हैं. टैग तैयार होने के बाद, यह इंस्टेंस की सूची में दिखना चाहिए.
- यहां दिया गया कमांड चलाने के लिए, 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 प्रॉक्सी को चालू रखें.
./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306
इसके बाद, Cloud SQL का नया उपयोगकर्ता और डेटाबेस बनाएं.
- अपने Cloud SQL इंस्टेंस के लिए, Google Cloud Console का इस्तेमाल करके पोल-इंस्टेंस नाम का एक नया डेटाबेस बनाएं. उदाहरण के लिए, आप "पोल" डाल सकते हैं दिया हुआ है. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
- अपने Cloud SQL इंस्टेंस के लिए, Cloud Console का इस्तेमाल करके नया उपयोगकर्ता खाता बनाएं. इसका नाम पोल-इंस्टेंस होता है.
डेटाबेस की सेटिंग कॉन्फ़िगर करना
- बदलाव करने के लिए
mysite/settings.py
खोलें. - दो जगहों पर,
[YOUR-USERNAME]
और[YOUR-PASSWORD]
को पिछले सेक्शन में बनाए गए डेटाबेस के उपयोगकर्ता नाम और पासवर्ड से बदलें. इससे App Engine डिप्लॉयमेंट और लोकल टेस्टिंग के लिए, डेटाबेस से कनेक्शन सेट अप करने में मदद मिलती है. ‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTAN
CE_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 पर क्लिक करें.
- नेविगेशन मेन्यू रजिस्ट्रेंट पर क्लिक करें > एपीआई और सेवाएं > क्रेडेंशियल.
- क्रेडेंशियल बनाएं पर क्लिक करें > सेवा खाता.
- सेवा खाते की जानकारी में, "अपॉइंटमेंट-शेड्यूलर" डालें सेवा खाते का नाम चुनें. इसके बाद, बनाएं पर क्लिक करें.
- जहां प्रोजेक्ट के लिए इस सेवा खाते का ऐक्सेस दें लिखा हो, वहां इसे छोड़ने के लिए जारी रखें पर क्लिक करें.
- जहां उपयोगकर्ताओं को इस सेवा खाते का ऐक्सेस दें (ज़रूरी नहीं) लिखा हो, वहां कुंजी बनाएं पर क्लिक करें > JSON > बनाएं.
आपके कंप्यूटर पर एक JSON फ़ाइल डाउनलोड होगी, जिसकी आपको नीचे दिए गए सेटअप सेक्शन में ज़रूरत होगी.
6. ऐप्लिकेशन से कॉल करने के लिए, DialogflowdetectIntent एंडपॉइंट को सेट अप करें
- चैट फ़ोल्डर में,
AppointmentScheduler.json
को अपने क्रेडेंशियल वाली JSON फ़ाइल से बदलें. - चैट फ़ोल्डर में
views.py
में,GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>"
को अपने प्रोजेक्ट आईडी में बदलें.
7. ऐप्लिकेशन को स्थानीय तौर पर बनाएं और चलाएं
अपने लोकल कंप्यूटर पर Django ऐप्लिकेशन चलाने के लिए, आपको Python, पीआईपी, और Virtualenv के साथ-साथ Python डेवलपमेंट एनवायरमेंट सेट अप करना होगा. निर्देशों के लिए, Python Development Environment को सेट अप करना लेख पढ़ें.
- आइसोलेटेड 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 वैरिएबल को 'गलत' में बदलें.
12. अपने चैटबॉट की जांच करें
https://<your_project_id>.appspot.com पर जाएं और यह जानकारी डालें:
- उपयोगकर्ता: "वाहन के रजिस्ट्रेशन के लिए कल दोपहर 3 बजे का अपॉइंटमेंट सेट करो."
- चैटबॉट इस तरह जवाब देता है:
- Calendar जवाब को बुक कर देता है.
13. व्यवस्थित करें
अगर आपको अन्य Dialogflow कोड लैब पूरा करना है, तो इस हिस्से को अभी के लिए छोड़ें और बाद में इस पर वापस आएं.
Dialogflow एजेंट को मिटाएं
- अपने मौजूदा एजेंट के बगल में मौजूद, पर क्लिक करें.
- सामान्य टैब में, स्क्रोल करके नीचे जाएं और इस एजेंट को मिटाएं पर क्लिक करें.
- दिखाई देने वाली विंडो में Delete लिखें और Delete पर क्लिक करें.
14. बधाई हो
आपने Dialogflow में एक चैटबॉट बनाया है और उसे Calendar के साथ इंटिग्रेट कर दिया है. अब आप चैटबॉट डेवलपर हैं!
ज़्यादा जानें
ज़्यादा जानने के लिए यहां दिए गए लेख पढ़ें:
- Dialogflow के साथ Vision API को इंटिग्रेट करना
- Dialogflow GitHub पेज पर कोड के सैंपल