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

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

রিসেলার API বিভিন্ন Google Workspace সাবস্ক্রিপশন ইভেন্ট সম্পর্কে পুশ বিজ্ঞপ্তি প্রদানের জন্য Pub/Sub API ব্যবহার করে। উদাহরণস্বরূপ, আপনার গ্রাহকদের সাবস্ক্রিপশন স্ট্যাটাস পরিবর্তন হলে বিজ্ঞপ্তি পাওয়ার জন্য আপনি পুশ বিজ্ঞপ্তি সেট আপ করতে পারেন।

পূর্বশর্ত

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

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

একটি বিষয় তৈরি করতে, আপনাকে resellernotify.register পদ্ধতি ব্যবহার করে Reseller API-তে নিবন্ধন করতে হবে। resellernotify.register পদ্ধতিটি একটি পরিষেবা অ্যাকাউন্টের ইমেল ঠিকানাকে একটি প্যারামিটার হিসাবে গ্রহণ করে। কেবলমাত্র এই পদ্ধতি দ্বারা অনুমোদিত পরিষেবা অ্যাকাউন্টগুলি আপনার নতুন তৈরি বিষয়ের সাবস্ক্রাইব করতে পারে।

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

একটি সফল প্রতিক্রিয়া একটি HTTP 200 স্ট্যাটাস কোড এবং আপনার Pub/Sub বিষয়ের নাম সম্বলিত একটি 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
}

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

নিচে Pub/Sub বিজ্ঞপ্তির একটি উদাহরণ দেওয়া হল। বার্তার ডেটা একটি base64-এনকোডেড 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 depended 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-তে আপগ্রেড করেছেন যা অন্য একটি SKU-কে ওভাররাইড করে। উদাহরণস্বরূপ, যদি Google Workspace Business Starter এবং Google Vault সহ কোনও গ্রাহক Google Workspace Business Plus-এ আপগ্রেড করেন, তাহলে Vault সাবস্ক্রিপশনটি Google Workspace Business Plus-এর সাথে অন্তর্ভুক্ত থাকায় সাবস্ক্রিপশনটি অন্তর্ভুক্ত হয়ে যায়।
  • RESELLER_INITIATED : রিসেলার সাবস্ক্রিপশন বাতিল করেছেন।
  • OTHER : তালিকাভুক্ত কারণ ব্যতীত অন্য কোনও কারণে সাবস্ক্রিপশন বাতিল করা হয়েছে।

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

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

  • PENDING_TOS_ACCEPTANCE : গ্রাহক লগ ইন করেননি এবং Google Workspace পুনঃবিক্রিত পরিষেবার শর্তাবলী গ্রহণ করেননি।
  • RENEWAL_WITH_TYPE_CANCEL : গ্রাহকের প্রতিশ্রুতি শেষ হয়ে গেছে এবং তাদের মেয়াদ শেষে তাদের পরিষেবা বাতিল করা হয়েছে।
  • RESELLER_INITIATED : রিসেলার ম্যানুয়ালি সাবস্ক্রিপশন স্থগিত করেছেন।
  • TRIAL_ENDED : গ্রাহকের ট্রায়ালের মেয়াদ শেষ হয়ে গেছে, এবং গ্রাহক একটি নন-ট্রায়াল প্ল্যান নির্বাচন করেননি।
  • OTHER : গ্রাহককে Google-এর অভ্যন্তরীণ কারণে সাসপেন্ড করা হয়েছে—যেমন, অপব্যবহার।

প্রকাশক/উপ সীমাবদ্ধতা

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