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

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

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

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

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

इस कोडलैब में, उपयोगकर्ता की दिलचस्पी बढ़ाने वाली सुविधाओं और Actions on Google के सबसे सही तरीकों के बारे में बताया गया है.

a3fc0061bd01a75.png 961ef6e27dc73da2.png

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

इस सुविधा को चालू करके, पहले से बनी हुई सुविधा को बेहतर बनाया जा सकेगा. ऐसा इन कामों को करके किया जा सकेगा:

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

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

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

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

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

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

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

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

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

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

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

इस डायग्राम में, Action Gym के सैंपल के बातचीत वाले फ़्लो को दिखाया गया है:

e2d6e4ad98948cf3.png

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

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

कोड लैब के लिए, GitHub repository को क्लोन करने के लिए यह कमांड चलाएं:

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

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

Actions प्रोजेक्ट और Dialogflow एजेंट को सेट अप करने के लिए, यह तरीका अपनाएं:

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

फ़ुलफ़िलमेंट को डिप्लॉय करना

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

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

firebase use <PROJECT_ID>
npm install
firebase deploy

कुछ मिनट बाद, आपको "Deploy complete!" दिखेगा. इसका मतलब है कि आपने वेबुक को Firebase पर डिप्लॉय कर दिया है.

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

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

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

1741a329947975db.png

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

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

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

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

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

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

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

60acf1ff87b1a87f.png

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

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

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

f48891c8118f7436.png

इससे उपयोगकर्ताओं की दिलचस्पी कैसे बढ़ेगी?

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

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

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

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

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

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

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

c00885cc30e14d68.png

Dialogflow सेट अप करना

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

उपयोगकर्ता को सदस्यता लेने के लिए सूचना देना

  1. रोज़ाना अपडेट पाने के लिए सदस्यता लेने का अनुरोध करने वाले उपयोगकर्ता को जवाब देने के लिए, नया इंटेंट सेट अप करें. Dialogflow कंसोल में, बाईं ओर मौजूद नेविगेशन में इंटेंट के बगल में मौजूद + बटन पर क्लिक करके, नया इंटेंट बनाएं.
  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 जोड़ें. यह Dialogflow इवेंट तब ट्रिगर होगा, जब उपयोगकर्ता रोज़ाना अपडेट पाने के लिए सदस्यता लेने की प्रोसेस पूरी कर लेगा. इससे कोई फ़र्क़ नहीं पड़ता कि उसने सदस्यता ली है या नहीं.
  4. फ़ुलफ़िलमेंट सेक्शन में जाकर, इस इंटेंट के लिए वेबुक कॉल चालू करें विकल्प को टॉगल करें.
  5. पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.

b871c2bdadac8abc.png

ऑर्डर पूरा करने की सुविधा लागू करना

अपने वेबुक में फ़ुलफ़िलमेंट लागू करने के लिए, यह तरीका अपनाएं:

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

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

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',
};

नए इंटेंट के लिए फ़ुलफ़िलमेंट जोड़ना

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

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

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

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

83a15ecac8c71787.png

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

8582482eafc67d5b.png

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

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

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

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

इन निर्देशों का पालन करने के बाद, आपको अपनी कार्रवाई की बातचीत में यह डायलॉग जोड़ना होगा:

7c9d4b633c547823.png

इससे उपयोगकर्ताओं की दिलचस्पी कैसे बढ़ेगी?

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

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

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

Actions API चालू करना

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

d015c1515b99e3db.png

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

6d464f49c88e70b4.png

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

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

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

d9bd79d35691de3a.png

Firestore चालू करना

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

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

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

6dfc386413954caa.png

Dialogflow सेट अप करना

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

