Skip to content

পুশ নোটিফিকেশন

আপনার ব্যবহারকারীদের কাছে Web Push নোটিফিকেশন পাঠান। SDK দিয়ে সেটআপ করুন এবং AI-কে সবকিছু সংযুক্ত করতে দিন।

প্রতিটি Proyecta অ্যাপ তার ব্যবহারকারীদের কাছে browser ও PWA push নোটিফিকেশন পাঠাতে পারে। Proyecta SDK, VAPID key তৈরি, subscription সংরক্ষণ, topic ব্যবস্থাপনা এবং delivery সামলায় — কোনো third-party অ্যাকাউন্টের প্রয়োজন নেই।

এটি কীভাবে কাজ করে

Section titled “এটি কীভাবে কাজ করে”

Proyecta-তে push নোটিফিকেশন চারটি ধাপে standard Web Push lifecycle অনুসরণ করে:

  1. Enable — আপনার অ্যাপের জন্য VAPID key তৈরি করুন (একবারের কাজ)
  2. Subscribe — নোটিফিকেশন পেতে একজন ব্যবহারকারীর device নিবন্ধন করুন
  3. Identify — একটি anonymous subscription-কে signed-in ব্যবহারকারীর সাথে যুক্ত করুন
  4. Send — নির্দিষ্ট ব্যবহারকারী, topic বা সবার কাছে নোটিফিকেশন পাঠান

চারটিই SDK-তে proyecta.pushNotifications-এর অধীনে রয়েছে।

আপনার অ্যাপে push চালু করুন

Section titled “আপনার অ্যাপে push চালু করুন”

প্রথম call-টি একটি VAPID public key তৈরি করে, যা browser-এর subscription তৈরিতে প্রয়োজন। এটি idempotent — আবার call করলে একই key ফেরত আসে।

import Proyecta from '@proyecta-ai/sdk';
const proyecta = new Proyecta({ apiKey: process.env.PROYECTA_API_KEY });
const { vapidPublicKey } = await proyecta.pushNotifications.enable();

AI-কে জিজ্ঞেস করুন: "Enable push notifications and store the VAPID key in a PROYECTA_VAPID_PUBLIC_KEY env var"

ব্যবহারকারীর device subscribe করুন

Section titled “ব্যবহারকারীর device subscribe করুন”

Client-এ, VAPID key দিয়ে একটি Web Push subscription তৈরি করুন, তারপর visitorId-সহ সেটি server-এ পাঠান:

// client side
const registration = await navigator.serviceWorker.ready;
const subscription = await registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: PROYECTA_VAPID_PUBLIC_KEY,
});
// server side (or via your API route)
const { secret } = await proyecta.pushNotifications.subscribe({
visitorId: currentUser?.id ?? generateAnonymousId(),
subscription: {
endpoint: subscription.endpoint,
keys: {
auth: subscription.keys.auth,
p256dh: subscription.keys.p256dh,
},
},
});
// Store `secret` on the client — it's required to unsubscribe or identify later

ব্যবহারকারী signed in থাকলে visitorId হিসেবে authenticated user ID ব্যবহার করুন, অথবা anonymous visitor-এর জন্য একটি generated UUID ব্যবহার করুন।

anonymous subscription-কে ব্যবহারকারীর সাথে যুক্ত করুন

Section titled “anonymous subscription-কে ব্যবহারকারীর সাথে যুক্ত করুন”

কোনো anonymous visitor sign in করলে, পরবর্তী send-এ তাদের target করতে পারার জন্য তাদের বিদ্যমান subscription-কে authenticated user ID-এর সাথে যুক্ত করুন:

await proyecta.pushNotifications.identify({
secret: storedSubscriptionSecret,
userId: authenticatedUser.id,
});

নোটিফিকেশন পাঠান

Section titled “নোটিফিকেশন পাঠান”

আপনি নির্দিষ্ট visitor ID, topic, উভয় (union হিসেবে) বা সবার কাছে broadcast করতে পারেন। সবার কাছে broadcast করতে visitorIdstopics দুটোই বাদ দিন।

// Send to specific users
await proyecta.pushNotifications.send({
title: 'Your order has shipped',
body: 'Track it from your dashboard',
visitorIds: ['user_123', 'user_456'],
data: { orderId: 'ord_789' }, // custom payload
});
// Send to everyone subscribed to a topic
await proyecta.pushNotifications.send({
title: 'New feature just dropped',
topics: ['product-updates'],
icon: 'https://cdn.example.com/icon.png',
image: 'https://cdn.example.com/banner.png',
});
// Broadcast to all subscribers
await proyecta.pushNotifications.send({
title: 'Scheduled maintenance at 2am UTC',
});

send { sent, failed } ফেরত দেয়, যাতে আপনি delivery-র অবস্থা জানতে পারেন। বর্তমান stub response-এ sent সংখ্যাটি target করা stored subscription-এর সংখ্যা বোঝায়, আসল browser delivery নয় — production delivery চালু না হওয়া পর্যন্ত এটিকে delivery confirmation হিসেবে ধরবেন না।

ব্যবহারকারীরা proyecta.pushNotifications.topics sub-resource-এর মাধ্যমে named topic-এ (যেমন product-updates, weekly-digest) subscribe করতে পারেন। broadcast-style আপডেটের জন্য opt-in list পরিচালনার এটিই প্রস্তাবিত উপায় — broadcast-style আপডেটের জন্য আপনাকে নিজে visitor ID ট্র্যাক করতে হবে না।

subscribe থেকে প্রাপ্ত secret ব্যবহার করে subscription সরিয়ে দিন:

await proyecta.pushNotifications.unsubscribe({ secret });

AI-কে সংযুক্ত করতে দিন

Section titled “AI-কে সংযুক্ত করতে দিন”

এটি হাতে লিখতে হবে না। AI-কে জিজ্ঞেস করুন:

  • "Enable push notifications for my app. Register a service worker, call pushNotifications.subscribe on the client after the user grants permission, and store the secret in localStorage."
  • "Send a push to all users subscribed to the 'breaking-news' topic whenever a new article is published."
  • "After a user signs in, call pushNotifications.identify to link their anonymous subscription to their user ID."
  • Preview-তে আসল push কাজ করে না। Push নোটিফিকেশন শুধুমাত্র আপনার অ্যাপের published version-এ কাজ করে, কারণ browser-গুলোর real origin-এ HTTPS প্রয়োজন।
  • iOS-এ PWA প্রয়োজন। iOS 16.4+-এ, Web Push শুধুমাত্র installed Progressive Web App (home screen-এ যোগ করা) থেকে কাজ করে, সরাসরি Safari থেকে নয়।
  • Permission একবারের সুযোগ। কোনো ব্যবহারকারী নোটিফিকেশন permission অস্বীকার করলে, browser প্রোগ্রামগতভাবে পুনরায় জিজ্ঞেস করার সুযোগ দেয় না। আপনাকে তাদের browser বা device settings-এ যেতে গাইড করতে হবে।
  • Scheduled ও event-triggered send — অ্যাপ event বা schedule-এর ভিত্তিতে স্বয়ংক্রিয়ভাবে পাঠান
  • Deep linking — নোটিফিকেশনে tap করলে অ্যাপের নির্দিষ্ট screen খুলুন