Google Assistant की मदद से, उपयोगकर्ताओं को अपनी कार्रवाई के लिए जोड़ना

1. खास जानकारी

Actions on Google एक डेवलपर प्लैटफ़ॉर्म है, जिसकी मदद से आप Google Assistant की सुविधाओं को बढ़ाने के लिए सॉफ़्टवेयर बना सकते हैं. Google Assistant #1,000 करोड़ से ज़्यादा डिवाइसों में काम करती है, जैसे कि स्मार्ट स्पीकर, फ़ोन, कार, टीवी, हेडफ़ोन वगैरह. उपयोगकर्ता Assistant का इस्तेमाल करके बातचीत करते हैं, जैसे कि किराने का सामान खरीदना या राइड बुक करना. (#&939 की संभावित सूची के लिए, कार्रवाई डायरेक्ट्री देखें.) डेवलपर के तौर पर, आप अपने उपयोगकर्ताओं और तीसरे पक्ष की सेवाओं के बीच बातचीत के दिलचस्प और असरदार अनुभव आसानी से बनाने और मैनेज करने के लिए, Actions on Google का इस्तेमाल कर सकते हैं.

यह एक बेहतर कोडलैब मॉड्यूल है, जिसे ऐसे पाठकों के लिए बनाया गया है जिनके पास Google Assistant के लिए, Actions बनाने का कुछ अनुभव पहले से ही है. अगर आपको Actions on Google के साथ पहले से कोई डेवलपमेंट अनुभव नहीं है, तो हमारा सुझाव है कि आप हमारे शुरुआती कोडलैब (लेवल 1, लेवल 2, और लेवल 3) को फ़ॉलो करके, इस प्लैटफ़ॉर्म के बारे में जान लें. ये बेहतर मॉड्यूल, आपको कई सुविधाओं की जानकारी देंगे. इनसे, ऐक्शन और #39; फ़ंक्शन को बढ़ाने और अपने दर्शकों की संख्या बढ़ाने में मदद मिलती है.

किसी कार्रवाई&#39 की सफलता को मापने का एक अहम तरीका यह है कि उपयोगकर्ता की दिलचस्पी के बारे में पता लगाया जाए. इसके अलावा, यह भी देखा जा सकता है कि पहले उपयोगकर्ता के इंटरैक्शन के बाद, कार्रवाई कितनी असरदार है. इस काम को आसान बनाने के लिए, आप अपनी कार्रवाई में ऐसी कई सुविधाएं लागू कर सकते हैं जिनसे उपयोगकर्ता आपकी बातचीत को फिर से देख सकते हैं.

कोडलैब में उपयोगकर्ता के जुड़ाव की सुविधाएं और Actions on Google के सबसे सही तरीके शामिल हैं.

a3fc0061bd01a75.png 961ef6e27dc73da2.png

आप क्या बनाएंगे #39;

आप एक ऐसी सुविधा को बेहतर बना पाएंगे जिसे:{0/}

  • उपयोगकर्ताओं को हर दिन अपडेट भेजें, ताकि वे आपकी कार्रवाई पर बात करने के लिए टैप कर सकें
  • उपयोगकर्ताओं को पुश नोटिफ़िकेशन भेजें, जो आपकी कार्रवाई पर वापस ले जाते हैं
  • ऐसा लिंक बनाएं जो उपयोगकर्ताओं को मोबाइल वेब ब्राउज़र के ज़रिए आपकी कार्रवाई पर ले जाए

आप इन चीज़ों के बारे में जानेंगे

  • उपयोगकर्ता की दिलचस्पी क्या है और यह किसी कार्रवाई की सफलता के लिए क्यों ज़रूरी है&#39
  • उपयोगकर्ता की दिलचस्पी बढ़ाने के लिए, कार्रवाई में बदलाव करने का तरीका
  • अलग-अलग तरह की कार्रवाइयों में उपयोगकर्ता जुड़ाव की किन सुविधाओं का इस्तेमाल करना चाहिए
  • Assistant की मदद से सूचनाएँ भेजने के लिए, Actions API का इस्तेमाल कैसे करें

आपको इनकी ज़रूरत होगी

आपके पास ये टूल होने चाहिए:

  • IDE/टेक्स्ट एडिटर, जैसे कि WebStorm, Atom या Sublime
  • Node.js, npm, और git के साथ शेल निर्देश चलाने के लिए टर्मिनल
  • वेब ब्राउज़र, जैसे कि Google Chrome
  • Firebase कमांड-लाइन इंटरफ़ेस वाला स्थानीय डेवलपमेंट एनवायरमेंट
  • Assistant की सुविधा वाला मोबाइल डिवाइस (Android या iOS) उसी मोबाइल डिवाइस से Assistant में साइन इन किया जाएगा जिसका इस्तेमाल आप&#39 करके करेंगे.

JavaScript (ES6) के बारे में जानने का सुझाव भी दिया जाता है. हालांकि, यह ज़रूरी नहीं है कि वेबहुक कोड को समझा जाए.

2. अपना प्रोजेक्ट सेट अप करना

इस सेक्शन में, उपयोगकर्ता की दिलचस्पी से जुड़ी सुविधाओं को पहले से बनाई गई पूरी कार्रवाई में जोड़ने का तरीका बताया गया है.

सैंपल को समझना

इस कोडलैब के लिए सैंपल, एक काल्पनिक जिम के लिए एक आसान कार्रवाई है, जिसका नाम &कार्रवाई है; जिम.&कोटेशन; यह कार्रवाई, जिम के बारे में जानकारी देती है. इसमें, कक्षा को रोज़ घुमाने वाली कक्षाओं की सूची भी शामिल है. जानकारी देने वाली इस तरह की कार्रवाई, उपयोगकर्ता को जोड़ने की सभी सुविधाओं के लिए सही है. ऐसा इसलिए, क्योंकि रोटेटिंग क्लास सूची में हर दिन अलग-अलग जानकारी होती है.

यह डायग्राम, कार्रवाई जिम का सैंपल' बातचीत की प्रक्रिया दिखाता है:

e2d6e4ad98948cf3.png

आप अपनी जोड़ी गई जुड़ाव सुविधाओं को बेहतर बनाने के लिए, डायलॉग में मामूली बदलाव करेंगे. हालांकि, बातचीत की सामान्य डिज़ाइन में बहुत कुछ बदल नहीं जाएगा.

अपनी बेस फ़ाइलें डाउनलोड करना

कोडलैब के लिए, GitHub डेटा स्टोर करने की जगह को क्लोन करने के लिए नीचे दिया गया निर्देश चलाएं:

git clone https://github.com/actions-on-google/user-engagement-codelab-nodejs

अपना प्रोजेक्ट और एजेंट सेट अप करना

