पुश नोटिफ़िकेशन

आपका सेट किया गया ऐक्शन, ज़रूरत के समय उपयोगकर्ताओं को पुश नोटिफ़िकेशन भेज सकता है, जैसे कि टास्क को पूरा करने की तय तारीख पास होने पर रिमाइंडर भेजना.

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

इस्तेमाल किए जा सकने वाले प्लैटफ़ॉर्म

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

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

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

अपनी प्रोफ़ाइल बनाना शुरू करें

इन सेक्शन में, Action में पुश नोटिफ़िकेशन सेट अप करने का तरीका बताया गया है.

ट्रिगर करने के लिए एक इंटेंट बनाएं

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

  1. ऐक्शन कंसोल पर जाएं और सबसे ऊपर मौजूद मेन्यू में, डेवलप करें पर क्लिक करें.
  2. सेक्शन को बड़ा करने के लिए, बाईं ओर मौजूद मेन्यू में इंटेंट पर क्लिक करें.
  3. सूची के सबसे नीचे मौजूद पर क्लिक करें और नए इंटेंट के लिए कोई नाम डालें.
  4. नया इंटेंट बनाने के लिए, Enter/Return दबाएं.
  5. सूचनाओं के फ़्लो को ट्रिगर करने के लिए, ट्रेनिंग वाले वाक्यांश जोड़ें. इसके कुछ उदाहरण यहां दिए गए हैं:

    • Notify me
    • Send notifications
    • Subscribe to notifications
  6. सेव करें पर क्लिक करें.

सिस्टम इंटेंट पर ट्रांज़िशन

Notifications सिस्टम सीन पर ट्रांज़िशन सेट अप करने के लिए, यह तरीका अपनाएं:

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

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

सिस्टम सीन कॉन्फ़िगर करें

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

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

  4. ऑप्ट-इन करने के अनुरोध को पसंद के मुताबिक बनाएं के लिए, ऐसा प्रॉम्प्ट डालें जो उपयोगकर्ताओं को तब दिखे, जब उन्हें पुश नोटिफ़िकेशन की सदस्यता लेने के लिए कहा जाए. प्रॉम्प्ट इस तरह का होता है, "क्या मैं $prompt के लिए पुश नोटिफ़िकेशन भेजूं".

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

ऑप्ट-इन कॉन्फ़िगर करें

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

  1. सीन में, सूचनाएं सिस्टम सीन चुनें.
  2. शर्तें सेक्शन में जाकर, अगर उपयोगकर्ता का जवाब "हां" है, तो चुनें.
  3. अपने वेबहुक को कॉल करें सुविधा को चालू करें और इवेंट हैंडलर का नाम डालें, जैसे कि subscribe_to_notifications.
  4. प्रॉम्प्ट भेजें को चालू करें और उपयोगकर्ता को यह बताने के लिए कि उन्हें सूचनाएं भेजी जाएंगी, एक आसान सा प्रॉम्प्ट दें:

    candidates:
    - first simple:
      variants:
      - speech: 'Great, I'll send you notifications.'
    
  5. ट्रांज़िशन में, किसी उपयोगकर्ता के सूचनाओं की सदस्यता लेने के बाद बातचीत खत्म करने के लिए, बातचीत खत्म करें को चुनें.

ऑप्ट-आउट कॉन्फ़िगर करें

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

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

    candidates:
    - first simple:
      variants:
      - speech: Okay, I won't send you notifications.
    
  3. ट्रांज़िशन में, किसी उपयोगकर्ता के सूचनाओं से ऑप्ट आउट करने के बाद बातचीत खत्म करने के लिए, बातचीत खत्म करें को चुनें.

वेबहुक कॉन्फ़िगर करें

अपने वेबहुक को कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:

  1. अपने वेबहुक में, updatesUserId को स्टोर करने के लिए इंटेंट हैंडलर जोड़ें:

    app.handle('subscribe_to_notifications', conv => {
      const intentName = '<name_of_intent_to_trigger>';
      const notificationsSlot = conv.session.params['NotificationSlot_${intentName}'];
      if(notificationsSlot.permissionStatus == 'PERMISSION_GRANTED') {
        const updateUserId = notificationsSlot.additionalUserData.updateUserId;
        // Store the user ID and the notification's target intent for later use.
        // (Use a database, like Firestore, for best practice.)
      }
    });
    

सूचनाएं भेजें

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

इसके बाद, Google OAuth2 क्लाइंट लाइब्रेरी का इस्तेमाल करके, सेवा खाते की कुंजी को ऐक्सेस टोकन से बदला जा सकता है. साथ ही, Actions API पर अपने अनुरोधों की पुष्टि करने के लिए टोकन का इस्तेमाल किया जा सकता है.

सेवा खाते की कुंजी पाएं

  1. Google API कंसोल पर जाएं और कोई प्रोजेक्ट चुनें ड्रॉपडाउन से अपना प्रोजेक्ट चुनें.
  2. अपने प्रोजेक्ट के लिए Actions API चालू करने के लिए, चालू करें पर क्लिक करें.
  3. Google Cloud Console के क्रेडेंशियल पेज पर जाएं और कोई प्रोजेक्ट चुनें ड्रॉपडाउन से अपना प्रोजेक्ट चुनें.
  4. क्रेडेंशियल बनाएं > सेवा खाता.
  5. सेवा खाते का नाम डालें और बनाएं पर क्लिक करें.
  6. भूमिका चुनें ड्रॉपडाउन से, प्रोजेक्ट > मालिक.
  7. जारी रखें पर क्लिक करें.
  8. सेवा खाते की JSON फ़ाइल डाउनलोड करने के लिए, कुंजी बनाएं पर क्लिक करें.

ऐक्सेस टोकन पाने के लिए कुंजी बदलें और इसकी सूचना भेजें

Actions API की मदद से पुश नोटिफ़िकेशन भेजने के लिए, आपको सेवा खाता कुंजी को ऐक्सेस टोकन से बदलना होगा. इसके लिए, हमारा सुझाव है कि आप Google API क्लाइंट लाइब्रेरी का इस्तेमाल करें. इसके बाद आने वाले कोड स्निपेट की सीरीज़ में, हम Google API Node.js क्लाइंट लाइब्रेरी का इस्तेमाल करते हैं.

  1. Google API क्लाइंट लाइब्रेरी इंस्टॉल करें और अनुरोध करें:

    npm install googleapis request --save

  2. सेवा खाता कुंजी से ऐक्सेस टोकन पाने और पुश नोटिफ़िकेशन भेजने के लिए, नीचे दिए गए कोड का इस्तेमाल करें:

    // 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: 'Example notification title',
      },
      target: {
        userId: '<UPDATES_USER_ID>',
        intent: 'Notifications Intent',
      },
    };
    client.authorize((err, tokens) => {
      if (err) {
        throw new Error('Auth error: ${err}');
      }
      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));
      });
    });