हैंड्स-ऑन: वुमन इन वॉइस वर्कशॉप

1. परिचय

इस लैब में, आप Dialogflow का इस्तेमाल करके एक आसान कार्रवाई बनाएंगे और सीखेंगे कि उसे Google Assistant के साथ कैसे इंटिग्रेट किया जाता है.

इन अभ्यासों को इस तरह से व्यवस्थित किया जाता है कि वे क्लाउड डेवलपर के एक जैसे अनुभव को दिखा सकें:

  1. Dialogflow v2 एजेंट बनाएं
  2. इकाइयां बनाएं
  3. इंटेंट बनाएं
  4. GCP क्लाउड फ़ंक्शन की मदद से वेबहुक सेट अप करें
  5. अक्सर पूछे जाने वाले सवालों को इंपोर्ट करने के लिए, नॉलेज बेस का इस्तेमाल करना
  6. चैटबॉट की जांच करें
  7. Google Assistant इंटिग्रेशन चालू करना

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

हम Women in Voice Meetup ग्रुप के लिए एक Google Assistant ऐप्लिकेशन बनाएंगे. पूछा जा सकेगा कि अगली बैठक कब है, लेख और बैठक समूह के बारे में सलाह या सामान्य सवाल बुक कर सकते हैं.

आपको इनके बारे में जानकारी मिलेगी

  • Dialogflow v2 की मदद से चैटबॉट बनाने का तरीका
  • Dialogflow के साथ लीनियर बातचीत बनाने का तरीका
  • इकाइयों को इस्तेमाल करने का तरीका
  • नॉलेज बेस का इस्तेमाल कैसे करें
  • Dialogflow और GCP फ़ंक्शन की मदद से, वेबहुक फ़ुलफ़िलमेंट को सेटअप करने का तरीका
  • Actions on Google की मदद से, अपने ऐप्लिकेशन को Google Assistant पर लाने का तरीका

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

  • Dialogflow एजेंट बनाने के लिए, आपको Google Identity / Gmail पते की ज़रूरत होगी.
  • हम आपको GCP Cloud Functions के इस्तेमाल के लिए, GCP क्लाउड क्रेडिट देंगे
  • एजेंट का डेटा पाने के लिए, आपको इस सार्वजनिक Google शीट को ऐक्सेस करना होगा.
  • इसे नए टैब में खोलें: https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit?usp=sharing
  • यह ज़रूरी नहीं है कि आपको JavaScript की बुनियादी जानकारी हो. हालांकि, अगर आपको वेबहुक फ़ुलफ़िलमेंट कोड बदलना हो, तो यह आपके काम आ सकता है.

2. सेट अप किया जा रहा है

अपने ब्राउज़र में वेब गतिविधि चालू करना

  1. क्लिक करें: http://myaccount.google.com/activitycontrols

  1. पक्का करें कि वेब और ऐप्लिकेशन गतिविधि की सेटिंग चालू हो:

bf8d16b828d6f79a.png

Dialogflow एजेंट बनाना

  1. खोलें: https://console.dialogflow.com

  1. बाईं ओर मौजूद बार में, लोगो के नीचे मौजूद, "नया एजेंट बनाएं" को चुनें. अगर आपके पास मौजूदा एजेंट हैं, तो सबसे पहले ड्रॉपडाउन पर क्लिक करें.

1d7c2b56a1ab95b8.png

  1. एजेंट का नाम बताएं: yourname-wiv (अपने नाम का इस्तेमाल करें)
  2. डिफ़ॉल्ट भाषा के तौर पर, यह चुनें: अंग्रेज़ी - en.
  3. डिफ़ॉल्ट टाइम ज़ोन के तौर पर, वह टाइम ज़ोन चुनें जो आपके सबसे नज़दीकी टाइम ज़ोन के मुताबिक हो.
  4. मेगा एजेंट को चुनें. (इस सुविधा की मदद से, मुख्य एजेंट बनाया जा सकता है, जो "सब" एजेंट के बीच काम कर सकता है. अभी हमें इसकी ज़रूरत नहीं है.)
  5. बनाएं पर क्लिक करें

382af956cbf308a4.png

डायलॉग को कॉन्फ़िगर करना

  1. प्रोजेक्ट के नाम के बगल में मौजूद, बाएं मेन्यू में मौजूद गियर आइकॉन पर क्लिक करें.

1d7c2b56a1ab95b8.png

  1. एजेंट की यह जानकारी डालें: Voice in Voice एजेंट
  2. नीचे बीटा सुविधाएं तक स्क्रोल करें और बीटा वर्शन की सुविधाएं चालू करने के लिए स्विच को फ़्लिप करें.
  3. नीचे लॉग सेटिंग तक स्क्रोल करें और Dialogflow के इंटरैक्शन को लॉग करने और Google Cloud Stackdriver में सभी इंटरैक्शन को लॉग करने के लिए दोनों स्विच को फ़्लिप करें. हमें बाद में इसकी ज़रूरत होगी, ताकि ज़रूरत पड़ने पर हम अपनी कार्रवाई को डीबग कर सकें.

e80c17acc3cce993.png

  1. सेव करें पर क्लिक करें
  2. हो गया पर क्लिक करें

Actions on Google को कॉन्फ़िगर करना

  1. दाईं ओर दिए गए पैनल में, Google Assistant में यह सुविधा कैसे काम करती है सेक्शन में जाकर, Google Assistant लिंक पर क्लिक करें.

5a4940338fc351e3.png

इससे यह खुल जाएगा: http://console.actions.google.com

ध्यान दें: पक्का करें कि आपने उसी Google खाते से लॉग इन किया है जिससे Dialogflow में लॉग इन किया है.

अगर आपने Actions on Google का इस्तेमाल पहले कभी नहीं किया है, तो आपको सबसे पहले यह फ़ॉर्म भरना होगा:

3fd4e594fa169072.png

  1. प्रोजेक्ट के नाम पर क्लिक करके, सिम्युलेटर** में अपनी कार्रवाई शुरू करें.**
  2. मेन्यू बार में डेवलप करें चुनें