अपने Actions प्रोजेक्ट और Dialogflow एजेंट को सेट अप करने के लिए, नीचे दिए गए चरणों को पूरा करें:

  1. Actions कंसोल खोलें.
  2. नया प्रोजेक्ट पर क्लिक करें.
  3. प्रोजेक्ट का नाम लिखें, जैसे कि engagement-codelab.
  4. Project बनाएं पर क्लिक करें.
  5. कोई कैटगरी चुनने के बजाय, ज़्यादा विकल्प सेक्शन तक स्क्रोल करें और बातचीत वाले कार्ड पर क्लिक करें.
  6. विकल्पों को बढ़ाने के लिए, अपना ऐक्शन बनाएं पर क्लिक करें और कार्रवाई जोड़ें चुनें.
  7. अपनी पहली कार्रवाई जोड़ें पर क्लिक करें.
  8. कार्रवाई बनाएं डायलॉग बॉक्स में, कस्टम इंटेंट चुनें. इसके बाद, डायलॉग फ़्लो कंसोल लॉन्च करने के लिए, बिल्ड पर क्लिक करें.
  9. Dialogflow कंसोल's एजेंट बनाने वाले पेज पर, बनाएं पर क्लिक करें.
  10. बाएं नेविगेशन में 6bf56243a8a11a3b.png (गियर आइकॉन) पर क्लिक करें.
  11. एक्सपोर्ट और इंपोर्ट करें पर क्लिक करें. इसके बाद, पिन से वापस लाएं.
  12. उस /user-engagement-codelab-nodejs/start/ डायरेक्ट्री से agent.zip फ़ाइल अपलोड करें जिसे आपने पहले डाउनलोड किया था.
  13. RESTORE लिखें और वापस लाएं पर क्लिक करें.
  14. हो गया पर क्लिक करें.

ग्राहक को सामान भेजने की प्रोसेस डिप्लॉय करें

अब आपका Actions प्रोजेक्ट और Dialogflow एजेंट तैयार हो गया है, Firebase फ़ंक्शन CLI का इस्तेमाल करके अपनी स्थानीय index.js फ़ाइल डिप्लॉय करें.

आपकी बेस फ़ाइल क्लोन की /user-engagement-codelab-nodejs/start/functions/ डायरेक्ट्री से, ये निर्देश चलाएं:

firebase use <PROJECT_ID>
npm install
firebase deploy

कुछ मिनट बाद, आपको "डिप्लॉयमेंट पूरा हुआ!" दिखेगा.

डिप्लॉयमेंट यूआरएल फिर से पाना

आपको क्लाउड फ़ंक्शन को यूआरएल के साथ Dialogflow देना होगा. इस यूआरएल को फिर से पाने के लिए, यह तरीका अपनाएं:

  1. Firebase कंसोल खोलें.
  2. विकल्पों की सूची से अपना ऐक्शन प्रोजेक्ट चुनें.
  3. बाईं ओर मौजूद नेविगेशन बार में, > फ़ंक्शन पर जाएं. अगर आपको 'डेटा शेयर करने की सेटिंग चुनें &कोटेशन का संकेत दिया जाता है; तो आप बाद में करें पर क्लिक करके इस विकल्प को अनदेखा कर सकते हैं.
  4. डैशबोर्ड टैब में, आपको ट्रिगर में यूआरएल के साथ "fulfillment&कोटेशन; के लिए एक एंट्री दिखेगी. इस यूआरएल को सेव करें; आपको इसे #39; अगले सेक्शन में Dialogflow में कॉपी करना होगा.

1741a329947975db.png

Dialogflow में वेबहुक यूआरएल सेट करें

अब आपको अपना Dialogflow एजेंट अपडेट करना होगा, ताकि आप अपने वेबहुक का इस्तेमाल करके ऑर्डर को पूरा कर सकें. ऐसा करने के लिए, इन चरणों का अनुसरण करें:

  1. Dialogflow कंसोल खोलें (अगर आप चाहें, तो Firebase कंसोल बंद कर सकते हैं).
  2. बाईं ओर मौजूद नेविगेशन में ग्राहक को आइटम भेजना पर क्लिक करें.
  3. वेबहुक चालू करें.
  4. अगर आपने Firebase डैशबोर्ड से कॉपी किया हुआ यूआरएल पहले से नहीं दिख रहा है, तो उसे चिपकाएं.
  5. सेव करें पर क्लिक करें.

पुष्टि करना कि आपका प्रोजेक्ट सही तरीके से सेट अप किया गया है

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

ऐक्शन सिम्युलेटर में अपनी कार्रवाई को आज़माने के लिए:

  1. Dialogflow के साथ काम करने वाले नेविगेशन में, इंटिग्रेशन &g Google Assistant पर क्लिक करें.
  2. पक्का करें कि अपने-आप दिखने वाले बदलावों की सुविधा चालू है. साथ ही, अपने ऐक्शन प्रोजेक्ट को अपडेट करने के लिए जांच करें पर क्लिक करें.
  3. ऐक्शन सिम्युलेटर, आपके ऐक्शन प्रोजेक्ट को लोड करता है. अपनी कार्रवाई की जांच करने के लिए, Input फ़ील्ड में Talk to my test app टाइप करें और Enter दबाएं.
  4. आपको ऐक्शन जिम में आपका स्वागत करने वाला एक जवाब दिखेगा. बातचीत जारी रखने के लिए, निर्देशों का पालन करें. साथ ही, इस बात का भी ध्यान रखें कि हर इनपुट के लिए ग्राहक ने जवाब दिया हो.

60acf1ff87b1a87f.png

3. हर दिन अपडेट करने के लिए सदस्यताएं जोड़ें

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

इस कदम में, आप हर दिन अपडेट होने वाले अपडेट की सदस्यताओं के बारे में जानेंगे. साथ ही, उन्हें अपने Action's क्लास सूची इंटेंट में जोड़ें. इन निर्देशों का पालन करने के बाद, आपकी कार्रवाई की बातचीत नीचे दिए गए डायग्राम की तरह दिखेगी:

f48891c8118f7436.png

यह उपयोगकर्ताओं को कैसे जोड़ेगा?

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

