Dialogflow ऐप्लिकेशन के लिए, फ़्रंटएंड Django क्लाइंट बनाएं

इस कोडलैब में, आपको Dialogflow ऐप्लिकेशन के लिए बातचीत वाली सुविधा बनाने के लिए, फ़्रंटएंड Django क्लाइंट बनाने का तरीका बताया जाएगा. खास तौर पर, आपको ये काम करने होंगे:

  • Django फ़्रंटएंड क्लाइंट को डाउनलोड, सेट अप, और रन करें.
  • Django फ़्रंटएंड क्लाइंट से कॉल किए जाने वाले Dialogflow detectIntent एंडपॉइंट को सेट अप करें.
  • ऐप्लिकेशन को App Engine पर Google Cloud पर डिप्लॉय करें.
  • यह टेस्ट करें कि Calendar के न्योते, उपयोगकर्ता के अनुरोध के हिसाब से सेट अप किए जा रहे हैं या नहीं.

ज़रूरी शर्तें

आगे बढ़ने से पहले, आपको ये कोडलैब पूरे करने होंगे:

  1. Dialogflow की मदद से अपॉइंटमेंट का शेड्यूल बनाने वाला टूल बनाना
  2. Dialogflow में मौजूद इकाइयों के बारे में जानकारी
  3. Dialogflow को Calendar के साथ इंटिग्रेट करके, अनुरोध पूरा करने की सुविधा के बारे में जानकारी

आपको क्या सीखने को मिलेगा

  • Dialogflow के लिए Django फ़्रंटएंड क्लाइंट को सेट अप और चलाने का तरीका
  • App Engine पर Google Cloud में Django फ़्रंटएंड क्लाइंट को डिप्लॉय करने का तरीका
  • कस्टम फ़्रंटएंड से Dialogflow ऐप्लिकेशन की जांच करने का तरीका

आपको क्या बनाना है

  • आपको Dialogflow के लिए, Django फ़्रंटएंड क्लाइंट को सेट अप और चलाना होगा.
  • आपको Django फ़्रंटएंड क्लाइंट को App Engine पर Google Cloud में डिप्लॉय करना होगा.
  • आपको उस कस्टम फ़्रंटएंड से Dialogflow ऐप्लिकेशन की जांच करनी होगी.

आपको किन चीज़ों की ज़रूरत होगी

  • Python की बुनियादी जानकारी
  • Dialogflow के बारे में बुनियादी जानकारी

आपको अपॉइंटमेंट शेड्यूलर के लिए, बातचीत की सुविधा का इस्तेमाल करना होगा. यह सुविधा आपने पहले बनाई थी. साथ ही, आपको ऐप्लिकेशन के लिए कस्टम फ़्रंटएंड बनाना होगा. आपको Django की मदद से फ़्रंटएंड बनाना होगा. इसके बाद, इसे स्थानीय तौर पर चलाना और टेस्ट करना होगा. आखिर में, इसे App Engine पर डिप्लॉय करना होगा.

उपयोगकर्ता, फ़्रंटएंड के ज़रिए अपॉइंटमेंट का अनुरोध भेजेगा. इससे Dialogflow detectIntent API कॉल होगा. यह एपीआई, अनुरोध की गई तारीख और समय के लिए अपॉइंटमेंट सेट अप करेगा. इसके बाद, Dialogflow फ़ुलफ़िलमेंट, Calendar को अपॉइंटमेंट सेट करने का अनुरोध भेजेगा. साथ ही, Dialogflow के ज़रिए उपयोगकर्ता को पुष्टि का मैसेज भेजेगा.

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

  1. अपने कंप्यूटर के लोकल टर्मिनल में यह कमांड टाइप करके, रिपॉज़िटरी को अपने कंप्यूटर पर क्लोन करें:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
  1. उस डायरेक्ट्री पर जाएं जिसमें कोड मौजूद है. इसके अलावा, सैंपल को zip फ़ाइल के तौर पर डाउनलोड करके भी एक्सट्रैक्ट किया जा सकता है.
cd Django-Dialogflow-Appointment-Scheduler

डप्लॉय किए जाने पर, आपका ऐप्लिकेशन 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 इंस्टेंस बनाना

  1. Cloud SQL for MySQL का सेकंड जनरेशन इंस्टेंस बनाएं. उदाहरण का नाम "polls-instance" या इससे मिलता-जुलता कोई नाम दें. इंस्टेंस को तैयार होने में कुछ मिनट लग सकते हैं. तैयार होने के बाद, यह इंस्टेंस की सूची में दिखेगा.
  2. 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 उपयोगकर्ता और डेटाबेस बनाएं.

  1. polls-instance नाम के Cloud SQL इंस्टेंस के लिए, Google Cloud Console का इस्तेमाल करके एक नया डेटाबेस बनाएं. उदाहरण के लिए, नाम के तौर पर "पोल" डाला जा सकता है.
  2. polls-instance नाम के Cloud SQL इंस्टेंस के लिए, Cloud Console का इस्तेमाल करके नया उपयोगकर्ता खाता बनाएं.