उपयोगकर्ता की भाषा सेटिंग मैच करें से सही का निशान हटाएं. यह पक्का करने के लिए कि लिखाई को बोली में बदलने की सुविधा को Assistant की डिफ़ॉल्ट भाषा से न हटाया जाए.

3b6bc284050571f5.png

  1. सेव करें पर क्लिक करें
  2. मेन्यू बार में जांच करें को चुनें

dd55b141677932fe.png

  1. पक्का करें कि सिम्युलेटर अंग्रेज़ी पर सेट हो और मेरे टेस्ट ऐप्लिकेशन से बात करें पर क्लिक करें

इस कार्रवाई में आपका स्वागत है. साथ ही, डायलॉग बॉक्स के डिफ़ॉल्ट इंटेंट के साथ आपका स्वागत है. इसका मतलब है कि Action on Google के साथ इंटिग्रेशन सेट अप करने से फ़ायदा हुआ!

Google Cloud को कॉन्फ़िगर करना

इस ट्यूटोरियल के लिए, आपको बिलिंग खाते के साथ GCP खाते की ज़रूरत होगी. अगर आपके पास अभी तक कोई Google खाता नहीं है, तो इन चरणों की मदद से खाता बनाया जा सकता है.

आम तौर पर बिलिंग खाते के लिए, पेमेंट के तरीके की ज़रूरत होती है, जैसे कि क्रेडिट कार्ड. इस वर्कशॉप के लिए, हम वर्कशॉप क्रेडिट का इस्तेमाल कर सकते हैं. हालांकि, उन्हें सिर्फ़ ऐसा करने की ज़रूरत नहीं है.

  1. इस यूआरएल पर जाएं और लॉगिन करें

gcpcredits.com/wivnl

  1. क्लिक करें: यहां क्लिक करें और अपने क्रेडिट ऐक्सेस करें
  2. 'स्वीकार करें' पर क्लिक करें और जारी रखें

आप बिलकुल तैयार हैं। आपने 25 डॉलर का बिलिंग खाता बनाया है, जो लंबे समय तक Cloud Functions का इस्तेमाल करने के लिए काफ़ी है.

Google Sheets API चालू करना

अगर आपके एजेंट को स्टैटिक इंटेंट रिस्पॉन्स (उदाहरण के लिए, किसी वेब सेवा, डेटाबेस या शीट से डेटा फ़ेच करना) से ज़्यादा की ज़रूरत है, तो अपनी वेब सेवा को अपने एजेंट से कनेक्ट करने के लिए, आपको fulfillment का इस्तेमाल करना होगा. अपनी वेब सेवा को कनेक्ट करके आप उपयोगकर्ता के एक्सप्रेशन के आधार पर कार्रवाइयां कर सकते हैं और उपयोगकर्ता को डायनैमिक जवाब वापस भेज सकते हैं.

उदाहरण के लिए, अगर कोई उपयोगकर्ता किसी ब्लॉग या किताब के लिए सलाह पाना चाहता है, तो आपकी वेब सेवा आपके डेटाबेस की जांच कर सकती है. साथ ही, उपयोगकर्ता को जवाब दे सकती है और उसे कोई लेख पढ़ सकता है.

इस ट्यूटोरियल में हम डेटाबेस का इस्तेमाल नहीं करेंगे. इसके बजाय, हम Google शीट का इस्तेमाल करेंगे. शीट के अपडेट होने के बाद, Google Assistant की कार्रवाई को भी अपडेट कर दिया जाएगा. शानदार!

  1. अगर आपने इस Google शीट को नए ब्राउज़र टैब में नहीं खोला है, तो इसे खोलें:
  2. https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit#gid=1240329448
  3. ज़रूरी जानकारी: इस शीट की कॉपी बनाएं. फ़ाइल > एक कॉपी बनाएं
  4. शीट कॉपी होने के बाद, शेयर करें पर क्लिक करें
  5. हमें Dialogflow सेवा खाते में बदलाव करने के अधिकार देने होंगे. ऐसा करने के लिए, Dialogflow > खोलें सेटिंग (कॉग व्हील).
  6. नीचे की ओर स्क्रोल करके, Google प्रोजेक्ट पर जाएं
  7. सेवा खाते (ईमेल) का पता कॉपी करें. यह कुछ ऐसा दिखना चाहिए: dialogflow-<someid>@<my-gcp-project>.iam.gserviceaccount.com

8bc778a04efb3dd2.png

  1. इस सेवा खाते को Google Sheets के शेयर करें पॉप-अप में चिपकाएं और इसे बदलाव करने के अधिकार दें.

e296b9c069c2028e.png

  1. इसके बाद, हमें वह शीट आईडी याद रखना होगा जिस पर हम अभी काम कर रहे हैं.

f9061a3724086bf7.png

    The Sheets URL will look something like this:

https://docs.google.com/spreadsheets/d/1fPd8b_z19U7ZzAaY327QhYoogn6q8c1rpGSNF8KIR_o/edit#gid=1240329448

    But we are only interested in the Sheet id, which is the part between:

https://docs.google.com/spreadsheets/d/ और /edit#gid=1240329448 (स्लैश के बिना).

    So it will look something like this: **1fPd8b_z19U7ZzAaY327QhYoogn6q8c1rpGSNF8KIR_o**

    **Write this Sheet ID down**, or copy it to Notepad. In the Webhook steps we will use this again.
  1. किसी दूसरे ब्राउज़र टैब में खोलें; http://console.cloud.google.com. (अगर आपके पास और Google Cloud प्रोजेक्ट हैं, तो नया Dialogflow प्रोजेक्ट चालू करें: yourname-wiv). - खोज बार में, यह खोजें: Google Sheets API

8b42de259eb40547.png

  1. इस पर क्लिक करें और सबसे ऊपर Google Sheets API चालू करें बटन पर क्लिक करें.

4b41a64a6cd5a37e.png

3. कस्टम इकाइयां

इकाइयां ऐसी चीज़ें होती हैं जिन पर आपका ऐप्लिकेशन या डिवाइस कार्रवाइयां करता है. इसे पैरामीटर / वैरिएबल के तौर पर देखें. हम अपनी कार्रवाई में:

"मुझे किताब पढ़ने के बारे में सलाह चाहिए

चैटबॉट

/ मुझे इस बारे में सलाह चाहिए कि

आवाज़*"*

आप चाहें, चैटबॉट, Voice या दोनों, यह एक कस्टम इकाई से इकट्ठा किया जाएगा. इस इकाई का इस्तेमाल, वेब सेवा को किए जाने वाले मेरे अनुरोध के पैरामीटर के तौर पर किया जाएगा.

Dialogflow इकाइयों के बारे में ज़्यादा जानकारी.

चैनल की इकाई बनाना

  1. मेन्यू आइटम पर Dialogflow कंसोल में क्लिक करें: इकाइयां
  2. इकाई बनाएं पर क्लिक करें
  3. इकाई का नाम: tech (पक्का करें कि यह अंग्रेज़ी के छोटे अक्षरों में हो)
  4. समानार्थी शब्दों के साथ विकल्प तय करें. (आप इंटरफ़ेस में टैब करके देख सकते हैं.)
  • Chatbots - Chatbots, Chat, Web
  • Voice - Voice, Voicebots, Voice Assistants
  • Both - Both, All

f9b213472a75915b.png

5**.** नीले रंग के 'सेव करें' बटन के बगल में मौजूद मेन्यू बटन पर क्लिक करके **बदलाव नहीं किया जा सकता** मोड पर स्विच करें.

e294b49b123e034f.png

  1. ध्यान दें कि शायद आपने सभी इकाइयों को CSV फ़ॉर्मैट में भी डाला होगा. यह तब काम आ सकता है, जब आपके पास बहुत सारी इकाइयां हों, जिन्हें बनाने की ज़रूरत है.
"Chatbots","Chatbots","Chat","Web"
"Voice","Voice","Voicebots","Voice Assistants"
"Both","Both","All"

6cfaa328bcd2bad3.png

  1. सेव करें पर क्लिक करें

4. मूड

Dialogflow टूल, उपयोगकर्ता के इंटेंट को कैटगरी में बांटने के लिए इंटेंट का इस्तेमाल करता है. इंटेंट में ट्रेनिंग वाले वाक्यांश होते हैं. ये इस बात के उदाहरण हैं कि कोई उपयोगकर्ता आपके एजेंट से क्या कह सकता है.

उदाहरण के लिए, अगर कोई उपयोगकर्ता जानना चाहता है कि अगले इवेंट की स्थिति क्या है, तो वह यह जानकारी मांग सकता है:

"अगली बैठक कब है?"

जब कोई उपयोगकर्ता कुछ लिखता या बोलता है, जिसे यूज़र एक्सप्रेशन कहा जाता है, तो Dialogflow, उपयोगकर्ता के एक्सप्रेशन का मिलान आपके एजेंट के सबसे सही इंटेंट से करता है. इंटेंट मैच करने को इंटेंट क्लासिफ़िकेशन भी कहा जाता है.

यहां Dialogflow के इंटेंट के बारे में ज़्यादा जानकारी दी गई है.

डिफ़ॉल्ट वेलकम इंटेंट में बदलाव करना

नया Dialogflow एजेंट बनाने पर, दो डिफ़ॉल्ट इंटेंट अपने-आप बन जाएंगे. एजेंट के साथ बातचीत शुरू करने पर, सबसे पहले डिफ़ॉल्ट वेलकम इंटेंट मैसेज भेजा जाता है. डिफ़ॉल्ट फ़ॉलबैक इंटेंट, वह फ़्लो होता है जो आपको तब मिलेगा, जब एजेंट आपकी बात नहीं समझ पाएगा या वह इंटेंट, जो आपने अभी-अभी कहा है उससे मैच नहीं कर पाएगा.

  1. इंटेंट > पर क्लिक करें डिफ़ॉल्ट वेलकम इंटेंट

Google Assistant के मामले में, यह डिफ़ॉल्ट वेलकम इंटेंट के साथ अपने-आप शुरू होगी. ऐसा इसलिए है, क्योंकि Dialogflow वेलकम इवेंट को सुन रहा है. हालांकि, डाले गए ट्रेनिंग के वाक्यांशों में से किसी एक को बोलकर भी इंटेंट का इस्तेमाल किया जा सकता है.

17610dbd5450e53.png

डिफ़ॉल्ट तौर पर वेलकम इंटेंट के लिए, वेलकम मैसेज यहां दिया गया है:

उपयोगकर्ता

एजेंट

"Ok Google, <yourname>-WIV से बात करो"

"हैलो, मैं हूं ऐना, जो Women in Voice की वर्चुअल एजेंट हैं.""आप मुझसे मुलाकातों, Women in Voice या पढ़ने के लिए सलाह के बारे में पूछ सकते हैं."आपको क्या जानना है?"

  1. नीचे की ओर स्क्रोल करके, जवाब पर जाएं.
  2. सभी मैसेज से दिए गए जवाब मिटाएं.
  3. डिफ़ॉल्ट टैब में, दिए गए तीन जवाब बनाएं. (हर नई लाइन के लिए, जवाब जोड़ें > टेक्स्ट या एसएसएमएल रिस्पॉन्स पर क्लिक करें:)
  • नमस्ते, मैं ऐना हूं, मैं Women in Voice की वर्चुअल एजेंट.
  • आप मुझसे मुलाकातों, Women in Voice या पढ़ने की सलाह के बारे में जानकारी मांग सकते हैं.
  • आपको क्या जानना है?

कॉन्फ़िगरेशन इस स्क्रीनशॉट के जैसा होना चाहिए.

a0078ea79188dcb3.png

  1. पिछले आउटपुट का इस्तेमाल चैटबॉट के लिए किया जाता है. हम आउटपुट में थोड़ा बदलाव कर सकते हैं, ख़ास तौर पर Google Assistant के लिए. हम अपने वाक्यों में ठहराव पैदा करने के लिए, एसएसएमएल (स्पीच सिंथेसिस मार्कअप लैंग्वेज) का इस्तेमाल करेंगे. Google Assistant टैब पर क्लिक करें.
  • डिफ़ॉल्ट टॉगल को चालू करें, क्योंकि हम चैटबॉट मैसेज का फिर से इस्तेमाल नहीं करेंगे.
  • जवाब जोड़ें > पर क्लिक करें आसान जवाब
  • निम्न टेक्स्ट वर्शन जोड़ें:

Hey there, I'm Anna, the virtual agent of Women in Voice.

You can ask me for information about meetups, Women in Voice or a reading tip. What would you like to know?

  • इसके बाद, ऑडियो आउटपुट को पसंद के मुताबिक बनाएं पर क्लिक करें
  • इसके बाद, यहां दिया गया एसएसएमएल वर्शन जोड़ें:

<speak><p><s>Hey there, I'm Anna, the virtual agent of Women in Voice.</s><s>

You can ask me for information about meetups, Women in Voice or a reading tip.</s></p><break time="500ms"/><p><s> What would you like to know?</s></p></speak>

कॉन्फ़िगरेशन इस स्क्रीनशॉट के जैसा होना चाहिए.

62f0f58753463fbe.png

  1. सेव करें पर क्लिक करें

यहां आपको कार्रवाइयां on Google के लिए एसएसएमएल के बारे में ज़्यादा जानकारी मिल सकती है.

  1. आइए, इस इंटेंट की जांच करते हैं. सबसे पहले, हम Dialogflow सिम्युलेटर में इसकी जांच कर सकते हैं.

टाइप: नमस्ते. इससे यह मैसेज दिखना चाहिए.

12d40056fbd25dfe.png

  1. अब, Actions on Google कंसोल पर वापस स्विच करें.

(आपको इसे किसी दूसरे टैब में रखना चाहिए.)

क्लिक करें: "मेरे टेस्ट ऐप्लिकेशन से बात करो." नया वेलकम मैसेज सुनें.

डिफ़ॉल्ट फ़ॉलबैक इंटेंट में बदलाव करना

  1. इंटेंट > पर क्लिक करें डिफ़ॉल्ट फ़ॉलबैक इंटेंट
  2. नीचे की ओर स्क्रोल करके, जवाब पर जाएं.
  3. सभी मैसेज से दिए गए जवाब मिटाएं.
  4. डिफ़ॉल्ट टैब में, हर जवाब को एक नई लाइन में इस तरह बनाएं कि वह इन विकल्पों के बीच वैकल्पिक हो जाए:
  • Sorry, can you repeat this?
  • I didn't understand you. You can ask me questions about Women in Voice, a book or article tip or when the next meetup will be.

bdecc217bafff97b.png

  1. सेव करें पर क्लिक करें

ध्यान दें, Google Assistant से जुड़ा कोई आउटपुट नहीं डालने पर, आउटपुट डिफ़ॉल्ट तौर पर सेट होगा.

स्टॉप इंटेंट बनाना

  1. इंटेंट मेन्यू आइटम पर क्लिक करें.
  2. इंटेंट बनाएं पर क्लिक करें
  3. इंटेंट का नाम डालें: Stop Intent
  4. ट्रेनिंग के लिए वाक्यांश जोड़ें पर क्लिक करें
  • No
  • That's it
  • Bye
  • I don't want that
  • Goodbye
  • It's ok for now
  • Quit
  • I want to stop
  • Close this
  • End the conversation

7ec6455CAdf7e36.png

  1. नीचे जवाब तक स्क्रोल करें.> जवाब जोड़ें
  2. निम्न टेक्स्ट विकल्प जोड़ें:
  • Alright! Hopefully we will see you at one of our meetups!
  • No problem. See you at one of our meetups!
  1. स्विच को फ़्लिप करें: इस इंटेंट को बातचीत खत्म होने के रूप में सेट करें. इससे, इस इंटेंट के मैच होने पर Google Assistant की कार्रवाई बंद हो जाएगी.

ba532398680d457d.png

  1. सेव करें पर क्लिक करें.

मीटअप इंटेंट बनाएं

Meetup Intent में बातचीत का यह हिस्सा शामिल होगा:

उपयोगकर्ता

एजेंट

"अगली बैठक कब है?"