हर दिन अपडेट करने की सुविधा, यूज़र ऐक्टिविटी के लिए एक फ़ायदेमंद टूल हो सकती है, लेकिन यह ज़रूरी नहीं है कि इसे हर कार्रवाई में शामिल किया जाए. किसी कार्रवाई में हर दिन अपडेट की सदस्यता जोड़ने का फ़ैसला करते समय ये सलाह अपनाएं:

  • पक्का करें कि हर दिन अपडेट होने के बाद उपयोगकर्ता को हर दिन अलग-अलग ज़रूरी जानकारी दिखे. अगर हर रोज़ अपडेट करने के नतीजे पर एक ही बार टैप किया जाता है, तो हो सकता है कि उपयोगकर्ता कुछ दिनों बाद सदस्यता छोड़ दे.
  • पक्का करें कि आपका डायलॉग बॉक्स आपके उपयोगकर्ता के लिए तब काम का हो, जब वे सीधे आपके रोज़ के अपडेट और #39; इंटेंट पर जाते हों. आपका उपयोगकर्ता ज़रूरी नहीं है कि बातचीत की शुरुआत से शुरू की जाए. इसलिए, यह ज़रूरी नहीं है कि इसका संदर्भ ज़्यादा सही हो.
  • हर दिन अपडेट पाने के लिए सदस्यता लेने के लिए, अपने उपयोगकर्ता को अपनी कार्रवाई का फ़ायदा दिखाएं. आपके उपयोगकर्ता को &सोचना चाहिए;मुझे यह कॉन्टेंट हर दिन चाहिए. जब उन्हें सदस्यता लेने का विकल्प दिया जाए.
  • उपयोगकर्ता को सदस्यता लेने के लिए बार-बार सुझाव न दें. उपयोगकर्ता को यह दिखाने के तुरंत बाद कि वे किस चीज़ की सदस्यता लेते हैं, उन्हें हर दिन अपडेट करने वाली सदस्यता दें. साथ ही, उन्हें किसी और जगह पर परेशान करने से बचें.
  • अपडेट का इंटेंट ट्रिगर होने के बाद, बातचीत को छोटा रखें. हर दिन के अपडेट में, सिर्फ़ एक जवाब होना चाहिए. इसके बाद, उपयोगकर्ता का इनपुट दिए बिना ही बंद कर दिया जाना चाहिए.

रोज़ के अपडेट की सुविधा चालू करें

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

क्लास सूची इंटेंट के लिए हर दिन अपडेट पाने की सुविधा चालू करने के लिए, यह तरीका अपनाएं:

  1. Actions कंसोल में, डेवलप करें टैब पर क्लिक करें और बाएं नेविगेशन बार में कार्रवाइयां चुनें.
  2. कार्रवाइयां सूची में क्लास सूची पर क्लिक करें.
  3. उपयोगकर्ता का जुड़ाव सेक्शन में जाकर, क्या आप उपयोगकर्ताओं को हर दिन अपडेट देने का विकल्प देना चाहते हैं विकल्प को टॉगल करें.
  4. कॉन्टेंट का शीर्षक ऐसा सेट करें जो रोज़ के अपडेट की जानकारी देता हो. आप यह बता सकते हैं कि आपका रोज़ का कोटेशन किस समय भेजा जाना चाहिए. इसलिए, पक्का करें कि ज़ोर से बोले जाने पर आपका शीर्षक, जानकारी देने वाला और सही, दोनों तरह का हो. इस उदाहरण के लिए, कॉन्टेंट के शीर्षक को list of upcoming Action Gym classes पर सेट करें.
  5. पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.

c00885cc30e14d68.png

Dialogflow सेट अप करें

डायलॉग बॉक्स में इस तरीके का पालन करके, हर दिन अपडेट पाने वाले सदस्यता फ़्लो के लिए इंटेंट बनाएं:

उपयोगकर्ता को सदस्यता लेने का संकेत दें

  1. हर दिन अपडेट पाने के लिए सदस्यता लेने वाले उपयोगकर्ता को मैनेज करने के लिए एक नया इंटेंट सेट अप करें. 'डायलॉगफ़्लो कंसोल' में, नया इंटेंट बनाने के लिए, बाएं नेविगेशन में इंटेंट के आगे मौजूद + बटन पर क्लिक करें.
  2. इस नए इंटेंट को नाम दें Setup Updates.
  3. ट्रेनिंग वाक्यांशों वाले सेक्शन में जाकर, ये उपयोगकर्ता एक्सप्रेशन जोड़ें:
  • Send daily reminders
  • Reminder
  • Remind me
  • Updates
  • Upcoming classes
  1. पूरा करना सेक्शन में, इस इंटेंट के लिए वेबहुक कॉल चालू करें विकल्प को टॉगल करें.
  2. पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.

5c70faa02151da0.png

उपयोगकर्ता के फ़ैसले को मैनेज करना

  1. उपयोगकर्ता की ओर से रोज़ाना किए जाने वाले अपडेट की सदस्यता के अनुरोध का जवाब देने के लिए, नया इंटेंट सेट अप करें. नया इंटेंट बनाने के लिए, बाईं ओर मौजूद नेविगेशन में इंटेंट के आगे मौजूद + बटन पर क्लिक करें.
  2. इस नए इंटेंट को नाम दें Confirm Updates.
  3. इवेंट सेक्शन में, actions_intent_REGISTER_UPDATE जोड़ें. यह 'डायलॉगफ़्लो' इवेंट, उपयोगकर्ता के हर दिन के अपडेट की सदस्यता लेने की प्रोसेस को पूरा करने से ट्रिगर होगा. भले ही, उसने सदस्यता ली हो या नहीं.
  4. पूरा करना सेक्शन में, इस इंटेंट के लिए वेबहुक कॉल चालू करें विकल्प को टॉगल करें.
  5. पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.

b871c2bdadac8abc.png

ग्राहक को सामान भेजने की प्रोसेस लागू करना

अपने वेबहुक में सामान भेजने की सुविधा लागू करने के लिए, यह तरीका अपनाएं:

कॉन्टेंट डिपेंडेंसी लोड करना

actions-on-google फ़ाइल से RegisterUpdate पैकेज जोड़ने के लिए, index.js फ़ाइल में require() फ़ंक्शन को अपडेट करें, ताकि आपके इंपोर्ट इस तरह दिखें:

index.js

const {
  dialogflow,
  Suggestions,
  RegisterUpdate,
} = require('actions-on-google');

सुझाव वाले चिप अपडेट करना

B2f84ff91b0e1396.png index.js फ़ाइल में, सुझाव वाले चिप के शीर्षकों की सूची में DAILY एंट्री जोड़ें, ताकि आपके Suggestion की परिभाषा कुछ ऐसी दिखे:

index.js

// Suggestion chip titles
const Suggestion = {
  HOURS: 'Ask about hours',
  CLASSES: 'Learn about classes',
  DAILY: 'Send daily reminders',
};

नए इंटेंट के मुताबिक कार्रवाई जोड़ें

जब उपयोगकर्ता कहता है कि वह सदस्यता लेना चाहता है, तो अपडेट और #39; के टारगेट इंटेंट (क्लास सूची) से RegisterUpdate हेल्पर को कॉल करके, हर दिन अपडेट करने का सदस्यता फ़्लो शुरू करें. इसके बाद, सदस्यता फ़्लो पूरा होने के बाद, Assistant status तर्क के साथ actions_intent_REGISTER_UPDATE इवेंट को ट्रिगर करेगी, जो बताती है कि सदस्यता सफल हुई या नहीं. उपयोगकर्ता को सदस्यता की स्थिति के हिसाब से, आगे की कार्रवाई के लिए सूचना दें.

B2f84ff91b0e1396.png index.js फ़ाइल में यह कोड जोड़ें:

index.js

// Start opt-in flow for daily updates
app.intent('Setup Updates', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'Class List',
    frequency: 'DAILY',
  }));
});

