পুশ বিজ্ঞপ্তি

আপনার অ্যাকশন ব্যবহারকারীদের কাছে যখনই প্রাসঙ্গিক হয় বিজ্ঞপ্তি পাঠাতে পারে, যেমন একটি কাজের জন্য নির্ধারিত তারিখ কাছাকাছি হলে একটি অনুস্মারক পাঠানো।

এই নির্দেশিকা বর্ণনা করে কিভাবে আপনার অ্যাকশনের জন্য পুশ বিজ্ঞপ্তি সেট আপ করতে হয়।

সমর্থিত পৃষ্ঠতল

পুশ নোটিফিকেশন অ্যান্ড্রয়েড এবং iOS ডিভাইসে পাওয়া যায় (পুশ নোটিফিকেশন পাওয়ার জন্য আইওএস ডিভাইসে অ্যাসিস্ট্যান্ট অ্যাপ ইনস্টল থাকতে হবে)। এগুলি বর্তমানে ভয়েস-অ্যাক্টিভেটেড স্পিকার, স্মার্ট ডিসপ্লে বা অন্যান্য পৃষ্ঠে সমর্থিত নয়।

পূর্বশর্ত

আপনার প্রোজেক্টে অন্তত একটি গ্লোবাল ইনটেন্ট থাকতে হবে, যেটি ব্যবহার করা হয় যখন ব্যবহারকারী অ্যাসিস্ট্যান্ট থেকে প্রাপ্ত একটি পুশ বিজ্ঞপ্তিতে ট্যাপ করে।

শুরু করুন

নিম্নলিখিত বিভাগগুলি বর্ণনা করে যে কীভাবে আপনার অ্যাকশনে পুশ বিজ্ঞপ্তিগুলি সেট আপ করতে হয়৷

ট্রিগার করার জন্য একটি অভিপ্রায় তৈরি করুন

এই বিভাগে আপনি যে অভিপ্রায় তৈরি করেন তা বিজ্ঞপ্তি প্রবাহকে ট্রিগার করে। এই অভিপ্রায় তৈরি করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. অ্যাকশন কনসোলে যান এবং উপরের মেনুতে বিকাশে ক্লিক করুন।
  2. বিভাগটি প্রসারিত করতে বাম মেনুতে ইন্টেন্টে ক্লিক করুন।
  3. তালিকার নীচে ক্লিক করুন এবং নতুন অভিপ্রায়ের জন্য একটি নাম লিখুন।
  4. নতুন অভিপ্রায় তৈরি করতে Enter/Return টিপুন।
  5. বিজ্ঞপ্তি প্রবাহ ট্রিগার করার জন্য প্রশিক্ষণ বাক্যাংশ যোগ করুন। কিছু উদাহরণ হল:

    • Notify me
    • Send notifications
    • Subscribe to notifications
  6. Save এ ক্লিক করুন।

সিস্টেমের অভিপ্রায়ে রূপান্তর

Notifications সিস্টেম দৃশ্যে রূপান্তর সেট আপ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. বাম মেনুতে দৃশ্যের অধীনে, আপনি বিজ্ঞপ্তি সাবস্ক্রিপশন ফ্লো যোগ করতে চান এমন দৃশ্যে ক্লিক করুন।
  2. দৃশ্যের ব্যবহারকারীর অভিপ্রায় হ্যান্ডলিং বিভাগের অধীনে, একটি নতুন অভিপ্রায় হ্যান্ডলার যোগ করতে + ক্লিক করুন।
  3. অভিপ্রায়ের অধীনে, পূর্ববর্তী বিভাগে আপনি যে অভিপ্রায় তৈরি করেছেন তা নির্বাচন করুন।
  4. ট্রানজিশনের অধীনে, বিজ্ঞপ্তি সিস্টেম দৃশ্য নির্বাচন করুন।

  5. Save এ ক্লিক করুন।

সিস্টেম দৃশ্য কনফিগার করুন

Notifications সিস্টেম দৃশ্য কনফিগার করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. বাম মেনুতে দৃশ্যের অধীনে, নতুন বিজ্ঞপ্তি সিস্টেম দৃশ্য নির্বাচন করুন।
  2. অভিপ্রায় কনফিগার করুন বিভাগের অধীনে, অভিপ্রায় নির্বাচন করুন ক্লিক করুন।
  3. অভিপ্রায় নির্বাচন করুন বিভাগের অধীনে, কোনও ব্যবহারকারী যখন একটি পুশ বিজ্ঞপ্তিতে ট্যাপ করে তখন আপনি যে অভিপ্রায়টি মেলাতে চান তা নির্বাচন করুন৷

  4. কাস্টমাইজ অপ্ট-ইন প্রম্পটের জন্য, একটি প্রম্পট লিখুন যা ব্যবহারকারীদের কাছে প্রদর্শিত হয় যখন তাদের পুশ বিজ্ঞপ্তিগুলিতে সদস্যতা নিতে বলা হয়। প্রম্পটটি "Is it ok if I send push notifications for $prompt" আকারে।

  5. Save এ ক্লিক করুন।

অপ্ট-ইন কনফিগার করুন

পুশ নোটিফিকেশন নির্বাচন করতে কনফিগার করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  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.)
      }
    });
    

বিজ্ঞপ্তি পাঠান

অ্যাকশন API ব্যবহার করে ব্যবহারকারীদের কাছে পুশ বিজ্ঞপ্তি পাঠানো হয়। এই API ব্যবহার করতে, আপনাকে আপনার Google ক্লাউড প্রকল্পে API সক্রিয় করতে হবে এবং একটি JSON পরিষেবা অ্যাকাউন্ট কী সেট আপ ও ডাউনলোড করতে হবে।

তারপরে আপনি Google OAuth2 ক্লায়েন্ট লাইব্রেরি ব্যবহার করে একটি অ্যাক্সেস টোকেনের জন্য পরিষেবা অ্যাকাউন্ট কী বিনিময় করতে পারেন এবং অ্যাকশন API এ আপনার অনুরোধগুলিকে প্রমাণীকরণ করতে টোকেনটি ব্যবহার করতে পারেন।

একটি পরিষেবা অ্যাকাউন্ট কী পান

  1. Google API কনসোলে যান এবং একটি প্রকল্প নির্বাচন করুন ড্রপডাউন থেকে আপনার প্রকল্প নির্বাচন করুন।
  2. আপনার প্রকল্পের জন্য অ্যাকশন API সক্ষম করতে সক্ষম করুন ক্লিক করুন।
  3. Google ক্লাউড কনসোল শংসাপত্র পৃষ্ঠাতে যান এবং একটি প্রকল্প নির্বাচন করুন ড্রপডাউন থেকে আপনার প্রকল্প নির্বাচন করুন৷
  4. শংসাপত্র তৈরি করুন > পরিষেবা অ্যাকাউন্টে ক্লিক করুন।
  5. একটি পরিষেবা অ্যাকাউন্টের নাম লিখুন এবং তৈরি করুন ক্লিক করুন।
  6. একটি ভূমিকা নির্বাচন করুন ড্রপডাউন থেকে, প্রকল্প > মালিক নির্বাচন করুন।
  7. অবিরত ক্লিক করুন.
  8. সার্ভিস অ্যাকাউন্ট JSON ফাইলটি ডাউনলোড করতে Create key-এ ক্লিক করুন।

একটি অ্যাক্সেস টোকেনের জন্য কী বিনিময় করুন এবং একটি বিজ্ঞপ্তি পাঠান

অ্যাকশন 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));
      });
    });