1. खास जानकारी
Actions on Google एक डेवलपर प्लैटफ़ॉर्म है. इसकी मदद से सॉफ़्टवेयर बनाकर, स्मार्ट स्पीकर, फ़ोन, कार, टीवी, हेडफ़ोन वगैरह जैसे एक अरब से ज़्यादा डिवाइसों पर, Google Assistant और Google की वर्चुअल पर्सनल असिस्टेंट की सुविधाओं का इस्तेमाल किया जा सकता है. लोग किराने का सामान खरीदने या राइड बुक करने जैसे काम पूरे करने के लिए, Assistant से बातचीत करते हैं. (कौनसी कार्रवाइयां की जा सकती हैं, इस बारे में पूरी सूची देखने के लिए, कार्रवाई डायरेक्ट्री देखें.) डेवलपर के तौर पर, आपके पास Actions on Google का इस्तेमाल करने का विकल्प है. इसकी मदद से, उपयोगकर्ताओं और तीसरे पक्ष के बीच बातचीत का बेहतर और असरदार अनुभव आसानी से बनाया और मैनेज किया जा सकता है.
यह एक ऐडवांस कोडलैब मॉड्यूल है. यह उन पाठकों के लिए है जिन्हें Google Assistant के लिए कार्रवाइयाँ बनाने का थोड़ा-बहुत अनुभव है. अगर आपके पास Actions on Google को डेवलप करने का कोई अनुभव नहीं है, तो हमारा सुझाव है कि आप हमारे शुरुआती कोडलैब ( लेवल 1, लेवल 2, और लेवल 3) का पालन करके इस प्लैटफ़ॉर्म के बारे में अच्छे से जानें. ये ऐडवांस मॉड्यूल आपको कई सुविधाओं के बारे में जानकारी देंगे. इनसे आपको Action बढ़ाने और दर्शकों की संख्या बढ़ाने में मदद मिलेगी.
किसी कार्रवाई की सफलता का आकलन करने का एक अहम तरीका है, उपयोगकर्ता का जुड़ाव या यह कार्रवाई उपयोगकर्ताओं को उनके पहले इंटरैक्शन के बाद वापस लाने में कितनी असरदार है. इसे आसान बनाने के लिए, आपने Action में ऐसी कई सुविधाएँ लागू की हैं जिनसे उपयोगकर्ताओं को आपकी बातचीत में वापस आने का रास्ता मिल जाएगा.
कोडलैब में, Actions on Google के लिए उपयोगकर्ता की दिलचस्पी बढ़ाने से जुड़ी सुविधाओं और सबसे सही तरीकों के बारे में जानकारी दी गई है.
आपको क्या बनाना होगा
पहले से मौजूद सुविधा को इन कामों के लिए चालू करके, उसे बेहतर बनाया जा सकता है:
- उपयोगकर्ताओं को एक दिन का अपडेट भेजें, जिस पर टैप करके वे आपकी कार्रवाई से बात कर सकें
- उपयोगकर्ताओं को पुश नोटिफ़िकेशन भेजें, जो आपकी कार्रवाई से जुड़े हों
- उपयोगकर्ताओं को किसी मोबाइल वेब ब्राउज़र से आपकी कार्रवाई पर ले जाने वाला लिंक बनाएं
आपको क्या सीखने को मिलेगा
- उपयोगकर्ता का जुड़ाव क्या है और किसी कार्रवाई की सफलता के लिए यह क्यों ज़रूरी है
- उपयोगकर्ता का जुड़ाव बढ़ाने के लिए किसी कार्रवाई में बदलाव करने का तरीका
- अलग-अलग तरह की कार्रवाइयों में उपयोगकर्ता की दिलचस्पी बढ़ाने वाली किन सुविधाओं का इस्तेमाल करना है
- Assistant के ज़रिए सूचनाएँ भेजने के लिए, Actions API का इस्तेमाल कैसे करें
आपको किन चीज़ों की ज़रूरत होगी
आपके पास नीचे दिए गए टूल होने चाहिए:
- आपकी पसंद का IDE/टेक्स्ट एडिटर. जैसे, WebStorm, Atom या Sublime
- Node.js, npm, और git के साथ शेल कमांड चलाने के लिए टर्मिनल
- कोई वेब ब्राउज़र, जैसे कि Google Chrome
- Firebase कमांड-लाइन इंटरफ़ेस वाला लोकल डेवलपमेंट एनवायरमेंट
- आपके पास Assistant की सुविधा वाला मोबाइल डिवाइस (Android या iOS) होना चाहिए. आपको Assistant में उसी Google खाते से साइन इन करना होगा जिसका इस्तेमाल इस प्रोजेक्ट को बनाने के लिए किया जाएगा.
वेबहुक कोड को समझने के लिए, हम आपको JavaScript (ES6) के बारे में जानकारी देने की सलाह देते हैं. हालांकि, ऐसा करना ज़रूरी नहीं है.
2. अपना प्रोजेक्ट सेट अप करना
इस सेक्शन में, पहले से बने किसी ऐक्शन में, उपयोगकर्ता की दिलचस्पी बढ़ाने वाली सुविधाओं को जोड़ने का तरीका बताया गया है.
सैंपल को समझना
इस कोडलैब का सैंपल, "ऐक्शन जिम" नाम के एक काल्पनिक जिम के लिए एक आसान ऐक्शन है. Action, जिम के बारे में जानकारी देता है. इसमें उन क्लास की सूची भी शामिल है जो हर दिन बदलती हैं. जानकारी देने वाली कार्रवाई, जैसे कि यह कार्रवाई, उपयोगकर्ता की दिलचस्पी बढ़ाने वाली सभी सुविधाओं के लिए सही हो सकती है. इसकी वजह यह है कि अलग-अलग क्लास की सूची से हर दिन अलग-अलग काम की जानकारी मिलती है.
यहां दिए गए डायग्राम में, Action Gym के सैंपल का बातचीत का फ़्लो दिखाया गया है:
उपयोगकर्ताओं की दिलचस्पी बढ़ाने के लिए जोड़ी गई सुविधाओं के हिसाब से, डायलॉग बॉक्स में मामूली बदलाव किए जाएंगे. हालांकि, बातचीत के डिज़ाइन में ज़्यादा बदलाव नहीं होगा.
अपनी बुनियादी फ़ाइलें डाउनलोड करें
कोडलैब के लिए GitHub रिपॉज़िटरी का क्लोन बनाने के लिए, नीचे दिया गया कमांड चलाएं:
git clone https://github.com/actions-on-google/user-engagement-codelab-nodejs
अपना प्रोजेक्ट और एजेंट सेट अप करें
अपना Actions प्रोजेक्ट और Dialogflow एजेंट सेट अप करने के लिए, यह तरीका अपनाएं:
- कार्रवाइयां कंसोल खोलें.
- नया प्रोजेक्ट पर क्लिक करें.
- किसी प्रोजेक्ट का नाम टाइप करें, जैसे कि
engagement-codelab
. - प्रोजेक्ट बनाएं पर क्लिक करें.
- कोई कैटगरी चुनने के बजाय, नीचे स्क्रोल करके ज़्यादा विकल्प सेक्शन पर जाएं. इसके बाद, बातचीत कार्ड पर क्लिक करें.
- विकल्पों को बड़ा करने के लिए, अपनी कार्रवाई बनाएं पर क्लिक करें और कार्रवाई(कार्रवाइयां) जोड़ें चुनें.
- अपनी पहली कार्रवाई जोड़ें पर क्लिक करें.
- कार्रवाई बनाएं डायलॉग पर, कस्टम इंटेंट चुनें और फिर Dialogflow कंसोल को लॉन्च करने के लिए बिल्ड पर क्लिक करें.
- Dialogflow कंसोल के एजेंट बनाने वाले पेज में, बनाएं पर क्लिक करें.
- बाएं नेविगेशन पर (गीयर आइकॉन) पर क्लिक करें.
- एक्सपोर्ट और इंपोर्ट करें पर क्लिक करें. इसके बाद, ज़िप से इंपोर्ट करें पर क्लिक करें.
- पहले डाउनलोड की गई
/user-engagement-codelab-nodejs/start/
डायरेक्ट्री सेagent.zip
फ़ाइल अपलोड करें. RESTORE
टाइप करें और वापस लाएं पर क्लिक करें.- हो गया पर क्लिक करें.
ग्राहक को प्रॉडक्ट भेजने के लिए डिप्लॉय करें
अब आपका Actions प्रोजेक्ट और Dialogflow एजेंट तैयार हैं, इसलिए Firebase फ़ंक्शन सीएलआई का इस्तेमाल करके अपनी लोकल index.js
फ़ाइल डिप्लॉय करें.
अपनी बेस फ़ाइलों के क्लोन की /user-engagement-codelab-nodejs/start/functions/
डायरेक्ट्री से, ये निर्देश चलाएं:
firebase use <PROJECT_ID>
npm install
firebase deploy
कुछ मिनट बाद, आपको "डिप्लॉय पूरा हो गया!" दिखेगा. इससे पता चलता है कि आपने Firebase के लिए अपना वेबहुक डिप्लॉय कर लिया है.
डिप्लॉयमेंट यूआरएल वापस पाना
आपको क्लाउड फ़ंक्शन के लिए, Dialogflow के साथ यूआरएल उपलब्ध कराना होगा. इस यूआरएल को वापस पाने के लिए, यह तरीका अपनाएं:
- Firebase कंसोल खोलें.
- विकल्पों की सूची में से अपना ऐक्शन प्रोजेक्ट चुनें.
- डेवलप करें > फ़ंक्शन का इस्तेमाल करें. अगर आपको "डेटा शेयर करने की सेटिंग चुनें" का विकल्प दिखता है, तो इसे बाद में करें पर क्लिक करके, इस विकल्प को अनदेखा किया जा सकता है.
- डैशबोर्ड टैब में, आपको "ग्राहक को आइटम भेजने" की जानकारी दिखेगी ताकि ट्रिगर के तहत यूआरएल हो. इस यूआरएल को सेव करें; आपको अगले सेक्शन में, इसे Dialogflow में कॉपी करना होगा.
Dialogflow में वेबहुक यूआरएल सेट करें
अब आपको काम पूरा करने के लिए अपने वेबहुक का इस्तेमाल करने के लिए, अपने Dialogflow एजेंट को अपडेट करना होगा. ऐसा करने के लिए, यह तरीका अपनाएं:
- Dialogflow कंसोल खोलें (अगर आप चाहें, तो Firebase कंसोल बंद कर सकते हैं).
- बाएं नेविगेशन में, ग्राहक को आइटम भेजें पर क्लिक करें.
- वेबहुक चालू करें.
- अगर Firebase डैशबोर्ड से कॉपी किया गया यूआरएल पहले से नहीं दिखता है, तो उसे चिपकाएं.
- सेव करें पर क्लिक करें.
पुष्टि करना कि आपका प्रोजेक्ट सही तरीके से सेट अप किया गया है
ऐसा होना चाहिए कि लोग, Action Gym के बारे में जानकारी पाने के लिए, आपका Action शुरू कर सकें. इसमें, कारोबार के खुले होने के समय के साथ हार्ड कोड किया गया जवाब और हफ़्ते के हर दिन के लिए क्लास का शेड्यूल बताने वाला टेक्स्ट जवाब शामिल होना चाहिए.
ऐक्शन सिम्युलेटर में, अपनी कार्रवाई की जांच करने के लिए:
- Dialogflow कंसोल के बाईं ओर मौजूद नेविगेशन में, इंटिग्रेशन पर क्लिक करें > Google Assistant.
- पक्का करें कि अपने-आप होने वाले बदलावों की झलक दिखाने की सुविधा चालू हो. साथ ही, अपने Actions प्रोजेक्ट को अपडेट करने के लिए, जांच करें पर क्लिक करें.
- ऐक्शन सिम्युलेटर, आपके ऐक्शन प्रोजेक्ट को लोड करता है. अपनी सेट की गई कार्रवाई की जांच करने के लिए, इनपुट फ़ील्ड में
Talk to my test app
टाइप करें और Enter दबाएं. - ऐक्शन जिम में आपका स्वागत करने के लिए, आपको एक जवाब दिखेगा. बातचीत जारी रखने के लिए, दिए गए निर्देशों का पालन करें. साथ ही, यह पक्का करें कि ग्राहक को आइटम भेजने वाले हर इनपुट का जवाब मौजूद हो.
3. रोज़ाना अपडेट होने वाली सदस्यताएं जोड़ें
उपयोगकर्ताओं से जुड़ने का एक सामान्य तरीका यह है कि आप उन्हें जानकारी तब दें जब वह सबसे ज़्यादा काम की हो. इसके लिए, उपयोगकर्ताओं को किसी इंटेंट के ज़रिए रोज़ अपडेट होने की सदस्यता लेने का विकल्प दिया जाता है. इससे उन्हें Assistant को एक सूचना भेजी जाती है जो सीधे तौर पर उस इंटेंट के पूरा होने पर ले जाती है.
इस चरण में, आपको रोज़ाना अपडेट होने वाली सदस्यताओं के बारे में जानकारी मिलेगी. साथ ही, उन्हें अपने ऐक्शन के लिए, क्लास लिस्ट इंटेंट में जोड़ने का तरीका भी बताया जाएगा. इन निर्देशों का पालन करने के बाद, आपकी सेट की गई कार्रवाई की बातचीत इस डायग्राम की तरह दिखेगी:
इससे उपयोगकर्ता कैसे जुड़ेंगे?
स्मार्टफ़ोन का इस्तेमाल करने वाले लोगों को शायद पुश नोटिफ़िकेशन के बारे में पता होगा, जिनमें ऐप्लिकेशन से जुड़ी खास जानकारी और अपडेट मिलते हैं. रोज़ाना अपडेट होने वाली सदस्यताओं की मदद से, Assistant के अलावा दूसरे मोबाइल डिवाइसों पर भी लोगों को आसानी से ऐक्सेस किया जा सकता है. हालांकि, इसके लिए ज़रूरी है कि जिस मकसद से अपडेट भेजे जा रहे हैं उससे उपयोगकर्ताओं को हर दिन काम के नतीजे मिलते रहें.
हर दिन मिलने वाले अपडेट, दर्शकों की दिलचस्पी बढ़ाने के लिए मददगार टूल हो सकते हैं. हालांकि, यह ज़रूरी नहीं है कि उन्हें हर कार्रवाई में शामिल किया जाए. किसी कार्रवाई में, रोज़ाना अपडेट होने वाली सदस्यताओं को जोड़ना है या नहीं, यह तय करते समय इन सुझावों को ध्यान में रखें:
- पक्का करें कि रोज़ होने वाले अपडेट की वजह से, लोगों को हर दिन अलग और काम की जानकारी दिखे. अगर हर दिन किसी अपडेट पर टैप करने से, आपको हर बार एक ही प्रॉम्प्ट दिखता है, तो हो सकता है कि उपयोगकर्ता कुछ दिन बाद सदस्यता छोड़ दे.
- अगर आपके उपयोगकर्ता सीधे आपके रोज़ाना के अपडेट के इंटेंट पर जाते हैं, तो पक्का करें कि आपका डायलॉग उन्हें समझ में आए. यह ज़रूरी नहीं है कि आपका उपयोगकर्ता बातचीत के शुरू से ही शुरू करे. इसलिए, यह उम्मीद नहीं की जानी चाहिए कि वह व्यक्ति बातचीत के बारे में ज़्यादा जानकारी दे रहा है.
- उपयोगकर्ता को हर दिन के अपडेट की सदस्यता लेने का संकेत देने से पहले, उन्हें अपनी कार्रवाई के फ़ायदे दिखाएं. आपके उपयोगकर्ता को यह सोचना चाहिए कि "मुझे यह कॉन्टेंट हर दिन चाहिए" तो उन्हें सदस्यता लेने का विकल्प दिया जाता है.
- सदस्यता लेने के लिए बार-बार सुझाव देने वाले उपयोगकर्ताओं को परेशान न करें. लोगों को यह बताने के तुरंत बाद कि वे किस चीज़ की सदस्यता लेना चाहते हैं, हर दिन के अपडेट की सदस्यता ऑफ़र करें. साथ ही, इस बारे में उन्हें किसी दूसरी जगह पर परेशान करने से बचें.
- अपडेट का इंटेंट ट्रिगर होने के बाद, बातचीत को छोटा रखें. ज़्यादातर रोज़ाना अपडेट के लिए सिर्फ़ एक जवाब मिलना चाहिए. इसके बाद, उपयोगकर्ता के इनपुट की ज़रूरत नहीं होनी चाहिए.
रोज़ाना अपडेट पाने की सुविधा चालू करें
हर दिन के अपडेट की सदस्यताओं को वेलकम इंटेंट में जोड़ा जा सकता है, जो लोगों को आपकी बातचीत की शुरुआत में दिखाता है. इसके अलावा, सदस्यताओं को खास तौर पर बनाए रखने के लिए भी जोड़ा जा सकता है, ताकि उन्हें बातचीत में किसी जगह से डीप लिंक किया जा सके. इस कोडलैब के लिए, क्लास सूची का इंटेंट सबसे सही है, क्योंकि डायलॉग हर दिन बदलते रहेंगे. इससे उपयोगकर्ताओं को यह याद रखने में मदद मिल सकती है कि कौनसी क्लास उपलब्ध हैं.
क्लास सूची इंटेंट के लिए रोज़ाना के अपडेट चालू करने के लिए यह तरीका अपनाएं:
- Actions कंसोल में, डेवलप करें टैब पर क्लिक करें और बाएं नेविगेशन बार में कार्रवाइयां चुनें.
- कार्रवाई सूची के तहत क्लास सूची पर क्लिक करें.
- उपयोगकर्ता का जुड़ाव सेक्शन में, क्या आप उपयोगकर्ताओं को हर दिन के अपडेट देना चाहते हैं विकल्प को टॉगल करें.
- कॉन्टेंट का ऐसा टाइटल सेट करें जिससे रोज़ के अपडेट की जानकारी मिलती हो. संदर्भ यह होगा: "आपको रोज़ाना <content title> कितने बजे भेजूँ", इसलिए देख लें कि आपका टाइटल पूरा होने के साथ-साथ उसके बारे में पूरी जानकारी देता हो और उसे तेज़ आवाज़ में सुना जा रहा हो. इस उदाहरण के लिए, कॉन्टेंट के टाइटल को
list of upcoming Action Gym classes
पर सेट करें. - पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.
Dialogflow को सेट अप करें
हर दिन अपडेट होने वाले सदस्यता फ़्लो के इंटेंट बनाने के लिए, Dialogflow कंसोल में यह तरीका अपनाएं:
उपयोगकर्ता से सदस्यता लेने के लिए अनुरोध करना
- रोज़ के अपडेट की सदस्यता लेने का अनुरोध करने वाले उपयोगकर्ता को मैनेज करने के लिए, एक नया इंटेंट सेट अप करें. Dialogflow कंसोल में, नया इंटेंट बनाने के लिए, बाईं ओर मौजूद नेविगेशन में इंटेंट के बगल में मौजूद + बटन पर क्लिक करें.
- इस नए इंटेंट को
Setup Updates
नाम दें. - ट्रेनिंग के लिए वाक्यांश सेक्शन में, ये यूज़र एक्सप्रेशन जोड़ें:
Send daily reminders
Reminder
Remind me
Updates
Upcoming classes
- ग्राहक को आइटम भेजना सेक्शन में जाकर, इस इंटेंट के लिए वेबहुक कॉल चालू करें विकल्प को टॉगल करें.
- पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.
लोगों के फ़ैसले को मैनेज करना
- हर दिन अपडेट होने वाले सदस्यता के अनुरोध पर, उपयोगकर्ता के जवाब को मैनेज करने के लिए एक नया इंटेंट सेट अप करें. बाईं ओर मौजूद नेविगेशन में, इंटेंट के बगल में मौजूद + बटन पर क्लिक करके नया इंटेंट बनाएं.
- इस नए इंटेंट को
Confirm Updates
नाम दें. - इवेंट सेक्शन में,
actions_intent_REGISTER_UPDATE
जोड़ें. यह डायलॉग बॉक्स, उपयोगकर्ता के हर दिन अपडेट होने वाले सदस्यता फ़्लो को पूरा करने पर ट्रिगर होगा. भले ही, उन्होंने सदस्यता ली हो या नहीं. - ग्राहक को आइटम भेजना सेक्शन में जाकर, इस इंटेंट के लिए वेबहुक कॉल चालू करें विकल्प को टॉगल करें.
- पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.
ग्राहक को आइटम भेजने के लिए लागू करें
अपने वेबहुक में ग्राहक को आइटम भेजने के लिए, यह तरीका अपनाएं:
डिपेंडेंसी लोड करना
index.js
फ़ाइल में, actions-on-google
पैकेज से RegisterUpdate
पैकेज जोड़ने के लिए require()
फ़ंक्शन को अपडेट करें, ताकि इंपोर्ट कुछ इस तरह दिखें:
index.js
const {
dialogflow,
Suggestions,
RegisterUpdate,
} = require('actions-on-google');
सुझाव वाले चिप अपडेट करना
index.js
फ़ाइल में, सुझाव वाले चिप के टाइटल की सूची में DAILY
एंट्री जोड़ें, ताकि आपकी Suggestion
परिभाषा कुछ इस तरह दिखे:
index.js
// Suggestion chip titles
const Suggestion = {
HOURS: 'Ask about hours',
CLASSES: 'Learn about classes',
DAILY: 'Send daily reminders',
};
नए इंटेंट के लिए फ़ुलफ़िलमेंट जोड़ें
जब उपयोगकर्ता कहता है कि वह सदस्यता लेना चाहता है, तो अपडेट के टारगेट इंटेंट (क्लास की सूची) और टाइप (DAILY
) के साथ RegisterUpdate
हेल्पर को कॉल करके, रोज़ाना अपडेट की सदस्यता लेने का फ़्लो शुरू करें. सदस्यता की प्रोसेस पूरी होने के बाद, Assistant actions_intent_REGISTER_UPDATE
इवेंट को status
आर्ग्युमेंट के साथ ट्रिगर करती है. इस आर्ग्युमेंट में बताया जाता है कि सदस्यता पूरी हुई या नहीं. उपयोगकर्ता को फ़ॉलो-अप प्रॉम्प्ट दिखाएं. ये अनुरोध, सदस्यता की स्थिति के हिसाब से बदलते रहते हैं.
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
सेक्शन शामिल किया गया है. इस सेक्शन से यह पता चलता है कि उपयोगकर्ता ने बातचीत शुरू करने के लिए, हर दिन मिलने वाले अपडेट की सूचना दी है. इसके बाद, जवाब को उसी हिसाब से बदला जा सकता है. बातचीत की इस ब्रांच का इस्तेमाल करके, क्लास की सूची देने के तुरंत बाद डायलॉग बंद किया जा सकता है. यह हर दिन के अपडेट को छोटा रखने का सबसे सही तरीका है.
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 कंसोल में, जांच करें पर जाएं.
- इनपुट फ़ील्ड में
Talk to my test app
टाइप करें और Enter दबाएं. Learn about classes
लिखें और Enter दबाएं. आपके Action से मिले जवाब में अब आपको रोज़ाना रिमाइंडर भेजने की सुविधा मिलेगी.Send daily reminders
लिखें और Enter दबाएं.- वह समय लिखें जब आपको अपडेट देखना है. इसके बाद, Enter दबाएं. जांच करने के लिए, मौजूदा समय से तीन से पांच मिनट बाद जवाब दें.
अपने मोबाइल डिवाइस पर, Assistant से उस समय के बारे में सूचना मिलेगी जो आपने अपडेट के लिए तय किया था. ध्यान दें कि यह सूचना दिखने में कुछ मिनट लग सकते हैं. सूचना पर टैप करें. इसके बाद, यह Assistant में मौजूद क्लास की सूची इंटेंट से सीधे डीप लिंक हो जाएगा. इससे आपको आगे होने वाली क्लास की सूची मिल जाएगी:
4. पुश नोटिफ़िकेशन जोड़ें
अपनी कार्रवाई के बाहर उपयोगकर्ताओं से जुड़ने के दूसरे विकल्प के तौर पर, आप उपयोगकर्ताओं को पुश नोटिफ़िकेशन भेजने के लिए Actions API को कॉल कर सकते हैं. रोज़ाना मिलने वाले अपडेट के उलट, Assistant इन सूचनाओं को अपने-आप शेड्यूल नहीं करती, इसलिए इन्हें अपनी मर्ज़ी से भेजा जा सकता है.
इस चरण में, आपको यह जानकारी मिलेगी कि अपनी कार्रवाई में पुश नोटिफ़िकेशन कैसे लागू करें. इसके लिए, आपको क्लास रद्द किया गया इंटेंट जोड़ने का तरीका पता चलेगा. साथ ही, यह भी पता चलेगा कि उपयोगकर्ताओं को क्लास रद्द होने की सूचना देने वाले उपयोगकर्ताओं को सूचनाएं कैसे भेजी जाती हैं. आपको सूचनाएं भेजने के लिए ज़रूरी तीन कॉम्पोनेंट भी सेट अप करने होंगे:
- कार्रवाइयां API खाता - आप एपीआई को
POST
अनुरोध भेजकर उपयोगकर्ता को सूचनाएं भेजते हैं, इसलिए इस एपीआई के साथ इंटरफ़ेस करने के लिए आपको एक सेवा खाता और क्रेडेंशियल सेट अप करने होंगे. - अनुमतियों में मदद करने वाला पेज - आपको उपयोगकर्ता आईडी को ऐक्सेस करने के लिए, उपयोगकर्ता की अनुमति लेनी होगी. यह अनुमति उन्हें पुश नोटिफ़िकेशन भेजने के लिए होती है. इस उदाहरण में, अनुमति हेल्पर को कॉल करने और इस आईडी का अनुरोध करने के लिए, क्लाइंट लाइब्रेरी फ़ंक्शन का इस्तेमाल किया जा सकता है.
- स्टोरेज - किसी उपयोगकर्ता को बातचीत के बाहर पुश नोटिफ़िकेशन भेजने के लिए, आपको यूज़र आईडी को किसी ऐसी जगह पर स्टोर करना होगा जिसे अपनी इच्छा से वापस लिया जा सके. इस उदाहरण में, हर उपयोगकर्ता के लिए जानकारी स्टोर करने के लिए, आप Firestore डेटाबेस सेट अप करेंगे.
इन निर्देशों का पालन करने के बाद, आपको Action की बातचीत में यह डायलॉग जोड़ना होगा:
इससे उपयोगकर्ता कैसे जुड़ेंगे?
स्मार्टफ़ोन का इस्तेमाल करने वाले लोगों को शायद पुश नोटिफ़िकेशन के बारे में पता होगा, जिनमें ऐप्लिकेशन से जुड़ी खास जानकारी और अपडेट मिलते हैं. पुश नोटिफ़िकेशन की मदद से, Assistant के अलावा दूसरे मोबाइल डिवाइसों पर भी लोगों को आसानी से ऐक्सेस किया जा सकता है. हालांकि, अगर इसके लिए ज़रूरी है कि उपयोगकर्ताओं को इस सुविधा का इस्तेमाल करने की कोई वजह दी गई हो. उपयोगकर्ताओं को हर दिन के अपडेट के बारे में पहले से ही पता होता है कि उन्हें हर दिन सूचना दी जाएगी. हालांकि, पुश नोटिफ़िकेशन की मदद से उपयोगकर्ताओं को यह पता नहीं होता कि वे बार-बार सूचनाएं पाने के लिए ऑप्ट-इन कर रहे हैं या नहीं या उन्हें हर दिन कई सूचनाएं भेजी जाएंगी.
पुश नोटिफ़िकेशन, दर्शकों की दिलचस्पी बढ़ाने के लिए उपयोगी टूल हो सकते हैं. हालांकि, यह ज़रूरी नहीं है कि उन्हें हर कार्रवाई में शामिल किया जाए. किसी कार्रवाई में पुश नोटिफ़िकेशन जोड़ने हैं या नहीं, यह तय करते समय इन सुझावों को ध्यान में रखें:
- पुश नोटिफ़िकेशन के लिए, उदाहरण के तौर पर कुछ शेड्यूल प्लान करें. अगर आपको एक दिन में सिर्फ़ एक पुश नोटिफ़िकेशन भेजना है, तो रोज़ के अपडेट देने के बजाय इनका इस्तेमाल करें.
- पक्का करें कि आपके पुश नोटिफ़िकेशन मिलने पर, वे हर बार काम की जानकारी दें. सूचनाएं, आपकी सेट की गई कार्रवाई के किसी एक इंटेंट से डीप लिंक भी कर सकती हैं, इसलिए पक्का करें कि यह इंटेंट, काम का और काम का हो.
- किसी उपयोगकर्ता को पुश नोटिफ़िकेशन की सदस्यता लेने के लिए कहते समय, साफ़ तौर पर जानकारी दें. उन्हें यह समझना चाहिए कि हर पुश नोटिफ़िकेशन से क्या उम्मीद की जानी चाहिए. साथ ही, उन्हें यह भी पता होना चाहिए कि सूचनाएं कितनी बार भेजी जाती हैं.
Actions API को चालू करना
- Google Cloud Console खोलें और ड्रॉपडाउन में, ऐक्शन प्रोजेक्ट का नाम चुनें.
- नेविगेशन मेन्यू (☰) में, एपीआई और सेवाएं > लाइब्रेरी पर टैप करें.
- कार्रवाइयां API खोजें और चालू करें पर क्लिक करें.
सेवा खाता बनाना
Actions API को पुष्टि करने की ज़रूरत है. इसलिए, अनुरोध भेजने के लिए आपको सेवा खाता बनाना होगा. Actions API के लिए सेवा खाता कुंजी बनाने और इंस्टॉल करने के लिए, यह तरीका अपनाएं:
- Google Cloud Console के नेविगेशन मेन्यू (☰) में, एपीआई और सेवाएं > क्रेडेंशियल.
- क्रेडेंशियल बनाएं > पर क्लिक करें सेवा खाते की कुंजी.
- सेवा खाता ड्रॉप-डाउन मेन्यू में, नया सेवा खाता चुनें.
- नीचे दी गई जानकारी भरें:
- सेवा खाते का नाम:
service-account
- भूमिका: प्रोजेक्ट > डिवाइस का मालिक
- सेवा खाता आईडी:
service-account
(इसके बाद हमेशा @<project_id>.iam.gserviceaccount.com) आता है - कुंजी किस तरह की है: JSON
- बनाएं पर क्लिक करें.
- डाउनलोड की गई JSON फ़ाइल को अपने प्रोजेक्ट की /user-engagement-codelab/start/functions/ डायरेक्ट्री में ले जाएं.
- JSON फ़ाइल का नाम बदलकर
service-account.json
करें.
Firestore को चालू करें
बातचीत के बाहर सूचनाएं भेजने के लिए, आपके पास यूज़र आईडी सेव करने का तरीका होना चाहिए, जिसका रेफ़रंस आपके सूचना कोड से दिया जा सके. उदाहरण के लिए, जिन उपयोगकर्ताओं ने सदस्यता ली हुई है उनके यूज़र आईडी सेव करने के लिए, हम Firestore डेटाबेस का इस्तेमाल कर रहे हैं.
अपने ऐक्शन के लिए Firestore डेटाबेस बनाने के लिए यह तरीका अपनाएं:
- Firebase कंसोल में, अपने ऐक्शन प्रोजेक्ट का नाम चुनें.
- बाएं नेविगेशन में, डेवलप > डेटाबेस पर जाएं और डेटाबेस बनाएं पर क्लिक करें.
- टेस्ट मोड में चालू करें को चुनें.
- चालू करें पर क्लिक करें.
Dialogflow को सेट अप करें
पुश नोटिफ़िकेशन ऑप्ट-इन फ़्लो बनाने के लिए, Dialogflow कंसोल में यह तरीका अपनाएं:
उपयोगकर्ता से सदस्यता लेने के लिए अनुरोध करना
- रद्द की गई क्लास के लिए पुश नोटिफ़िकेशन की सदस्यता लेने का अनुरोध करने वाले उपयोगकर्ता को मैनेज करने के लिए, एक नया इंटेंट सेट अप करें. Dialogflow कंसोल में, नया इंटेंट बनाने के लिए, बाईं ओर मौजूद नेविगेशन में इंटेंट के बगल में मौजूद + बटन पर क्लिक करें.
- इस नए इंटेंट को
Setup Push Notifications
नाम दें. - ट्रेनिंग के लिए वाक्यांश सेक्शन में, ये यूज़र एक्सप्रेशन जोड़ें:
Subscribe to notifications
Send notification
Notify me
Send class notifications
Cancelled notifications
- ग्राहक को आइटम भेजना सेक्शन में जाकर, इस इंटेंट के लिए वेबहुक कॉल चालू करें विकल्प को टॉगल करें.
- पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.
लोगों के फ़ैसले को मैनेज करना
- पुश नोटिफ़िकेशन की सदस्यता लेने के अनुरोध पर उपयोगकर्ता के जवाब को मैनेज करने के लिए, एक नया इंटेंट सेट अप करें. बाईं ओर मौजूद नेविगेशन में, इंटेंट के बगल में मौजूद + बटन पर क्लिक करके नया इंटेंट बनाएं.
- इस नए इंटेंट को
Confirm Push Notifications
नाम दें. - इवेंट सेक्शन में,
actions_intent_PERMISSION
जोड़ें. यह डायलॉग बॉक्स, उपयोगकर्ता के पुश नोटिफ़िकेशन की सदस्यता लेने की प्रोसेस पूरी होने पर ट्रिगर होगा. भले ही, उसने सदस्यता ली हो या नहीं. - ग्राहक को आइटम भेजना सेक्शन में जाकर, इस इंटेंट के लिए वेबहुक कॉल चालू करें विकल्प को टॉगल करें.
- पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.
पुश नोटिफ़िकेशन को मैनेज करना
अपने पुश नोटिफ़िकेशन को किसी खास इंटेंट से लिंक किया जा सकता है, ताकि पुश नोटिफ़िकेशन पर टैप करने वाले लोग, आपकी सेट की गई कार्रवाई में सीधे उस इंटेंट से डीप लिंक हो जाएं. इस उदाहरण में, पुश नोटिफ़िकेशन के लिए एक नया इंटेंट जोड़ें. इससे, रद्द की गई क्लास के बारे में जानकारी मिलती है.
अगर कोई उपयोगकर्ता किसी पुश नोटिफ़िकेशन पर टैप करे, तो ट्रिगर ट्रिगर करने के लिए यह तरीका अपनाएं:
- Dialogflow कंसोल में, नया इंटेंट बनाने के लिए, बाईं ओर मौजूद नेविगेशन में इंटेंट के बगल में मौजूद + बटन पर क्लिक करें.
- इस नए इंटेंट को
Class Canceled
नाम दें. - ट्रेनिंग वाक्यांश सेक्शन में,
Cancelations
को उपयोगकर्ता एक्सप्रेशन के तौर पर जोड़ें. - ग्राहक को आइटम भेजना सेक्शन में जाकर, इस इंटेंट के लिए वेबहुक कॉल चालू करें विकल्प को टॉगल करें.
- पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.
बातचीत के बीच में टेस्ट सूचनाएं भेजना
प्रोडक्शन में, आपके पास ऐक्शन फ़ुलफ़िलमेंट कोड से अलग कोई स्क्रिप्ट होनी चाहिए जो पुश नोटिफ़िकेशन भेजता है. इस उदाहरण के लिए, एक ऐसा इंटेंट बनाएं जिसे कार्रवाई के दौरान बात करते समय पुश नोटिफ़िकेशन भेजने के लिए शुरू किया जा सके. इस इंटेंट का मकसद सिर्फ़ डीबग करना है; व्यावहारिक तौर पर, पुश नोटिफ़िकेशन को आपके ग्राहक को आइटम भेजने के लिए हैंडल नहीं किया जाना चाहिए या उन्हें आपकी सेट की गई कार्रवाई की बातचीत के तौर पर ट्रिगर नहीं किया जाना चाहिए.
पुश नोटिफ़िकेशन की जांच करने के लिए इंटेंट बनाने के लिए, यह तरीका अपनाएं:
- जांच करने और डीबग करने के लिए, एक नया इंटेंट सेट अप करें. इससे आपको उन लोगों को पुश नोटिफ़िकेशन भेजने की सुविधा मिलेगी जिन्होंने सदस्यता ली हुई है. Dialogflow कंसोल में, नया इंटेंट बनाने के लिए, बाईं ओर मौजूद नेविगेशन में इंटेंट के बगल में मौजूद + बटन पर क्लिक करें.
- इस नए इंटेंट को
Test Notification
नाम दें. - ट्रेनिंग वाक्यांश सेक्शन में,
Test notification
को उपयोगकर्ता एक्सप्रेशन के तौर पर जोड़ें. - ग्राहक को आइटम भेजना सेक्शन में जाकर, इस इंटेंट के लिए वेबहुक कॉल चालू करें विकल्प को टॉगल करें.
- पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.
पुश नोटिफ़िकेशन चालू करें
क्लास रद्द किया गया इंटेंट के लिए, पुश नोटिफ़िकेशन चालू करने के लिए यह तरीका अपनाएं:
- Dialogflow कंसोल में, नेविगेशन बार में इंटिग्रेशन पर जाएं.
- Google Assistant कार्ड में इंटिग्रेशन सेटिंग पर क्लिक करें.
- क्लास को रद्द किया गया को न्योते की वजह के तौर पर जोड़ें. ऐसा करना ज़रूरी है, ताकि Dialogflow यह पहचान कर सके कि उपयोगकर्ता क्लास रद्द की गई इंटेंट (किसी पुश नोटिफ़िकेशन पर टैप करके) के साथ आपकी बातचीत शुरू कर सकते हैं.
- बंद करें पर क्लिक करें.
- Actions कंसोल में, डेवलप करें टैब पर क्लिक करें और बाएं नेविगेशन बार में कार्रवाइयां चुनें.
- कार्रवाई सूची में, क्लास रद्द की गई पर क्लिक करें.
- उपयोगकर्ता का जुड़ाव सेक्शन में, क्या आपको पुश नोटिफ़िकेशन भेजना है? विकल्प को टॉगल करें.
- कॉन्टेंट का ऐसा टाइटल सेट करें जिससे पुश नोटिफ़िकेशन के बारे में जानकारी मिले. संदर्भ यह होगा: "क्या यह ठीक है अगर मैं <content title> के लिए पुश नोटिफ़िकेशन भेजूं," इसलिए पक्का करें कि आपका टाइटल, पूरी जानकारी देने वाला हो और तेज़ आवाज़ में सुना जा रहा हो. इस उदाहरण के लिए, कॉन्टेंट के टाइटल को
class cancelations
पर सेट करें. - पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.
ग्राहक को आइटम भेजने के लिए लागू करें
अपने वेबहुक में ग्राहक को आइटम भेजने के लिए, यह तरीका अपनाएं:
डिपेंडेंसी लोड करना
index.js
फ़ाइल में, actions-on-google
पैकेज से UpdatePermission
पैकेज जोड़ने के लिए require()
फ़ंक्शन को अपडेट करें, ताकि इंपोर्ट कुछ इस तरह दिखें:
index.js
const {
dialogflow,
Suggestions,
RegisterUpdate,
UpdatePermission,
} = require('actions-on-google');
सुझाव वाले चिप अपडेट करना
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
पैकेज को इंपोर्ट करें.
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');
क्लास रद्द करने की सूचनाएं सेट अप करने का ऑफ़र
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
इंटेंट के लिए, फ़ुलफ़िलमेंट जोड़ें. इस उदाहरण में आपका जवाब एक प्लेसहोल्डर स्ट्रिंग है. हालांकि, इस कार्रवाई के प्रोडक्शन के लिए तैयार वर्शन में, सूचना की स्क्रिप्ट इस बारे में ज़्यादा डाइनैमिक जानकारी देगी कि किस क्लास को रद्द किया गया है.
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 डेटाबेस से फिर से शुरू होगी. साथ ही, वह हर उस उपयोगकर्ता को पुश नोटिफ़िकेशन भेजेगा जिसने सूचनाएं पाने की सदस्यता ली है.
याद रखें कि इस उदाहरण में, वह कोड शामिल किया जा रहा है जो आपके वेबहुक फ़ुलफ़िलमेंट में पुश नोटिफ़िकेशन भेजता है. साथ ही, आपकी बातचीत में टेस्ट इंटेंट शुरू करके उस कोड को ट्रिगर किया जा रहा है. आपको जिन कार्रवाइयों को पब्लिश करना है उनमें आपका पुश नोटिफ़िकेशन कोड, ग्राहक को आइटम भेजने वाली किसी स्क्रिप्ट से अलग होना चाहिए.
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
ऐक्शन सिम्युलेटर में सूचनाओं की जांच करने के लिए, यह तरीका अपनाएं:
- Actions कंसोल में, जांच करें टैब पर जाएं.
- इनपुट फ़ील्ड में
Talk to my test app
टाइप करें और Enter दबाएं. Learn about classes
लिखें और Enter दबाएं.Get notifications
लिखें और Enter दबाएं.- अगर आपने पुश नोटिफ़िकेशन भेजने के लिए, ऐक्शन को पहले से अनुमति नहीं दी है, तो
yes
टाइप करें और Enter दबाएं. yes
लिखें और Enter दबाएं. इस कार्रवाई के लिए पुश नोटिफ़िकेशन पाने के लिए, अब आपके Google खाते की सदस्यता लेनी होगी.
no
लिखें और बाहर निकलने के लिए Enter दबाएं.- नई बातचीत शुरू करने के लिए,
Talk to my test app
लिखें और Enter दबाएं. Test notification
लिखें और Enter दबाएं.
कुछ ही मिनटों में आपको "ऐक्शन जिम से टेस्ट सूचना" मिलेगी आपके मोबाइल डिवाइस पर Assistant पुश नोटिफ़िकेशन. इस सूचना पर टैप करने से, आपको अपनी कार्रवाई के क्लास रद्द किए गए इंटेंट से डीप लिंक कर दिया जाएगा.
5. Assistant के लिए लिंक बनाएँ
अभी तक हमने यूज़र ऐक्टिविटी से जुड़ी उन सुविधाओं के बारे में चर्चा की है जिन्हें अपने उपयोगकर्ताओं को कार्रवाई में वापस लाने के लिए लागू किया जा सकता है. हालांकि, इनका इस्तेमाल ऐसे उपयोगकर्ताओं के लिए किया जाता है जो आपकी कार्रवाई को खोजते और उसका इस्तेमाल करते हैं.
आप एक Assistant लिंक बना सकते है, जो मोबाइल डिवाइस पर उपयोगकर्ताओं को सीधे आपकी Assistant पर कार्रवाई से जोड़ देगा. Assistant का लिंक एक स्टैंडर्ड हाइपरलिंक है. इसे किसी वेबसाइट या वेब मार्केटिंग के कॉन्टेंट, जैसे कि ब्लॉग या सोशल मीडिया पोस्ट में जोड़ा जा सकता है.
इस चरण में आपको यह जानकारी मिलेगी कि Assistant लिंक क्या होता है, कार्रवाई के वेलकम इंटेंट के लिए लिंक कैसे बनाया जाता है, और इसे टेस्ट करने के लिए किसी आसान वेबसाइट पर कैसे जोड़ा जाता है.
इससे उपयोगकर्ता कैसे जुड़ेंगे?
उपयोगकर्ताओं को पहली बार आपकी सेट की गई कार्रवाई पर आकर्षित करना चुनौती भरा हो सकता है. खास तौर पर, ऐसा तब होता है, जब उन्हें साफ़ तौर पर Assistant पर आपकी सेट की गई कार्रवाई को शुरू करने की ज़रूरत होती है. Assistant का लिंक, लोगों को आपके सेट किए गए ऐक्शन का लिंक देकर इस समस्या को कम करता है. जब कोई उपयोगकर्ता Assistant की सुविधा वाले डिवाइस पर Assistant के लिंक को फ़ॉलो करता है, तो उसे सीधे आपकी सेट की गई कार्रवाई पर ले जाया जाता है. जब कोई उपयोगकर्ता किसी ऐसे डिवाइस या किसी ऐसे डिवाइस पर आपका लिंक खोलता है जिस पर Assistant काम नहीं करती, तो उसे आपकी कार्रवाई डायरेक्ट्री सूची (अगर यह प्रकाशित हो चुकी है) पर ले जाया जाएगा, ताकि लिंक से अब भी उन उपयोगकर्ताओं को आपकी कार्रवाई की जानकारी मिल सके.
Assistant के लिंक, दर्शकों की दिलचस्पी बढ़ाने के लिए मददगार टूल हो सकते हैं. इसलिए, अगर आपको अपनी वेबसाइट या सोशल मीडिया के ज़रिए, Action का विज्ञापन करना है, तो आपको एक लिंक बनाना चाहिए. Assistant का लिंक बनाने और उसे लोगों तक पहुंचाने से पहले, नीचे दी गई सलाह को ध्यान में रखें:
- आपकी सेट की गई कार्रवाई के पब्लिश होने के बाद ही, Assistant के लिंक काम करते हैं. जब आपका प्रोजेक्ट ड्राफ़्ट की स्थिति में होता है, तो लिंक सिर्फ़ आपके डिवाइसों पर काम करेगा. किसी भी दूसरे व्यक्ति को ऐक्शन डायरेक्ट्री में 404 पेज पर ले जाया जाएगा.
- उपयोगकर्ताओं को, पब्लिश करने से पहले किसी Assistant लिंक की जांच करने की अनुमति दी जा सकती है. ऐसा करने के लिए, किसी ऐल्फ़ा या बीटा एनवायरमेंट में कार्रवाई को रिलीज़ करें. ध्यान दें कि सिर्फ़ वे लोग आपके Assistant लिंक की जाँच कर पाएंगे जो आपके ऐल्फ़ा या बीटा प्रोग्राम में हिस्सा ले रहे हैं.
- पक्का करें कि Assistant लिंक का डेस्टिनेशन इंटेंट, नए उपयोगकर्ताओं पर पहली बार में ही अच्छी छाप छोड़ता है. Assistant के लिंक के लिए आपका वेलकम इंटेंट, डिफ़ॉल्ट डेस्टिनेशन है, क्योंकि इसे आपकी सेट की गई कार्रवाई के बारे में अच्छे से बताया जा सकता है
Assistant लिंक चालू करें
वेलकम इंटेंट के लिए Assistant का लिंक बनाने के लिए, यह तरीका अपनाएं:
- Actions कंसोल में, डेवलप करें टैब पर क्लिक करें और बाएं नेविगेशन बार में कार्रवाइयां चुनें.
- actions.intent.MAIN सूची में जाकर, actions.intent.MAIN पर क्लिक करें.
- लिंक सेक्शन में, क्या आपको इस कार्रवाई के लिए कोई यूआरएल चालू करना है विकल्प को टॉगल करें.
- आपकी कार्रवाई के बारे में बताने वाला लिंक टाइटल सेट करें. अपने शीर्षक को आसान क्रिया-संज्ञा की जोड़ी बनाएं जो बताए कि उपयोगकर्ता आपकी कार्रवाई से क्या कर सकता है. इस उदाहरण के लिए, लिंक के टाइटल को
learn about Action Gym
पर सेट करें. - इस पेज में नीचे से एचटीएमएल स्निपेट को कॉपी करें और बाद के लिए सेव करें.
- पेज में सबसे ऊपर मौजूद, सेव करें पर क्लिक करें.
टेस्ट वेबसाइट डिप्लॉय करना
Assistant के लिंक की जाँच करने के लिए Firebase टूल का इस्तेमाल करके, ग्राहक को आइटम भेजने के साथ-साथ टेस्ट वेबसाइट को डिप्लॉय किया जा सकता है. इस उदाहरण के लिए हमने पहले ही एक आसान टेस्ट वेबसाइट बनाई है. आपको बस अपना Assistant लिंक जोड़ना होगा.
ऑर्डर पूरा करने की /user-engagement-codelab-nodejs/start/public/
डायरेक्ट्री पर जाएं और index.html
फ़ाइल को टेक्स्ट एडिटर में खोलें.
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>
Assistant लिंक की जाँच करें
टर्मिनल में, अपनी टेस्ट वेबसाइट को Firebase पर डिप्लॉय करने के लिए, यह निर्देश चलाएं:
firebase deploy
डिप्लॉयमेंट कमांड का इस्तेमाल हो जाने के बाद, आउटपुट में दिए गए होस्टिंग यूआरएल पर ध्यान दें.
अपने मोबाइल डिवाइस के वेब ब्राउज़र में इस यूआरएल पर जाएं. आपको अपनी टेस्ट वेबसाइट पर Assistant का लिंक दिखेगा. अपने मोबाइल डिवाइस पर इस लिंक पर क्लिक करके, Assistant में सेट किए गए ऐक्शन के लिए वेलकम इंटेंट पर जाया जा सकता है.
आप डेस्कटॉप ब्राउज़र से होस्टिंग यूआरएल पर भी जा सकते हैं. इससे आपको Assistant की डायरेक्ट्री में 404 कोड वाला पेज मिलेगा, क्योंकि आपकी कार्रवाई प्रकाशित नहीं हुई है.
6. अगले चरण
बधाई हो!
अब आपने कार्रवाई को डेवलप करते समय उपयोगकर्ता के जुड़ाव की अहमियत के बारे में जान लिया है. साथ ही, यह भी जान लिया है कि प्लैटफ़ॉर्म पर उपयोगकर्ता के जुड़ाव की कौनसी सुविधाएं उपलब्ध हैं और किसी कार्रवाई में हर सुविधा को कैसे जोड़ा जाता है.
सीखने के लिए कुछ और संसाधन
आपकी कार्रवाई के लिए उपयोगकर्ता के जुड़ाव के बारे में ज़्यादा जानने के लिए इन संसाधनों को एक्सप्लोर करें:
- उपयोगकर्ता का जुड़ाव और Assistant के लिंक के दस्तावेज़: इस कोडलैब और उपयोगकर्ता के जुड़ाव के बारे में आम तौर पर बताई गई सुविधाओं पर आधिकारिक Actions on Google दस्तावेज़.
- उपयोगकर्ता को अपने साथ जोड़े रखने से जुड़े आंकड़े: Actions कंसोल में, आंकड़े देखने की सुविधा के लिए दस्तावेज़. इसमें यह जानकारी मिलती है कि आपकी पब्लिश की गई कार्रवाई के लिए, उपयोगकर्ता को अपने साथ जोड़े रखना कितना ज़रूरी है.
- बातचीत वाले डिज़ाइन के लिए दिशा-निर्देश: उपयोगकर्ताओं की दिलचस्पी बढ़ाने वाली सुविधाएं डिज़ाइन करने के सबसे सही तरीके और दिशा-निर्देश.
- कार्रवाइयां on Google GitHub रेपो: सैंपल कोड और लाइब्रेरी.
- r/GoogleAssistantDev: Assistant के साथ काम करने वाले डेवलपर के लिए आधिकारिक Reddit कम्यूनिटी.
हमारी नई सूचनाओं के साथ बने रहने के लिए, Twitter @ActionsOnGoogle पर हमें फ़ॉलो करें. साथ ही, आपने जो बनाया है उसे शेयर करने के लिए #AoGDevs पर ट्वीट करें!
राय जानने के लिए सर्वे
आगे बढ़ने से पहले, कृपया यह फ़ॉर्म भरें और हमें बताएं कि आपको हमारा काम कैसा लगा!