// Confirm outcome of opt-in for daily updates
app.intent('Confirm Updates', (conv, params, registered) => {
  if (registered && registered.status === 'OK') {
     conv.ask(`Gotcha, I'll send you an update everyday with the ` +
     'list of classes. Can I help you with anything else?');
  } else {
    conv.ask(` I won't send you daily reminders. Can I help you with anything else?`);
  }
  if (conv.screen) {
    conv.ask(new Suggestions([Suggestion.HOURS, Suggestion.CLASSES]));
  }
});

उपयोगकर्ता के लिए दूसरे प्रॉम्प्ट ऑफ़र करना

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

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

B2f84ff91b0e1396.png index.js फ़ाइल में, नीचे दिए गए कोड को बदलें:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  const classesMessage =
  `On ${day} we offer the following classes: ${classes}. ` +
  `Can I help you with anything else?`;
  conv.ask(classesMessage);
  if (conv.screen) {
    conv.ask(new Suggestions([Suggestion.HOURS]));
  }
});

साथ बदलें:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
  // If the user started the conversation from the context of a daily update,
  // the conv's arguments will contain an 'UPDATES' section.
  let engagement = conv.arguments.get('UPDATES');
  // Check the conv arguments to tailor the conversation based on the context.
  if (engagement) {
    classesMessage += `Hope to see you soon at Action Gym!`;
    conv.close(classesMessage);
  } else {
    classesMessage += `Would you like me to send you daily reminders of upcoming classes, or can I help you with anything else?`;
    conv.ask(classesMessage);
    if (conv.screen) {
      conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.HOURS]));
    };
  };
});

हर दिन के अपडेट टेस्ट करना

टर्मिनल में, अपडेट किए गए वेबहुक कोड को Firebase में डिप्लॉय करने के लिए यह निर्देश दें:

firebase deploy

ऐक्शन सिम्युलेटर में अपने कस्टम अस्वीकारों की जांच करने के लिए, यह तरीका अपनाएं:

  1. Actions कंसोल में, जांचें पर जाएं.
  2. Talk to my test app इनपुट फ़ील्ड में टाइप करें और Enter दबाएं.
  3. Learn about classes लिखें और Enter दबाएं. आपके Action का # जवाब, अब हर दिन रिमाइंडर भेजने के लिए उपलब्ध होना चाहिए.
  4. Send daily reminders लिखें और Enter दबाएं.
  5. वह समय लिखें जब आप अपडेट देखना चाहते हैं और Enter दबाएं. जांच करने के लिए, मौजूदा समय से 3-5 मिनट बाद जवाब दें.

83a15ecac8c71787.png

आपके मोबाइल डिवाइस पर, आपको अपडेट के लिए तय किए गए समय से पहले Google Assistant से सूचना मिलेगी. ध्यान दें कि इस सूचना को दिखने में कुछ मिनट लग सकते हैं. सूचना पर टैप करें और इसे सीधे Assistant में क्लास सूची इंटेंट से लिंक करना चाहिए. इससे आपको आने वाली क्लास की सूची दिखेगी:

8582482eafc67d5b.png

4. पुश नोटिफ़िकेशन जोड़ें

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

इस कदम में, आप एक और नया क्लास रद्द किया गया इंटेंट जोड़कर और उपयोगकर्ताओं को कक्षा रद्द करने के बारे में सूचना देने के लिए, अपनी कार्रवाई में पुश नोटिफ़िकेशन लागू करने का तरीका जानेंगे. सूचना भेजने के लिए, आपको नीचे दिए गए तीन कॉम्पोनेंट भी सेट अप करने होंगे:

  • कार्रवाइयां एपीआई खाता - आप एपीआई को POST अनुरोध भेजकर, उपयोगकर्ता को सूचनाएं भेजते हैं. इसलिए, आपको इस एपीआई के साथ इंटरफ़ेस के लिए सेवा खाता और क्रेडेंशियल सेट अप करने होंगे.
  • अनुमति देने में मदद करने वाला टूल - उपयोगकर्ता को पुश आईडी भेजने के लिए यूज़र आईडी ऐक्सेस करने की अनुमति ज़रूरी है. इस उदाहरण में, आप अनुमति सहायक को कॉल करने और इस आईडी का अनुरोध करने के लिए, क्लाइंट लाइब्रेरी फ़ंक्शन का इस्तेमाल करेंगे.
  • मेमोरी - बातचीत से बाहर के किसी उपयोगकर्ता को पुश नोटिफ़िकेशन भेजने के लिए, आपको ऐसे उपयोगकर्ता आईडी सेव करने होंगे जिन्हें याद रखा जाए. इस उदाहरण में, आप हर उपयोगकर्ता की जानकारी सेव करने के लिए Firestore डेटाबेस सेट अप करेंगे.

इन निर्देशों का पालन करने के बाद, आप अपनी कार्रवाई के बातचीत में ये डायलॉग शामिल करेंगे:{0}#39:{/1}

7c9d4b633c547823.png

यह उपयोगकर्ताओं को कैसे जोड़ेगा?

स्मार्टफ़ोन के उपयोगकर्ताओं को पुश नोटिफ़िकेशन की जानकारी हो सकती है, जो ऐप्लिकेशन की खास जानकारी और अपडेट के बारे में बताता है. पुश नोटिफ़िकेशन, Assistant के अलावा, दूसरे मोबाइल डिवाइसों पर उपयोगकर्ताओं को ऐक्सेस करने का आसान तरीका है. हालांकि, इसके लिए ज़रूरी है कि उपयोगकर्ताओं को इन्हें चालू करने की सही वजह दी गई हो. हर दिन अपडेट मिलने की वजह से, उपयोगकर्ताओं को पहले से ही यह पता होता है कि उन्हें हर दिन सूचना दी जाएगी. हालांकि, पुश नोटिफ़िकेशन का इस्तेमाल करके, उपयोगकर्ता यह नहीं जान पाते हैं कि वे ##39;कभी-कभी सूचनाएं पाने के लिए ऑप्ट-इन कर रहे हैं या नहीं. साथ ही, उन्हें हर दिन कई तरह की सूचनाएं नहीं मिलेंगी.

पुश नोटिफ़िकेशन, दिलचस्पी दिखाने वाले एक उपयोगी टूल हो सकते हैं, लेकिन ज़रूरी नहीं है कि इन्हें हर कार्रवाई में शामिल किया जाए. किसी कार्रवाई में पुश नोटिफ़िकेशन जोड़ने का फ़ैसला करते समय इन सुझावों पर ध्यान दें:

  • अपनी पुश नोटिफ़िकेशन के लिए शेड्यूल के कुछ उदाहरण बनाएं. अगर आप हर दिन सिर्फ़ एक पुश नोटिफ़िकेशन भेजना चाहते हैं, तो हर दिन अपडेट की सुविधा का इस्तेमाल करें.
  • पक्का करें कि पुश नोटिफ़िकेशन हर बार मिलने पर आपकी काम की जानकारी दे. आपकी सूचनाएं, आपके किसी एक Action'Intents को डीप लिंक भी कर सकती हैं. इसलिए, पक्का करें कि इंटेंट काम का हो और काम का हो.
  • किसी उपयोगकर्ता से पुश नोटिफ़िकेशन पाने की सदस्यता लेने के लिए साफ़ तौर पर कहना. उन्हें यह समझना चाहिए कि हर पुश नोटिफ़िकेशन से क्या उम्मीद की जानी चाहिए. साथ ही, उन्हें यह जानकारी भी होनी चाहिए कि उन्हें सूचनाएं कितनी बार भेजी जाएं.