डेटाबेस की सेटिंग कॉन्फ़िगर करना

  1. बदलाव करने के लिए, mysite/settings.py खोलें.
  2. दो जगहों पर, [YOUR-USERNAME] और [YOUR-PASSWORD] को डेटाबेस के उस उपयोगकर्ता नाम और पासवर्ड से बदलें जिसे आपने पिछले सेक्शन में बनाया था. इससे App Engine डिप्लॉयमेंट और लोकल टेस्टिंग के लिए, डेटाबेस से कनेक्शन सेट अप करने में मदद मिलती है.
  3. ‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]' वाली लाइन में, [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME] की जगह वह वैल्यू डालें जिसे आपने पिछले सेक्शन में रिकॉर्ड किया था.
  4. यह कमांड चलाएं और अगले चरण के लिए, आउटपुट किए गए इंस्टेंस कनेक्शन के नाम की वैल्यू कॉपी करें.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
  1. [YOUR-CONNECTION-NAME] को उस वैल्यू से बदलें जिसे आपने पिछले सेक्शन में रिकॉर्ड किया था.
  2. [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]
  1. बंद करें और सेव करें settings.py.
  1. Dialogflow के कंसोल में, पर क्लिक करें. प्रोजेक्ट आईडी के बगल में मौजूद सामान्य टैब में, Google Cloud पर क्लिक करें.
  2. नेविगेशन मेन्यू ☰ > एपीआई और सेवाएं > क्रेडेंशियल पर क्लिक करें.
  3. क्रेडेंशियल बनाएं > सेवा खाता पर क्लिक करें.
  4. सेवा खाते की जानकारी में, सेवा खाते का नाम के तौर पर "appointment-scheduler" डालें. इसके बाद, बनाएं पर क्लिक करें.

  1. इस सेवा खाते को प्रोजेक्ट का ऐक्सेस दें पर जाकर, जारी रखें पर क्लिक करें.
  2. जहां उपयोगकर्ताओं को इस सेवा खाते का ऐक्सेस दें (ज़रूरी नहीं) लिखा है वहां कुंजी बनाएं > JSON > बनाएं पर क्लिक करें.

आपके कंप्यूटर पर एक JSON फ़ाइल डाउनलोड होगी. आपको सेटअप के इन सेक्शन में इसकी ज़रूरत पड़ेगी.

  1. चैट फ़ोल्डर में, AppointmentScheduler.json को क्रेडेंशियल वाली JSON फ़ाइल से बदलें.
  2. चैट फ़ोल्डर में मौजूद views.py में, GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>" की जगह अपना प्रोजेक्ट आईडी डालें.

अपने लोकल कंप्यूटर पर Django ऐप्लिकेशन चलाने के लिए, आपको Python डेवलपमेंट एनवायरमेंट सेट अप करना होगा. इसमें Python, pip, और virtualenv शामिल हैं. निर्देशों के लिए, Python डेवलपमेंट एनवायरमेंट सेट अप करना लेख पढ़ें.

  1. एक अलग Python एनवायरमेंट बनाएं और डिपेंडेंसी इंस्टॉल करें:
virtualenv env
source env/bin/activate
pip install -r requirements.txt
  1. अपने मॉडल सेट अप करने के लिए, Django माइग्रेशन चलाएं.
python3 manage.py makemigrations
python3 manage.py makemigrations polls
python3 manage.py migrate
  1. लोकल वेब सर्वर शुरू करें.
python3 manage.py runserver
  1. अपने वेब ब्राउज़र में, 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 Engine स्टैंडर्ड एनवायरमेंट में चल रहे वेब सर्वर से पूरा किया जाता है.

app deploy कमांड, ऐप्लिकेशन को app.yaml में बताए गए तरीके से डिप्लॉय करती है. साथ ही, डिप्लॉय किए गए नए वर्शन को डिफ़ॉल्ट वर्शन के तौर पर सेट करती है. इससे, सभी नए ट्रैफ़िक को यह वर्शन दिखाया जाता है.

https://<your_project_id>.appspot.com पर जाएं और यह जानकारी डालें:

  1. उपयोगकर्ता: "कल दोपहर 3 बजे के लिए, वाहन के रजिस्ट्रेशन का अपॉइंटमेंट सेट करो."
  2. चैटबॉट इस तरह जवाब देता है:

  1. Calendar, जवाब को बुक करता है.

अगर आपको Dialogflow के अन्य कोडलैब पूरे करने हैं, तो अभी इस हिस्से को छोड़ दें और बाद में इस पर वापस आएं.

Dialogflow एजेंट को मिटाना

  1. अपने मौजूदा एजेंट के बगल में मौजूद, पर क्लिक करें.
  1. सामान्य टैब में, सबसे नीचे तक स्क्रोल करें और इस एजेंट को मिटाएं पर क्लिक करें.
  2. दिखने वाली विंडो में, मिटाएं टाइप करें और मिटाएं पर क्लिक करें.

आपने Dialogflow में एक चैटबॉट बनाया हो और उसे Calendar के साथ इंटिग्रेट किया हो. अब आप चैटबॉट डेवलपर बन गए हैं!

ज़्यादा जानें

ज़्यादा जानने के लिए, यहां दिए गए लेख पढ़ें: