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

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

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

काम करने वाले प्लैटफ़ॉर्म

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

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

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

शुरू करें

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

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

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

  1. Actions कंसोल पर जाएं और सबसे ऊपर मौजूद मेन्यू में, डेवलप करें पर क्लिक करें.
  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));
      });
    });