Actions API चालू करें

  1. Google Cloud Console खोलें और ड्रॉपडाउन में अपने ऐक्शन प्रोजेक्ट का नाम चुनें.

d015c1515b99e3db.png

  1. नेविगेशन मेन्यू में, एपीआई और सेवाएं; लाइब्रेरी पर जाएं.
  2. कार्रवाइयां API खोजें और चालू करें पर क्लिक करें.

6d464f49c88e70b4.png

सेवा खाता बनाना

Actions API के लिए पुष्टि करना ज़रूरी है. इसलिए, अनुरोध भेजने के लिए आपको सेवा खाता बनाना होगा. Actions API के लिए, सेवा खाता कुंजी बनाने और इंस्टॉल करने के लिए यह तरीका अपनाएं:

  1. Google Cloud Console's नेविगेशन मेन्यू (☰) में, एपीआई और एएमपी; सेवाएं > क्रेडेंशियल पर जाएं.
  2. क्रेडेंशियल बनाएं > सेवा खाता कुंजी पर क्लिक करें.
  3. सेवा खाता ड्रॉप-डाउन मेन्यू में, नया सेवा खाता चुनें.
  4. यह जानकारी भरें:
  • सेवा खाते का नाम: service-account
  • भूमिका: प्रोजेक्ट > स्वामी
  • सेवा खाता आईडी: service-account (@<project_id>.iam.gserviceaccount.com के बाद हमेशा)
  • कुंजी का टाइप: JSON
  1. बनाएं पर क्लिक करें.
  2. डाउनलोड की गई JSON फ़ाइल को अपने प्रोजेक्ट की /user-engagement-codelab/start/फ़ंक्शन/ डायरेक्ट्री में ले जाएं.
  3. JSON फ़ाइल का नाम बदलकर service-account.json करें.

d9bd79d35691de3a.png

Firestore चालू करें

बातचीत के बाहर सूचनाएं भेजने के लिए, आपके पास उपयोगकर्ता आईडी सेव करने का एक तरीका होना चाहिए. इसके बारे में ईमेल कोड से बताया जा सकता है. इस उदाहरण के लिए, हम सदस्यता लेने वाले उपयोगकर्ताओं के User-ID को स्टोर करने के लिए Firestore डेटाबेस का इस्तेमाल कर रहे हैं.

अपनी कार्रवाई के लिए Firestore डेटाबेस बनाने के लिए यह तरीका अपनाएं:

  1. Firebase कंसोल में, अपने कार्रवाइयों वाले प्रोजेक्ट का नाम चुनें.
  2. बाईं ओर नेविगेशन में, डेवलप करें; डेटाबेस पर जाएं और डेटाबेस बनाएं पर क्लिक करें.
  3. टेस्ट मोड में शुरू करें चुनें.
  4. चालू करें पर क्लिक करें.

6dfc386413954caa.png

Dialogflow सेट अप करें

पुश नोटिफ़िकेशन ऑप्ट-इन फ़्लो बनाने के लिए, 'डायलॉगफ़्लो कंसोल' में यह तरीका अपनाएं:

उपयोगकर्ता को सदस्यता लेने का संकेत दें

  1. रद्द की गई कक्षाओं के लिए पुश नोटिफ़िकेशन की सदस्यता लेने का अनुरोध करने वाले उपयोगकर्ता को प्रबंधित करने के लिए नया इंटेंट सेट अप करें. 'डायलॉगफ़्लो कंसोल' में, नया इंटेंट बनाने के लिए, बाएं नेविगेशन में इंटेंट के आगे मौजूद + बटन पर क्लिक करें.
  2. इस नए इंटेंट को नाम दें Setup Push Notifications.
  3. ट्रेनिंग वाक्यांशों वाले सेक्शन में जाकर, ये उपयोगकर्ता एक्सप्रेशन जोड़ें:
  • Subscribe to notifications
  • Send notification
  • Notify me
  • Send class notifications
  • Cancelled notifications
  1. पूरा करना सेक्शन में, इस इंटेंट के लिए वेबहुक कॉल चालू करें विकल्प को टॉगल करें.
  2. पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.

3D99bc41d0492552.png

उपयोगकर्ता के फ़ैसले को मैनेज करना

  1. पुश नोटिफ़िकेशन की सदस्यता के अनुरोध के लिए, उपयोगकर्ता के जवाब को मैनेज करने के लिए, एक नया इंटेंट सेट अप करें. नया इंटेंट बनाने के लिए, बाईं ओर मौजूद नेविगेशन में इंटेंट के आगे मौजूद + बटन पर क्लिक करें.
  2. इस नए इंटेंट को नाम दें Confirm Push Notifications.
  3. इवेंट सेक्शन में, actions_intent_PERMISSION जोड़ें. यह Dialogflow इवेंट, उपयोगकर्ता के पुश नोटिफ़िकेशन की सदस्यता के फ़्लो को पूरा करने से ट्रिगर होगा. भले ही, उन्होंने सदस्यता ली हो या नहीं.
  4. पूरा करना सेक्शन में, इस इंटेंट के लिए वेबहुक कॉल चालू करें विकल्प को टॉगल करें.
  5. पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.

d37f550c5e07cb73.png

पुश नोटिफ़िकेशन मैनेज करना

आप अपनी पुश नोटिफ़िकेशन को किसी खास इंटेंट से लिंक कर सकते हैं, ताकि पुश नोटिफ़िकेशन पर टैप करने वाले उपयोगकर्ता, सीधे आपकी कार्रवाई में उस इंटेंट से जुड़े हों. इस उदाहरण में, पुश नोटिफ़िकेशन के लिए एक नया इंटेंट जोड़ें, जो रद्द की गई कक्षाओं के बारे में जानकारी देता है.

जब उपयोगकर्ता किसी पुश नोटिफ़िकेशन पर टैप करे, तो उससे जुड़ा इंटेंट जोड़ने के लिए यह तरीका अपनाएं:

  1. 'डायलॉगफ़्लो कंसोल' में, नया इंटेंट बनाने के लिए, बाएं नेविगेशन में इंटेंट के आगे मौजूद + बटन पर क्लिक करें.
  2. इस नए इंटेंट को नाम दें Class Canceled.
  3. ट्रेनिंग वाक्यांशों वाले सेक्शन में जाकर, Cancelations को उपयोगकर्ता के एक्सप्रेशन के तौर पर जोड़ें.
  4. पूरा करना सेक्शन में, इस इंटेंट के लिए वेबहुक कॉल चालू करें विकल्प को टॉगल करें.
  5. पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.

940379556f559631.png

बातचीत के बीच में होने पर टेस्ट सूचनाएं भेजना

