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

এই পৃষ্ঠায় রিসেলার এপিআই (Reseller API)-এর সাথে পুশ নোটিফিকেশন (push notifications) কীভাবে ব্যবহার করতে হয় তা বর্ণনা করা হয়েছে।

সংক্ষিপ্ত বিবরণ

রিসেলার এপিআই, গুগল ওয়ার্কস্পেস সাবস্ক্রিপশন ইভেন্ট সম্পর্কে পুশ নোটিফিকেশন পাঠাতে পাব/সাব এপিআই ব্যবহার করে। উদাহরণস্বরূপ, গ্রাহকের সাবস্ক্রিপশন স্ট্যাটাস পরিবর্তিত হলে বিজ্ঞপ্তি পাওয়ার জন্য আপনি পুশ নোটিফিকেশন সেট আপ করতে পারেন।

পূর্বশর্ত

  • আপনার গুগল ক্লাউড প্রোজেক্টের জন্য পাব/সাব এপিআই (Pub/Sub API) সক্রিয় করুন।
  • আপনার ক্লাউড প্রজেক্টে আপনার সার্ভিস অ্যাকাউন্টে পাব/সাব আইএএম রোলগুলো প্রদান করুন। roles/pubsub.editor রোলটি প্রদান করার পরামর্শ দেওয়া হয়, তবে আপনি আরও সুনির্দিষ্ট পাব/সাব পারমিশনও ব্যবহার করতে পারেন।

একটি বিষয় তৈরি করুন

একটি টপিক তৈরি করতে, resellernotify.register মেথডটি ব্যবহার করে রিসেলার এপিআই-তে রেজিস্টার করুন। এই মেথডটি প্যারামিটার হিসেবে একটি সার্ভিস অ্যাকাউন্টের ইমেল অ্যাড্রেস গ্রহণ করে। শুধুমাত্র এই মেথড দ্বারা অনুমোদিত সার্ভিস অ্যাকাউন্টগুলোই আপনার টপিকে সাবস্ক্রাইব করতে পারবে।

POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/register
{
  "serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}

একটি সফল প্রতিক্রিয়ার ফলে একটি HTTP 200 স্ট্যাটাস কোড এবং আপনার পাব/সাব টপিকের নাম সম্বলিত একটি JSON প্রতিক্রিয়া ফেরত আসে।

উদাহরণ উত্তর:

{
  "topicName": "projects/partner-watch/topics/C0abcdefg"
}

আরও পরিষেবা অ্যাকাউন্ট অনুমোদন করতে, resellernotify.register আবার কল করুন।

একটি পরিষেবা অ্যাকাউন্টের অ্যাক্সেস প্রত্যাহার করুন

রিসেলার এপিআই ` resellernotify.unregister এন্ডপয়েন্ট ব্যবহার করে সার্ভিস অ্যাকাউন্ট অনিবন্ধিত করতে পারে:

POST https://reseller.googleapis.com/apps/reseller/v1/resellernotify/unregister
{
  "serviceAccountEmailAddress": "reseller@reseller-project.iam.gserviceaccount.com"
}

একটি বিষয়ে সাবস্ক্রাইব করুন

পাব/সাব টপিক তৈরি করার পর, আপনার অ্যাপ্লিকেশনটি কীভাবে চেঞ্জ ইভেন্টগুলো গ্রহণ করবে তা সেট আপ করুন। নিম্নলিখিত বিকল্পগুলোর মধ্যে একটি বেছে নিন:

  • পুশ সাবস্ক্রিপশন : আপনাকে একটি HTTP POST কলব্যাক সরবরাহ করতে হয়। Pub/Sub এই কলব্যাকটি ব্যবহার করে আপনার অ্যাপ্লিকেশনকে নতুন ইভেন্ট সম্পর্কে অবহিত করে।
  • পুল সাবস্ক্রিপশন : আপনার অ্যাপ্লিকেশনটি কিউতে থাকা পরিবর্তনগুলো পাওয়ার জন্য পর্যায়ক্রমে একটি HTTP কল করে।

একটি টপিকে সাবস্ক্রাইব করার অনুরোধের উদাহরণ:

PUT https://pubsub.googleapis.com/v1/projects/PROJECT/subscriptions/SUBSCRIPTION_NAME
{
  "topic": "TOPIC_NAME"
  // Only needed for push configurations
  "pushConfig": {
    "pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT"
  },
}

নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

  • PROJECT : আপনার গুগল ক্লাউড প্রজেক্ট।
  • SUBSCRIPTION_NAME : আপনার সাবস্ক্রিপশনের জন্য একটি শনাক্তকারী নাম।
  • TOPIC_NAME : আপনার পূর্বে তৈরি করা পাব/সাব টপিক।
  • PUSH_NOTIFICATION_ENDPOINT : আপনার পুশ নোটিফিকেশন হ্যান্ডলার এন্ডপয়েন্ট।

একটি সফল প্রতিক্রিয়ার ক্ষেত্রে HTTP 200 স্ট্যাটাস কোড ফেরত আসে। প্রতিক্রিয়ার উদাহরণ:

{
  "name": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME",
  "topic": "TOPIC_NAME",
  "pushConfig": {
    "pushEndpoint": "PUSH_NOTIFICATION_ENDPOINT"
    },
  "ackDeadlineSeconds": 10
}

বিজ্ঞপ্তির ফর্ম্যাট

নিচে একটি পাব/সাব নোটিফিকেশনের উদাহরণ দেওয়া হলো। মেসেজের ডেটাটি একটি বেস৬৪-এনকোডেড JSON স্ট্রিং।

{
  "message": {
    "attributes": {},
    "data": "eyJza3VfaWQiOiAiR29vZ2xlLUFwcHMtVW5saW1pdGVkIiwgImV2ZW50X3R5cGUiOiAiU1VCU0NSSVBUSU9OX0NBTkNFTExFRCIsICJjdXN0b21lcl9kb21haW5fbmFtZSI6ICJkb21haW4uY29tIiwgInN1YnNjcmlwdGlvbl9pZCI6ICIxMjM0NTY3IiwgImN1c3RvbWVyX2lkIjogIkMwYWJjZGVmIiwgIm1lc3NhZ2VfaWQiOiAiODY3NTMwOSIsICJwdWJsaXNoX3RpbWUiOiB7InNlY29uZHMiOiAxNDU3NzMxODQ2LCAibmFub3MiOiAzNDkwMDAwMDB9LCAicmVzZWxsZXJfY3VzdG9tZXJfaWQiOiAiQzByZXNlbGxlciJ9",
    "message_id": 1234567891012131
  },
  "subscription": "projects/PROJECT/subscriptions/SUBSCRIPTION_NAME"
}

ডিকোডিং করার পর message.data অবজেক্টের উদাহরণ:

{
  "customer_id": "C0abcdef",
  "customer_domain_name": "domain.com",
  "event_type": "SUBSCRIPTION_CANCELLED",
  "sku_id": "Google-Apps-Unlimited",
  "subscription_id": "1234567",
  // Optional fields dependent on event_type
  "subscription_suspension_reasons": [],
  "subscription_cancellation_reason": "REASON"
}

ইভেন্টের প্রকারভেদ

সম্ভাব্য ইভেন্টের প্রকারভেদ:

  • NEW_SUBSCRIPTION_CREATED : একটি নতুন সাবস্ক্রিপশন তৈরি করা হয়েছে।
  • SUBSCRIPTION_TRIAL_ENDED : একটি সাবস্ক্রিপশনের ট্রায়াল শেষ হয়েছে।
  • PRICE_PLAN_SWITCHED : গ্রাহক একটি ফ্লেক্সিবল প্ল্যান থেকে একটি বার্ষিক প্ল্যানে রূপান্তরিত হয়েছেন। যদি গ্রাহক নবায়নের অংশ হিসেবে একটি বার্ষিক প্ল্যান থেকে ফ্লেক্সিবল প্ল্যানে রূপান্তরিত হন, তাহলে এই ঘটনাটি ঘটে না।
  • COMMITMENT_CHANGED : বার্ষিক প্রতিশ্রুতি বাড়ানো বা কমানো হয়েছে।
  • SUBSCRIPTION_RENEWED : একটি বার্ষিক সাবস্ক্রিপশন নবায়ন করা হয়েছে।
  • SUBSCRIPTION_SUSPENDED স্থগিত করা হয়েছে। subscription_suspension_reasons দেখুন।
  • SUBSCRIPTION_SUSPENSION_REVOKED স্থগিতাদেশ প্রত্যাহার করা হয়েছে।
  • SUBSCRIPTION_CANCELLED : সাবস্ক্রিপশন বাতিল করা হয়েছে। subscription_cancellation_reason দেখুন। এটি ট্রান্সফারও শনাক্ত করতে পারে।
  • SUBSCRIPTION_CONVERTED : সাবস্ক্রিপশনটি রূপান্তরিত করা হয়েছে। উদাহরণস্বরূপ:
    • সরাসরি সাবস্ক্রিপশনকে রিসেলার সাবস্ক্রিপশনে রূপান্তর করুন।
    • পেইড সাবস্ক্রিপশনকে গ্রেস অফারে রূপান্তর করুন।
    • অনলাইন সাবস্ক্রিপশনকে অফলাইন সাবস্ক্রিপশনে রূপান্তর করুন।
  • SUBSCRIPTION_UPGRADE : সাবস্ক্রিপশন SKU আপগ্রেড করা হয়েছে। উদাহরণ: Google Workspace Business Starter থেকে Business Standard।
  • SUBSCRIPTION_DOWNGRADE : সাবস্ক্রিপশন SKU-টি ডাউনগ্রেড করা হয়েছে। উদাহরণ: Google Workspace Business Standard থেকে Business Starter-এ।
  • LICENSE_ASSIGNMENT_CHANGED : লাইসেন্স বরাদ্দ বা বাতিল করা হয়েছে। ফ্লেক্সিবল সাবস্ক্রিপশনের জন্য সিট সংখ্যার পরিবর্তন ট্র্যাক করতে এটি ব্যবহার করুন।

সাবস্ক্রিপশন বাতিল করার কারণ

যখন event_type SUBSCRIPTION_CANCELLED হয়, তখন বাতিলের কারণটি প্রদর্শিত হয়। সম্ভাব্য কারণগুলো হলো:

  • TRANSFERRED_OUT : গ্রাহককে সরাসরি বিলিং বা অন্য কোনো রিসেলারের কাছে স্থানান্তর করা হয়েছে।
  • PURCHASE_OF_SUBSUMING_SKU : গ্রাহক এমন একটি SKU-তে আপগ্রেড করেছেন যা অন্য একটিকে ওভাররাইড করে। উদাহরণ: Google Workspace Business Starter এবং Vault ব্যবহারকারী একজন গ্রাহক Business Plus-এ আপগ্রেড করেন, যার মধ্যে Vault অন্তর্ভুক্ত।
  • RESELLER_INITIATED : রিসেলার সাবস্ক্রিপশনটি বাতিল করেছেন।
  • OTHER : সাবস্ক্রিপশনটি অন্য কোনো কারণে বাতিল করা হয়েছিল।

সাবস্ক্রিপশন স্থগিত করার কারণ

যখন event_type SUBSCRIPTION_SUSPENDED হয়, তখন সাসপেনশনের কারণটি পূরণ করা হয়। সম্ভাব্য কারণগুলো হলো:

  • PENDING_TOS_ACCEPTANCE : গ্রাহক Google Workspace Resold-এর পরিষেবার শর্তাবলী (Terms of Service) গ্রহণ করেননি।
  • RENEWAL_WITH_TYPE_CANCEL : গ্রাহকের প্রতিশ্রুতি শেষ হয়ে গেছে এবং পরিষেবাটি বাতিল করা হয়েছে।
  • RESELLER_INITIATED : রিসেলার নিজে সাবস্ক্রিপশনটি স্থগিত করেছেন।
  • TRIAL_ENDED : গ্রাহকের ট্রায়ালটি শেষ হয়ে গেছে, কারণ তিনি কোনো নন-ট্রায়াল প্ল্যান নির্বাচন করেননি।
  • OTHER : গ্রাহককে গুগলের অভ্যন্তরীণ কোনো কারণে, যেমন অপব্যবহারের জন্য, সাময়িকভাবে বরখাস্ত করা হয়েছে।

পাব/সাব সীমাবদ্ধতা

পুশ নোটিফিকেশনের ক্রম সবসময় অনুক্রমিক হয় না। মেসেজ একাধিকবার ডেলিভার হতে পারে অথবা একেবারেই নাও হতে পারে। আমরা পরিবর্তিত সাবস্ক্রিপশনগুলোর বর্তমান অবস্থা জানার জন্য reseller.subscriptions.get ব্যবহার করার পরামর্শ দিই।