उपयोगकर्ता को सदस्यता लेने के लिए सूचना देना

  1. रद्द की गई क्लास के लिए पुश नोटिफ़िकेशन पाने की सुविधा की सदस्यता लेने का अनुरोध करने वाले उपयोगकर्ता को जवाब देने के लिए, नया इंटेंट सेट अप करें. Dialogflow कंसोल में, बाईं ओर मौजूद नेविगेशन में इंटेंट के बगल में मौजूद + बटन पर क्लिक करके, नया इंटेंट बनाएं.
  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. Dialogflow कंसोल में, बाईं ओर मौजूद नेविगेशन में इंटेंट के बगल में मौजूद + बटन पर क्लिक करके, नया इंटेंट बनाएं.
  2. इस नए इंटेंट का नाम Class Canceled रखें.
  3. ट्रेनिंग फ़्रेज़ सेक्शन में जाकर, Cancelations को उपयोगकर्ता के एक्सप्रेशन के तौर पर जोड़ें.
  4. फ़ुलफ़िलमेंट सेक्शन में जाकर, इस इंटेंट के लिए वेबुक कॉल चालू करें विकल्प को टॉगल करें.
  5. पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.

940379556f559631.png

बातचीत के बीच में टेस्ट नोटिफ़िकेशन भेजना

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

पुश नोटिफ़िकेशन की जांच करने के लिए, इंटेंट बनाने का तरीका यहां दिया गया है:

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

6967f5a997643eb8.png

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

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

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

1ac725231ed279a1.png

  1. Actions console में, Develop टैब पर क्लिक करें. इसके बाद, बाईं ओर मौजूद नेविगेशन बार में Actions चुनें.
  2. कार्रवाइयां सूची में जाकर, क्लास रद्द की गई पर क्लिक करें.
  3. उपयोगकर्ता की दिलचस्पी सेक्शन में जाकर, क्या आपको पुश नोटिफ़िकेशन भेजने हैं? विकल्प को टॉगल करें.
  4. कॉन्टेंट का ऐसा टाइटल सेट करें जिससे पुश नोटिफ़िकेशन के बारे में पूरी जानकारी मिलती हो. कॉन्टेक्स्ट यह होगा: "क्या मैं <content title> के लिए पुश नोटिफ़िकेशन भेजूँ?". इसलिए, पक्का करें कि आपके टाइटल में ज़्यादा जानकारी शामिल हो और उसे ज़ोर से पढ़ने पर वह सही लगे. उदाहरण के लिए, कॉन्टेंट का टाइटल को class cancelations पर सेट करें.
  5. पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.

4304c7cd575f6de3.png

ऑर्डर पूरा करने की सुविधा लागू करना

अपने वेबुक में फ़ुलफ़िलमेंट लागू करने के लिए, यह तरीका अपनाएं:

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

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

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 हेल्पर को कॉल करके उपयोगकर्ता से अनुमति मांगें. अगर ऐसा हो जाता है, तो PERMISSION आर्ग्युमेंट को conv ऑब्जेक्ट के आर्ग्युमेंट में जोड़ दिया जाएगा. बातचीत को आगे बढ़ाने के लिए, इसे देखा जा सकता है.

उपयोगकर्ता की अनुमति मिलने के बाद, conv ऑब्जेक्ट के आर्ग्युमेंट से उपयोगकर्ता आईडी लें और उसे अपने डेटाबेस में सेव करें. बाद में, आपको इस यूज़र आईडी को Actions API को भेजना होगा. इससे 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.');
});

टेस्ट सूचनाएं जोड़ना

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

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

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. Actions console में, जांच करें टैब पर जाएं.
  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

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

33cbde513c10122e.png

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

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

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

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

इससे उपयोगकर्ताओं की दिलचस्पी कैसे बढ़ेगी?

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

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

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

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

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

55341b8102b71eab.png

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

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

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

b2f84ff91b0e1396.png index.html फ़ाइल में, Assistant के लिंक के एचटीएमएल स्निपेट को बॉडी एलिमेंट में चिपकाएं. फ़ाइल कुछ इस तरह दिखनी चाहिए:

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. अगले चरण

बधाई हो!

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

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

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

हमारे नए अपडेट पाने के लिए, हमें Twitter पर @ActionsOnGoogle पर फ़ॉलो करें. साथ ही, आपने जो भी बनाया है उसे शेयर करने के लिए, #AoGDevs पर ट्वीट करें!

राय जानने के लिए सर्वे

जाने से पहले, कृपया यह फ़ॉर्म भरें और हमें बताएं कि आप हमारी सेवाओं से कितने संतुष्ट हैं!