प्रोडक्शन में, आपके पास कार्रवाई को पूरा करने वाले कोड से अलग एक स्क्रिप्ट होनी चाहिए जो पुश नोटिफ़िकेशन को भेजे. इस उदाहरण के लिए, एक इंटेंट बनाएं जिसका इस्तेमाल आप अपनी कार्रवाई से बात करते समय पुश नोटिफ़िकेशन भेजने के लिए कर सकें. यह इंटेंट सिर्फ़ डीबग करने के लिए है. व्यावहारिक तौर पर, पुश नोटिफ़िकेशन को आपकी कार्रवाइयों से नहीं पूरी होनी चाहिए. साथ ही, आपकी कार्रवाई{0/} के बातचीत के हिस्से के तौर पर उन्हें ट्रिगर नहीं करना चाहिए.

पुश नोटिफ़िकेशन का टेस्ट करने का इंटेंट बनाने के लिए, यह तरीका अपनाएं:

  1. जांच करने और डीबग करने के लिए, नया इंटेंट सेट अप करें. इससे आप सदस्यता लेने वाले उपयोगकर्ताओं को पुश नोटिफ़िकेशन भेज पाएंगे. 'डायलॉगफ़्लो कंसोल' में, नया इंटेंट बनाने के लिए, बाएं नेविगेशन में इंटेंट के आगे मौजूद + बटन पर क्लिक करें.
  2. इस नए इंटेंट को नाम दें Test Notification.
  3. ट्रेनिंग वाक्यांशों वाले सेक्शन में जाकर, Test notification को उपयोगकर्ता के एक्सप्रेशन के तौर पर जोड़ें.
  4. पूरा करना सेक्शन में, इस इंटेंट के लिए वेबहुक कॉल चालू करें विकल्प को टॉगल करें.
  5. पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.

6967f5a997643eb8.png

पुश नोटिफ़िकेशन चालू करें

क्लास रद्द किए गए इंटेंट के लिए पुश नोटिफ़िकेशन चालू करने के लिए, यह तरीका अपनाएं:

  1. Dialogflow के कंसोल में, नेविगेशन बार में इंटिग्रेशन पर जाएं.
  2. Google Assistant कार्ड पर, इंटिग्रेशन की सेटिंग पर क्लिक करें.
  3. क्लास रद्द किया गया को इंप्लिसिट शुरू करने वाले इंटेंट के तौर पर जोड़ें. Dialogflow के लिए यह चरण ज़रूरी है, ताकि उपयोगकर्ता यह पहचान सकें कि क्लास रद्द किए गए इंटेंट के साथ आपकी बातचीत शुरू कर सकते हैं (पुश नोटिफ़िकेशन पर टैप करके).
  4. बंद करें पर क्‍लिक करें.

1ac725231ed279a1.png

  1. Actions कंसोल में, डेवलप करें टैब पर क्लिक करें और बाएं नेविगेशन बार में कार्रवाइयां चुनें.
  2. कार्रवाई सूची में, रद्द की गई श्रेणी पर क्लिक करें.
  3. उपयोगकर्ता का जुड़ाव सेक्शन में, क्या आप पुश नोटिफ़िकेशन भेजना चाहते हैं? विकल्प को टॉगल करें.
  4. पुश नोटिफ़िकेशन के बारे में जानकारी देने वाला कॉन्टेंट का शीर्षक सेट करें. संदर्भ दिया गया &क्या कोटेशन होगा? अगर मैं दिखता है और कोटेशन के लिए पुश नोटिफ़िकेशन भेजता हूं, तो क्या यह ठीक रहेगा. इसलिए, ध्यान रखें कि ज़ोर से बोले जाने पर आपका शीर्षक, जानकारी देने वाला और सही, दोनों ही हो. इस उदाहरण के लिए, कॉन्टेंट के शीर्षक को class cancelations पर सेट करें.
  5. पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.

4304c7cd575f6de3.png

ग्राहक को सामान भेजने की प्रोसेस लागू करना

अपने वेबहुक में सामान भेजने की सुविधा लागू करने के लिए, यह तरीका अपनाएं:

कॉन्टेंट डिपेंडेंसी लोड करना

actions-on-google फ़ाइल से UpdatePermission पैकेज जोड़ने के लिए, index.js फ़ाइल में require() फ़ंक्शन को अपडेट करें, ताकि आपके इंपोर्ट इस तरह दिखें:

index.js

const {
  dialogflow,
  Suggestions,
  RegisterUpdate,
  UpdatePermission,
} = require('actions-on-google');

सुझाव वाले चिप अपडेट करना

B2f84ff91b0e1396.png index.js फ़ाइल में, सुझाव वाले चिप के शीर्षकों की सूची में NOTIFICATIONS एंट्री जोड़ें, ताकि आपके Suggestion की परिभाषा कुछ ऐसी दिखे:

index.js

// Suggestion chip titles
const Suggestion = {
  HOURS: 'Ask about hours',
  CLASSES: 'Learn about classes',
  DAILY: 'Send daily reminders',
  NOTIFICATIONS: 'Get notifications',
};

नए इंपोर्ट सेट अप करना

अपने Firestore डेटाबेस से कनेक्ट करने के लिए, firebase-admin पैकेज जोड़ें और डेटाबेस में स्टोर किए गए फ़ील्ड के लिए कॉन्सटेंट जोड़ें. साथ ही, Actions API में पुष्टि करने और अनुरोधों को मैनेज करने के लिए, google-auth-library और request पैकेज इंपोर्ट करें.

B2f84ff91b0e1396.png index.js फ़ाइल में, नीचे दिए गए कोड को अपने इंपोर्ट में जोड़ें:

index.js

// Firebase admin import
const admin = require('firebase-admin');

// Initialize Firestore
admin.initializeApp();
const db = admin.firestore();

// Firestore constants
const FirestoreNames = {
 INTENT: 'intent',
 USER_ID: 'userId',
 USERS: 'users',
};

// Actions API authentication imports
const {auth} = require('google-auth-library');
const request = require('request');

कक्षा की सदस्यता रद्द करने की सूचना सेट अप करने का ऑफ़र

B2f84ff91b0e1396.png index.js फ़ाइल में, नीचे दिए गए कोड को बदलें:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
  // If the user started the conversation from the context of a daily update,
  // the conv's arguments will contain an 'UPDATES' section.
  let engagement = conv.arguments.get('UPDATES');
  // Check the conv arguments to tailor the conversation based on the context.
  if (engagement) {
    classesMessage += `Hope to see you soon at Action Gym!`;
    conv.close(classesMessage);
  } else {
    classesMessage += `Would you like me to send you daily reminders of upcoming classes, or can I help you with anything else?`;
    conv.ask(classesMessage);
    if (conv.screen) {
      conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.HOURS]));
    };
  };
});

साथ बदलें:

index.js