"अगली बैठक <date> को होगी <time> पर <location> में. इसका विषय <topic> होगा. और स्पीकर ये हैं: <speakers>. हमारे न्यूज़लेटर की मदद से, इसके लिए रजिस्टर किया जा सकता है."

  1. इंटेंट मेन्यू आइटम पर क्लिक करें.
  2. इंटेंट बनाएं पर क्लिक करें
  3. इंटेंट का नाम डालें: Meetup Intent (पक्का करें कि कैपिटल M और कैपिटल I का इस्तेमाल किया जाए. - अगर इंटेंट की स्पेलिंग अलग-अलग है, तो बैक-एंड सेवा काम नहीं करेगी!
  4. ट्रेनिंग के लिए वाक्यांश जोड़ें पर क्लिक करें
  • When is the next meetup?
  • Do you have any events?
  • Which events are in the planning?
  • Are there meetup events soon?
  • I would love to attend a meetup
  • Can I join a virtual meetup?
  • When will you get together?
  • Can I join?
  • What does your calendar look like?
  1. ग्राहक को आइटम भेजना > ऑर्डर पूरा करने की सुविधा चालू करें

7eb73ba04d76140e.png

  1. इस इंटेंट के लिए वेबहुक कॉल चालू करें स्विच को फ़्लिप करें.

748a82d9b4d7d253.png

  1. सेव करें पर क्लिक करें

टिप इंटेंट बनाएं

सलाह के इंटेंट में बातचीत का यह हिस्सा भी शामिल होगा:

उपयोगकर्ता

एजेंट

"मुझे पढ़ने के लिए सलाह चाहिए."

"क्या आपको चैटबॉट, Voice या दोनों के बारे में और पढ़ना है?"

"आवाज़"

"ठीक है, यह रही आज की सलाह! <type> &lt;title&gt; <author> में से. क्या आपको कोई दूसरी किताब या लेख के लिए सलाह चाहिए? साथ ही, मैं आपको बैठकों या हमारी गतिविधियों के बारे में ज़्यादा जानकारी दे सकता हूं. मैं आपके लिए क्या कर सकती हूं?"

  1. इंटेंट मेन्यू आइटम पर फिर से क्लिक करें.
  2. इंटेंट बनाएं पर क्लिक करें
  3. इंटेंट का नाम डालें: Tip Intent (पक्का करें कि कैपिटल L और कैपिटल I का इस्तेमाल किया जाए. - अगर इंटेंट की स्पेलिंग अलग-अलग है, तो बैक-एंड सेवा काम नहीं करेगी!
  4. ट्रेनिंग के लिए वाक्यांश जोड़ें पर क्लिक करें और इन्हें जोड़ें:
  • Can I get a tip for an article?
  • I would like to receive a reading tip
  • Any book tips?
  • What's nice to read?
  • I want to learn more about Chatbots, what should I read?
  • What are nice blogs?
  • Do you have book suggestions?
  • I want to receive information about Both
  • Can I have Chatbots reading tip
  • I would like to read more about Voice
  • Voice please
  • Both are okay.
  • Reading tip
  • Tip
  • Blog
  • Article
  • Book
  • Book suggestions
  • Yes
  • Yeah
  • Another tip
  • Yes one more
  1. नीचे स्क्रोल करते हुए कार्रवाई और पैरामीटर पर जाएं
  2. टेक को रीकीड के तौर पर मार्क करें

7cdf7fdf5d2c3fbe.png

क्लिक करें: प्रॉम्प्ट तय करें और यह डालें:

  • Do you want to read more about Chatbots, Voice or Both?
  1. ग्राहक को आइटम भेजना > ऑर्डर पूरा करने की सुविधा चालू करें

फ़िलहाल, हम जवाब की हार्डकोडिंग नहीं कर रहे हैं. जवाब, क्लाउड फ़ंक्शन से मिलेगा! इसलिए, इस इंटेंट के लिए वेबहुक कॉल चालू करें स्विच को बदलें.

ग्राहक को आइटम भेजना > ऑर्डर पूरा करने की सुविधा चालू करें

7eb73ba04d76140e.png

  1. इस इंटेंट के लिए वेबहुक कॉल चालू करें स्विच को फ़्लिप करें.

748a82d9b4d7d253.png

  1. सेव करें पर क्लिक करें

5. नॉलेज कनेक्टर

नॉलेज कनेक्टर, बताए गए इंटेंट को पूरा करते हैं. अपने-आप जवाब पाने के लिए, वे नॉलेज दस्तावेज़ों को पार्स करते हैं. (उदाहरण के लिए, CSV फ़ाइलों, ऑनलाइन वेबसाइटों या PDF फ़ाइलों के अक्सर पूछे जाने वाले सवाल या लेख!) उन्हें कॉन्फ़िगर करने के लिए, एक या एक से ज़्यादा नॉलेज बेस होते हैं. नॉलेज बेस, नॉलेज दस्तावेज़ों का कलेक्शन होते हैं.

नॉलेज कनेक्टर के बारे में ज़्यादा जानें.

इसे आज़माकर देखें.

  1. सबसे ऊपर मौजूद मेन्यू में से अंग्रेज़ी भाषा चुनने के लिए, en टैग चुनें.
  2. मेन्यू में नॉलेज (बीटा) चुनें.

e0a3d2e03dd1076c.png

  1. दाएं नीले बटन पर क्लिक करें: नॉलेज बेस बनाएं
  2. नॉलेज बेस का नाम लिखें; Voice में महिलाएं, सेव करें को दबाएं.
  3. पहला लिंक बनाएं लिंक पर क्लिक करें

9b2ca6b25c4100ab.png

  1. इससे एक विंडो खुल जाएगी.

इस कॉन्फ़िगरेशन का इस्तेमाल करें:

दस्तावेज़ का नाम: महिलाओं की आवाज़ के बारे में अक्सर पूछे जाने वाले सवालों की शीट

नॉलेज टाइप: अक्सर पूछे जाने वाले सवाल

Mime टाइप: CSV

  1. हमें इस शीट के डेटा की ज़रूरत पड़ेगी. यह पक्का करें कि डेटा शीट खुली हो. इसके बाद, 'अक्सर पूछे जाने वाले सवाल' टैब चुनें
  2. फ़ाइल > चुनें डाउनलोड करें > सीएसवी

e7f0066408fc1721.png

  1. Dialogflow पर वापस जाएं, कंप्यूटर से फ़ाइल अपलोड करें पर क्लिक करें और डाउनलोड की गई CSV फ़ाइल चुनें. बनाएं पर क्लिक करें

नॉलेज बेस बनाया गया है:

64513e2e484dda31.png

  1. जवाब जोड़ें पर क्लिक करें

ये जवाब तैयार करें और सेव करें पर क्लिक करें:

$Knowledge.Answer[1]

  1. जानकारी देखें पर क्लिक करें

यहां आपको वे सभी अक्सर पूछे जाने वाले सवाल दिखेंगे जिन्हें आपने Dialogflow में लागू किया है.

यह आसान है!

ध्यान रखें कि अपने एजेंट में अक्सर पूछे जाने वाले सवाल इंपोर्ट करने के लिए, अक्सर पूछे जाने वाले सवालों वाली ऑनलाइन एचटीएमएल वेबसाइट पर भी कर्सर ले जाया जा सकता है. टेक्स्ट के एक ब्लॉक के साथ PDF भी अपलोड किया जा सकता है, और Dialogflow सवाल खुद हल कर देगा.

  1. सभी नॉलेज बेस कनेक्टर पर वापस जाने के लिए, Dialogflow मेन्यू में नॉलेज (बीटा) पर क्लिक करें.
  2. नॉलेज बेस की ताकत और कमज़ोरी को बदला जा सकता है. ऐसा तब होता है, जब आपको लगे कि अक्सर पूछे जाने वाले सवालों के जवाब आपके मकसद से मिल रहे हैं या हार रहे हैं. हमारे अलग-अलग पहलू नहीं हो सकते, इसलिए अपने नॉलेज बेस को थोड़ा और मज़बूत बनाएं. स्केल को बदलकर -0.2 करें. स्लाइडर को खींचने के बाद, वैल्यू अपने-आप सेव हो जाएगी.

अक्सर पूछे जाने वाले सवालों को अब ‘अतिरिक्त’ के तौर पर देखा जाना चाहिए पर क्लिक करें. नॉलेज बेस से जुड़े अक्सर पूछे जाने वाले सवालों से, इस मॉडल को ट्रेनिंग नहीं दी जा सकती है. इसलिए, पूरी तरह से अलग तरीके से सवाल पूछने से शायद आपको मिलान न मिले, क्योंकि इसमें नैचुरल लैंग्वेज अंडरस्टैंडिंग (मशीन लर्निंग मॉडल) का इस्तेमाल नहीं किया जाता है. इस वजह से, अक्सर पूछे जाने वाले सवालों को इंटेंट में बदलना फ़ायदेमंद होता है.

6. वेबहुक फ़ुलफ़िलमेंट

Google Cloud फ़ंक्शन बनाना

  1. ब्राउज़र के किसी दूसरे टैब में, http://console.cloud.google.com पर जाएं.
  2. बाएं मेन्यू में Cloud Functions चुनें
  3. फ़ंक्शन बनाएं पर क्लिक करें

bf2441ba1271a95e.png

  1. यह कॉन्फ़िगरेशन तय करें:
  • नाम: dialogflow
  • असाइन की गई मेमोरी: 256MiB
  • ट्रिगर: एचटीटीपी
  • यूआरएल को क्लिपबोर्ड पर कॉपी करें.
  • इनलाइन एडिटर चुनें
  • रनटाइम: NodeJS 8
  • एक्ज़ीक्यूट किया जाने वाला फ़ंक्शन: dialogflow
  1. पक्का करें कि पुष्टि करने के इस चेकबॉक्स पर सही का निशान लगा हो:

317140d44ec3299c.png

61ecb8f57a6fd21b.png

  1. package.json का कॉन्टेंट यहां दिया गया है. इसे कॉपी करें और एडिटर के Package.json टैब में चिपकाएं.

कोड का यह हिस्सा, Google Cloud में सही एनपीएम लाइब्रेरी लोड करता है:

{
 "name": "dialogflow",
 "description": "Cloud Functions",
 "engines": {
   "node": "8"
 },
 "dependencies": {
   "request": "^2.85.0",
   "request-promise": "^4.2.5",
   "dialogflow-fulfillment": "^0.6.1",
   "actions-on-google": "^2.2.0",
   "googleapis": "^48.0.0",
   "moment": "^2.24.0"
 },
 "devDependencies": {
   "eslint": "^5.12.0",
   "eslint-plugin-promise": "^4.0.1",
   "ngrok": "^3.2.7"
 },
 "private": true
}
  1. index.js के लिए कॉन्टेंट यहां दिया गया है. इसे कॉपी करें और एडिटर के index.js टैब में चिपकाएं.

किसी Google शीट से डेटा फ़ेच करने के लिए, कोड का यह हिस्सा googleapis लाइब्रेरी के साथ इंटिग्रेट होगा. यह Google Assistant की सुविधा वाले डिवाइस पर कार्ड दिखाने के लिए, action-on-google लाइब्रेरी का इस्तेमाल करता है. यह डायलॉग फ़्लो के इंटेंट की कैटगरी तय करने के लिए, लाइब्रेरी dialogflow-fulfillment का इस्तेमाल करता है. साथ ही, यह तारीख और समय से जुड़े ऑब्जेक्ट को मैनेज करने के लिए, लाइब्रेरी के मोमेंट का इस्तेमाल करता है.

/* jshint esversion: 8 */
'use strict';

process.env.DEBUG = 'dialogflow:debug';

const ACCOUNTS_SHEET_ID = '1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY';

const {
 BasicCard,
 Button,
} = require('actions-on-google');

const {google} = require('googleapis');
const moment = require('moment');
moment.locale('nl');
const { WebhookClient } = require('dialogflow-fulfillment');
var books;
var meetups;

const SHEETS_SCOPE = 'https://www.googleapis.com/auth/spreadsheets.readonly';

/**
* Authenticates the Sheets API client for read-only access.
*
* @return {Object} sheets client
*/
async function getSheetsClient() {
   // Should change this to file.only probably
   const auth = await google.auth.getClient({
       scopes: [SHEETS_SCOPE],
   });
   return google.sheets({version: 'v4', auth});
}

/**
* Return a natural spoken date
* @param {string} date in 'YYYY-MM-DD' format
* @returns {string}
*/
var getSpokenDate = function(date){
   let datetime = moment(date, 'YYYY-MM-DD');
   return `${datetime.format('D MMMM')}`;
};


/* When the tipIntent Intent gets invoked.  */
function tipIntent(agent) {
 var par = agent.parameters.tech;
   var selection = [];
   //console.log(par);
   //console.log(books);
    for(var i = 0; i<books.length; i++){
     if(books[i][2].toLowerCase() == par.toLowerCase()) {
         selection.push(books[i]);
       }
   }
    var random = Math.floor(Math.random() * selection.length);
   var booktip = selection[random];
   //console.log(selection[random]);

   let spokenText = `<p><s>Alright, here's the tip of the day!</s></p><p>The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.</p>`;
   let writtenText = `Alright, here's the tip of the day! The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.`;
   //console.log(booktip[8]);
    if (agent.requestSource === agent.ACTIONS_ON_GOOGLE) {
       let conv = agent.conv();
       conv.ask(`<speak>${spokenText}</speak>`);
       conv.ask(new BasicCard({
           title: `Tip of the day!`,
           subtitle: `${par}`,
           text: `The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.`,
           buttons: new Button({
               title: 'Read',
               url: `${booktip[8]}`,
           })
       }));
       conv.ask(`<speak><p><s>Do you want another book or article tip? Also, I can tell you more about meetups or what we do. How can I help?</s></p></speak>`);
       // Add Actions on Google library responses to your agent's response
       agent.add(conv);
   } else {
       agent.add(writtenText + ' Do you want another book or article tip? Also, I can tell you more about meetups or what we do. How can I help?');
   }
}


function meetupIntent(agent) {
 let conv = agent.conv();
 let record;
  console.log(meetups);
  for(var i = 0; i<meetups.length; i++){
   let d = moment(meetups[i][0], 'YYYY-MM-DD');
   let today = moment(new Date());

   if(moment(d).isSameOrAfter(today)) {
     // the i event is not in the past
     record = meetups[i];
     console.log(record);
     break; 
   }
 }
  let date = getSpokenDate(record[0]);
 let spokenText1 = `The next meetup will be ${date} at ${record[1]} in ${record[3]}.`;
 let spokenText2 = `The topic will be <emphasis level="moderate">${record[2]}.</emphasis>`;
 let spokenText3 = `You can register via our newsletter.`;
  let writtenText = `${spokenText1} The topic will be ${record[2]}. ${spokenText3}`;

 if (agent.requestSource === agent.ACTIONS_ON_GOOGLE) {
   conv.ask(`<speak>${spokenText1} ${spokenText2} ${spokenText3}</speak>`);
   conv.ask(new BasicCard({
     title: `Meetup`,
     subtitle: `${record[2]}`,
     text: `${record[0]} ${record[1]} - ${record[3]}`,
     buttons: new Button({
       title: 'Register',
       url: `http://www.meetup.com`
     })
   }));
   conv.ask('<speak><p><s>Is there anything else I can help you with?</s></p></speak>');
   agent.add(conv);
 } else {
   agent.add(`${writtenText} Is there anything else I can help you with?`);
 }
}

exports.dialogflow = async (request, response) => {
 var agent = new WebhookClient({ request, response });

 console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
 console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
  const client = await getSheetsClient();   
 const allBooks = await client.spreadsheets.values.get({
   spreadsheetId: ACCOUNTS_SHEET_ID,
   range: 'Books&Blogs!A:I',
 });
 const allEvents = await client.spreadsheets.values.get({
   spreadsheetId: ACCOUNTS_SHEET_ID,
   range: 'Meetups!A:D',
 });
  books = allBooks.data.values;
 meetups = allEvents.data.values;
 books.shift();
 meetups.shift();

 var intentMap = new Map();
 intentMap.set('Tip Intent', tipIntent);
 intentMap.set('Meetup Intent', meetupIntent);
 agent.handleRequest(intentMap);
};

b130ee596061832c.png

  1. एनवायरमेंट वैरिएबल, नेटवर्किंग, टाइम आउट वगैरह लिंक पर क्लिक करें

e81c29549f696937.png

  1. Dialogflow इंटिग्रेशन सेवा खाता चुनें.

(डिफ़ॉल्ट रूप से इसमें GAE App Engine सेवा खाते का इस्तेमाल किया जा रहा है. हालांकि, यह वही सेवा खाता होना चाहिए जिसे आपकी Google Sheets में शेयर किया गया था. इसे इस ट्यूटोरियल के पहले चरण में देखा जा सकता है.)

61ecb8f57a6fd21b.png

  1. इससे पहले कि हम क्लाउड फ़ंक्शन डिप्लॉय करें. हम index.js टैब में अपने कोड की एक लाइन बदल देंगे. कोड की तीसरी पंक्ति:

const ACCOUNTS_SHEET_ID = '1Yo_E8KONgSiUm00ZmTOqtjXCwULmc2JuI3sjxRyvrkE';

पहले चरण में ही हमने Notepad में इस बटन को लिख लिया है. इसलिए, इस आईडी को कॉपी करके अपने कोड में चिपकाएं.

  1. अब हम तैयार हैं. बनाएं बटन पर क्लिक करें. इसमें कुछ समय लगेगा, क्योंकि यह आपका बिना सर्वर वाला फ़ंक्शन डिप्लॉय कर रहा है.

Dialogflow में ग्राहक को आइटम भेजने की सुविधा चालू करें

  1. Dialogflow पर वापस जाएं
  2. मुख्य मेन्यू में ग्राहक को आइटम भेजना पर क्लिक करें
  3. वेबहुक स्विच चालू करें.
  4. उस क्लाउड फ़ंक्शन का यूआरएल डालें जिसे क्लिपबोर्ड पर कॉपी किया गया है.

उदाहरण के लिए: https://us-central1-leeboonstra-wiv-uhtefa.cloudFunctions.net/dialogflow

  1. सेव करें पर क्लिक करें.

89dfd437c6689538.png

  1. आइए, वेबहुक की जांच करके यह देखते हैं कि कोड काम करता है या नहीं. इसके बाद, सीधे Dialogflow सिम्युलेटर में फ़्लो की जांच करें.

297e8f7ed1b9e801.png

7. Actions on Google

कार्रवाइयां on Google, Google Assistant के लिए डेवलपमेंट प्लैटफ़ॉर्म है. इससे Google Assistant के लिए, तीसरे पक्ष के "कार्रवाइयों" वाले ऐप्लेट को डेवलप करने की अनुमति मिलती है, जो ज़्यादा सुविधाएं देते हैं.

आपको Google को कोई ऐप्लिकेशन खोलने या उससे बात करने के लिए कहना होगा.

इससे आपकी कार्रवाई खुल जाएगी, आवाज़ बदल जाएगी, और 'नेटिव' को छोड़ दिया जाएगा Google Assistant का दायरा. इसका मतलब है कि अब तक, आप अपने एजेंट से जो कुछ भी मांगते हैं उसे आपको खुद तैयार करना होगा. अपने काम के दौरान, आप Google Assistant से अचानक मौसम की जानकारी नहीं मांग सकते. आपको सबसे पहले अपनी मौजूदा कार्रवाई के दायरे (ऐप्लिकेशन) को छोड़ देना चाहिए.

Google Assistant सिम्युलेटर में अपनी कार्रवाई की जांच करना

आइए, इस बातचीत की जांच करते हैं:

उपयोगकर्ता

Google Assistant

"Ok Google, मेरे टेस्ट ऐप्लिकेशन से बात करो."

"मेरे ऐप्लिकेशन का टेस्ट वर्शन फ़ेच किया जा रहा है."

उपयोगकर्ता

आपका नाम WIV

-

"हैलो, मैं ऐना हूं, मैं Women in Voice की वर्चुअल एजेंट. आप मुझसे मुलाकातों, Women in Voice या पढ़ने की सलाह के बारे में जानकारी मांग सकती हैं. आपको क्या जानना है?"

क्या मुझे किसी ब्लॉग के लिए सलाह मिल सकती है?

"क्या आपको चैटबॉट, Voice या दोनों के बारे में और पढ़ना है?"

चैटबॉट

"ठीक है, यह रही आज की सलाह! लेख चैटबॉट्स ऐंड कोबस ग्रेलिंग के इनविज़िबल अफ़र्डेंसेज़ की चुनौती.क्या आपको कोई दूसरी किताब या लेख के बारे में सुझाव चाहिए? साथ ही, मैं आपको बैठकों या हमारी गतिविधियों के बारे में ज़्यादा जानकारी दे सकता हूं. मैं आपके लिए क्या कर सकती हूं?"

अगली बैठक कब है?

"अगली मुलाकात 29 अप्रैल, शाम 6 बजे वर्चुअल Hangout में होगी. इस विषय का विषय होगा, ऑनलाइन वर्कशॉप: Dialogflow के साथ Google कार्रवाइयां बनाएं!.हमारे न्यूज़लेटर की मदद से रजिस्टर किया जा सकता है.क्या आपको कोई और मदद चाहिए?"

आपकी वेबसाइट का यूआरएल क्या है?

"आप हमें www.Womeninvoice.com पर मिल सकते हैं. क्या मैं आपकी कोई और मदद कर सकता हूं?"

नहीं, रहने दें

"ठीक है! उम्मीद है कि हमारी किसी एक बैठक में आपसे मुलाकात होगी!"

  1. Google Assistant सिम्युलेटर पर वापस स्विच करें

खोलें: https://console.action.google.com

  1. माइक्रोफ़ोन आइकॉन पर क्लिक करें और ये सवाल पूछें:

aa43d7f1568c4d80.png

  • Talk to my test app.
  1. चलिए, अब सवाल पूछते हैं:
  • Can I have a tip for a blog?

इससे यह जानकारी मिलेगी:

"क्या आपको चैटबॉट, Voice या दोनों के बारे में और पढ़ना है?"

  • Chatbots

"ठीक है, यह रही आज की सलाह! द आर्टिकल चैटबॉट्स ऐंड द चैलेंज ऑफ़ इनविज़बल अफ़र्डेंसेज़ ऑफ़ कोबस ग्रेलिंग.

क्या आपको कोई दूसरी किताब या लेख के लिए सलाह चाहिए? साथ ही, मैं आपको बैठकों या हमारी गतिविधियों के बारे में ज़्यादा जानकारी दे सकता हूं. मैं आपके लिए क्या कर सकती हूं?"

  1. चलिए, इसी सवाल का कोई दूसरा वर्शन देखते हैं:
  • "Yes, I want to read more about Voice"

"ठीक है, यह रही आज की सलाह! द बुक डिज़ाइनिंग वॉइस यूज़र इंटरफ़ेस: बातचीत वाली सुविधा के सिद्धांत. ... कैथी पर्ल की.

क्या आपको कोई दूसरी किताब या लेख के लिए सलाह चाहिए? साथ ही, मैं आपको बैठकों या हमारी गतिविधियों के बारे में ज़्यादा जानकारी दे सकता हूं. मैं आपके लिए क्या कर सकती हूं?"

ध्यान दें कि आपने Dialogflow में ट्रेनिंग वाले इस वाक्यांश का इस्तेमाल पहले कभी नहीं किया है. यह सही इंटेंट से मेल खाता है.

यह भी ध्यान दें कि आपको कोई फ़ॉलोअप सवाल नहीं मिला, क्योंकि आपने Dialogflow को जारी रखने के लिए ज़रूरी जानकारी दे दी थी.

  1. नीचे दिए गए वाक्यांशों के साथ Dialogflow को जारी रखें:
  • What's the URL for your website
  • Bye

a0bd5578d6833c98.png

गड़बड़ियां? लॉग देखें!

अपने Cloud Function कोड में console.log() का इस्तेमाल करने पर, डेटा आपके GCP लॉग (स्टैकड्राइवर) में लिखा जाएगा. Cloud Console पर जाकर, इन लॉग को ऐक्सेस किया जा सकता है > लॉग इन करना.

पहले ड्रॉपडाउन में, आप Cloud Function > डायलॉगफ़्लो का इस्तेमाल करें.

8. बधाई हो

आपने Dialogflow के साथ Google Assistant पर अपनी पहली कार्रवाई पूरी कर ली है. बहुत खूब!

आपने देखा होगा कि आपकी कार्रवाई test-mode में चल रही थी जो आपके Google खाते से जुड़ी है. अगर आपने iOS या Android फ़ोन पर, Nest डिवाइस या Google Assistant ऐप्लिकेशन में एक ही खाते से लॉगिन किया है. आपके पास इस गतिविधि की जांच करने का भी विकल्प है.

अब यह वर्कशॉप का डेमो है. हालांकि, जब आप Google Assistant के लिए असल में ऐप्लिकेशन बना रहे हों, तो आप अपनी सेट की गई कार्रवाई को मंज़ूरी के लिए सबमिट कर सकते हैं. ज़्यादा जानकारी के लिए यह गाइड पढ़ें.

इसमें हमने इन विषयों के बारे में बताया

  • Dialogflow v2 की मदद से चैटबॉट बनाने का तरीका
  • Dialogflow की मदद से पसंद के मुताबिक इकाइयां बनाने का तरीका
  • Dialogflow के साथ लीनियर बातचीत बनाने का तरीका
  • Dialogflow और Google Cloud Functions की मदद से, वेबहुक फ़ुलफ़िलमेंट को सेट अप करने का तरीका
  • Actions on Google की मदद से, अपने ऐप्लिकेशन को Google Assistant पर लाने का तरीका

आगे क्या होगा?

क्या आपको यह कोड लैब पसंद आया? ये बेहतरीन लैब देखें!