// Class list intent handler
app.intent('Class List', (conv, {day}) => {
  if (!day) {
    day = DAYS[new Date().getDay()];
  }
  const classes =
  [...new Set(schedule.days[day].map((d) => `${d.name} at ${d.startTime}`))]
  .join(', ');
  let classesMessage = `On ${day} we offer the following classes: ${classes}. `;
  // If the user started the conversation from the context of a daily update,
  // the conv's arguments will contain an 'UPDATES' section.
  let engagement = conv.arguments.get('UPDATES');
  // Check the conv arguments to tailor the conversation based on the context.
  if (engagement) {
    classesMessage += `Hope to see you soon at Action Gym!`;
    conv.close(classesMessage);
  } else {
    classesMessage += `Would you like to receive daily reminders of upcoming classes, subscribe to notifications about cancelations, or can I help you with anything else?`;
    conv.ask(classesMessage);
    if (conv.screen) {
      conv.ask(new Suggestions([Suggestion.DAILY, Suggestion.NOTIFICATIONS,
Suggestion.HOURS]));
    };
  };
});

नए इंटेंट के मुताबिक कार्रवाई जोड़ें

जब उपयोगकर्ता कहता है कि वह पुश नोटिफ़िकेशन की सदस्यता लेना चाहता है, तब उपयोगकर्ता से अनुमति पाने के लिए, UpdatePermission हेल्पर को कॉल करें. अगर यह 'सफल होता है, तो conv तर्क को #39; आर्ग्युमेंट में जोड़ा जाएगा. आप इन्हें देख सकते हैं.

उपयोगकर्ता और #39; की अनुमति मिलने के बाद, conv ऑब्जेक्ट' आर्ग्युमेंट के यूज़र आईडी को अपने डेटाबेस में सेव करें. आप बाद में यह उपयोगकर्ता आईडी, कार्रवाई एपीआई को भेजेंगे. इसी से Assistant यह तय करती है कि सूचना किसे मिलेगी.

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

B2f84ff91b0e1396.png index.js फ़ाइल में यह कोड जोड़ें:

index.js

// Call the User Information helper for permission to send push notifications
app.intent('Setup Push Notifications', (conv) => {
 conv.ask('Update permission for setting up push notifications');
 conv.ask(new UpdatePermission({intent: 'Class Canceled'}));
});

// Handle opt-in or rejection of push notifications
app.intent('Confirm Push Notifications', (conv) => {
 if (conv.arguments.get('PERMISSION')) {
   let userId = conv.arguments.get('UPDATES_USER_ID');
   if (!userId) {
     userId = conv.request.conversation.conversationId;
   }
   // Add the current conversation ID and the notification's
   // target intent to the Firestore database.
   return db.collection(FirestoreNames.USERS)
   .add({
     [FirestoreNames.INTENT]: 'Class Canceled',
     [FirestoreNames.USER_ID]: userId,
   })
   .then(() => {
     conv.ask(`Great, I'll notify you whenever there's a class cancelation. ` +
     'Can I help you with anything else?');
   });
 } else {
   conv.ask(`Okay, I won't send you notifications about class cancelations. ` +
     'Can I help you with anything else?');
 }
 if (conv.screen) {
    conv.ask(new Suggestions([Suggestion.CLASSES, Suggestion.HOURS]));
  }
});

// Intent triggered by tapping the push notification
app.intent('Class Canceled', (conv) => {
 conv.ask('Classname at classtime has been canceled.');
});

जांच के लिए सूचनाएं जोड़ना

किसी उपयोगकर्ता को पुश नोटिफ़िकेशन भेजने के लिए, कार्रवाई आईडी को POST आईडी, सूचना और #39; शीर्षक के साथ-साथ टारगेट के इंटेंट के साथ अनुरोध भेजें. इस उदाहरण में, टेस्ट सूचना का इंटेंट ट्रिगर करने पर आपके Firestore डेटाबेस के ज़रिए दोहराया जाएगा और हर उस उपयोगकर्ता को पुश नोटिफ़िकेशन भेजा जाएगा जिसने #39; सूचनाओं की सदस्यता ली है.

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

B2f84ff91b0e1396.png index.js फ़ाइल में यह कोड जोड़ें:

index.js

// Debug intent to trigger a test push notification
app.intent('Test Notification', (conv) => {
 // Use the Actions API to send a Google Assistant push notification.
 let client = auth.fromJSON(require('./service-account.json'));
 client.scopes = ['https://www.googleapis.com/auth/actions.fulfillment.conversation'];
 let notification = {
   userNotification: {
     title: 'Test Notification from Action Gym',
   },
   target: {},
 };
 client.authorize((err, tokens) => {
   if (err) {
     throw new Error(`Auth error: ${err}`);
   }
   // Iterate through Firestore and send push notifications to every user
   // who's currently opted in to canceled class notifications.
   db.collection(FirestoreNames.USERS)
       .where(FirestoreNames.INTENT, '==', 'Class Canceled')
       .get()
       .then((querySnapshot) => {
         querySnapshot.forEach((user) => {
           notification.target = {
             userId: user.get(FirestoreNames.USER_ID),
             intent: user.get(FirestoreNames.INTENT),
           };
           request.post('https://actions.googleapis.com/v2/conversations:send', {
             'auth': {
               'bearer': tokens.access_token,
             },
             'json': true,
             'body': {'customPushMessage': notification, 'isInSandbox': true},
           }, (err, httpResponse, body) => {
             if (err) {
               throw new Error(`API request error: ${err}`);
             }
             console.log(`${httpResponse.statusCode}: ` +
               `${httpResponse.statusMessage}`);
             console.log(JSON.stringify(body));
           });
         });
       })
       .catch((error) => {
         throw new Error(`Firestore query error: ${error}`);
       });
 });
 conv.ask('A notification has been sent to all subscribed users.');
});

अपनी पुश नोटिफ़िकेशन की जांच करना

टर्मिनल में, अपडेट किए गए वेबहुक कोड को Firebase में डिप्लॉय करने के लिए यह निर्देश दें:

firebase deploy

ऐक्शन सिम्युलेटर में सूचनाओं की जांच करने के लिए, यह तरीका अपनाएं:

  1. ऐक्शन कंसोल में, जांच करें टैब पर जाएं.
  2. Talk to my test app इनपुट फ़ील्ड में टाइप करें और Enter दबाएं.
  3. Learn about classes लिखें और Enter दबाएं.
  4. Get notifications लिखें और Enter दबाएं.
  5. अगर आपने पहले से ही अपनी कार्रवाई की अनुमति के लिए पुश नोटिफ़िकेशन भेजने की अनुमति नहीं दी है, तो yes टाइप करें और Enter दबाएं.
  6. yes लिखें और Enter दबाएं. इस कार्रवाई की पुश नोटिफ़िकेशन के लिए अब आपके Google खाते की सदस्यता ली जानी चाहिए.

3a8704bdc0bcbb17.png

  1. बाहर निकलने के लिए, no लिखें और Enter दबाएं.
  2. Talk to my test app टाइप करें और नई बातचीत शुरू करने के लिए, Enter दबाएं.
  3. Test notification लिखें और Enter दबाएं.

634dfcb0be8dfdec.png

कुछ ही मिनटों में, आपको >Action जिम&कोटेशन की सूचना भेजी जाएगी; और Assistant आपके मोबाइल डिवाइस पर पुश नोटिफ़िकेशन देगी. इस सूचना पर टैप करने से, आपको अपनी कार्रवाई के रद्द किए गए क्लास के इंटेंट से लिंक कर दिया जाएगा.

33cbde513c10122e.png

5. Assistant का लिंक बनाना

अब तक हमने {39;यूज़र ऐक्टिविटी की सुविधाओं पर चर्चा की है. इनका इस्तेमाल आप उपयोगकर्ताओं को अपनी कार्रवाई के लिए वापस लाने के लिए कर सकते हैं. हालांकि, ऐसा माना जाता है कि जिन उपयोगकर्ताओं ने आपके ऐक्शन का पता लगाया और उनका इस्तेमाल किया, उन्होंने ऐसा किया.

आप एक Assistant का लिंक बना सकते हैं, जो मोबाइल डिवाइस पर उपयोगकर्ताओं को सीधे Assistant पर आपकी कार्रवाई से जोड़ेगा. Assistant का लिंक एक स्टैंडर्ड हाइपरलिंक होता है. इसलिए, इसे वेबसाइट या सोशल मीडिया पोस्ट जैसी किसी वेब मार्केटिंग कॉन्टेंट में जोड़ा जा सकता है.

इस कदम में, आप जानेंगे कि Assistant का लिंक क्या होता है. ऐक्शन और #39; वेलकम इंटेंट के लिए इसे कैसे बनाया जाए और इसे टेस्ट करने के लिए एक आसान वेबसाइट में कैसे जोड़ा जाए.

यह उपयोगकर्ताओं को कैसे जोड़ेगा?

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

Assistant के लिंक, दर्शकों की दिलचस्पी बढ़ाने वाले टूल के तौर पर काम के हो सकते हैं. इसलिए, अगर आप अपनी वेबसाइट या सोशल मीडिया के ज़रिए अपनी कार्रवाई का विज्ञापन करना चाहते हैं, तो आपको यह लिंक बनाना चाहिए. Assistant का लिंक बनाने और उसे उपलब्ध कराने से पहले, नीचे दी गई सलाहों का ध्यान रखें:

  • आपकी कार्रवाई प्रकाशित होने के बाद ही Assistant लिंक काम करते हैं. अगर आपका प्रोजेक्ट ड्राफ़्ट मोड में है, तो लिंक सिर्फ़ आपके डिवाइस पर ही काम करेगा. किसी और को ऐक्शन डायरेक्ट्री के 404 पेज पर ले जाया जाएगा.
  • आप, प्रकाशित करने से पहले उपयोगकर्ताओं को Assistant के लिंक की जांच करने की अनुमति दे सकते हैं. इसके लिए, आपको ऐल्फ़ा या बीटा एनवायरमेंट में अपनी कार्रवाई रिलीज़ करनी होगी. ध्यान दें कि सिर्फ़ आपके ऐल्फ़ा या बीटा में हिस्सा लेने वाले उपयोगकर्ता, Assistant की मदद से आपके लिंक की जांच कर सकेंगे.
  • पक्का करें कि आपके Assistant लिंक का डेस्टिनेशन इंटेंट, नए उपयोगकर्ताओं के लिए एक अच्छा इंप्रेशन बनाए. आपका वेलकम इंटेंट, Assistant के लिंक का डिफ़ॉल्ट डेस्टिनेशन है. ऐसा इसलिए, क्योंकि यह आपके ऐक्शन को पेश करने के लिए पहले से ही अच्छा काम करता है

वेलकम इंटेंट के लिए, Assistant का लिंक बनाने के लिए यह तरीका अपनाएं:

  1. Actions कंसोल में, डेवलप करें टैब पर क्लिक करें और बाएं नेविगेशन बार में कार्रवाइयां चुनें.
  2. कार्रवाइयां सूची में actions.intent.main पर क्लिक करें.
  3. लिंक सेक्शन में, क्या आप इस कार्रवाई के लिए यूआरएल चालू करना चाहते हैं वाले विकल्प को टॉगल करें.
  4. अपनी कार्रवाई के बारे में जानकारी देने वाला लिंक शीर्षक तय करें. शीर्षक को इस तरह इस्तेमाल करें कि क्रिया को बेहतर तरीके से समझने के लिए, कार्रवाई के तौर पर उपयोगकर्ता का क्या इस्तेमाल किया जा सकता है. इस उदाहरण के लिए, लिंक का शीर्षक को learn about Action Gym पर सेट करें.
  5. इस पेज के निचले हिस्से से एचटीएमएल स्निपेट कॉपी करें और उसे बाद में देखने के लिए सेव करें.
  6. पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.

55341b8102b71eab.png

टेस्ट वेबसाइट डिप्लॉय करना

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

/user-engagement-codelab-nodejs/start/public/ को आपकी फ़ुलफ़िलमेंट की डायरेक्ट्री पर जाएं और टेक्स्ट फ़ाइल में index.html फ़ाइल खोलें.

B2f84ff91b0e1396.png index.html फ़ाइल में, मुख्य हिस्से में अपना Assistant लिंक और #39; का एचटीएमएल स्निपेट चिपकाएं. फ़ाइल, नीचे दिए गए स्निपेट की तरह दिखनी चाहिए:

index.html

<body>
    <p>
     <a href="https://assistant.google.com/services/invoke/uid/000000efb5f2fd97">🅖 Ask my test app to learn about Action Gym
     </a>
    </p>
</body>

टर्मिनल में, टेस्ट करने वाली वेबसाइट को Firebase पर डिप्लॉय करने के लिए यह निर्देश दें:

firebase deploy

डिप्लॉयमेंट निर्देश पूरा होने के बाद, आउटपुट में होस्टिंग यूआरएल का ध्यान रखें.

b01e8d322fb5d623.png

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

599845d647f5b624.png

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

6. अगले चरण

बधाई हो!

अब आप #39; किसी कार्रवाई को डेवलप करते समय उपयोगकर्ता के जुड़ाव की अहमियत, प्लैटफ़ॉर्म पर उपयोगकर्ता के लिए दिलचस्पी से जुड़ी सुविधाएं, और हर सुविधा को किसी कार्रवाई में जोड़ने के तरीके के बारे में जान चुके हैं.

सीखने के लिए अन्य संसाधन

अपनी कार्रवाई के लिए उपयोगकर्ता के जुड़ाव के बारे में ज़्यादा जानने के लिए इन संसाधनों को देखें:

हमारे नए एलानों के बारे में जानने के लिए, Twitter @ActionsGoogle पर हमें फ़ॉलो करें और #AoGDevs को ट्वीट करके अपनी राय शेयर करें!

सुझाव सर्वे

जाने से पहले, कृपया यह फ़ॉर्म भरें और हमें बताएं कि हम कैसा काम कर रहे हैं!