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

ওভারভিউ

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

পূর্বশর্ত

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

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

একটি বিষয় তৈরি করতে, আপনাকে resellernotify.register পদ্ধতি ব্যবহার করে রিসেলার API-এর সাথে নিবন্ধন করতে হবে। 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 : আপনার Google ক্লাউড প্রকল্প।
  • 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
}

বিজ্ঞপ্তি বিন্যাস

নিম্নলিখিত একটি উদাহরণ পাব/সাব বিজ্ঞপ্তি. বার্তা ডেটা একটি 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 থেকে বিজনেস স্ট্যান্ডার্ডে আপগ্রেড করা হয়েছে।

  • SUBSCRIPTION_DOWNGRADE : সদস্যতা SKU ডাউনগ্রেড করা হয়েছে৷ যেমন, সাবস্ক্রিপশন Google Workspace বিজনেস স্ট্যান্ডার্ড থেকে বিজনেস স্টার্টারে নামিয়ে আনা হয়েছে।

  • LICENSE_ASSIGNMENT_CHANGED : একজন ব্যবহারকারীকে লাইসেন্স বরাদ্দ করা হয়েছে বা প্রত্যাহার করা হয়েছে৷ নমনীয় সাবস্ক্রিপশনের জন্য আসন গণনার পরিবর্তনগুলিকে প্রতিক্রিয়াশীলভাবে ট্র্যাক করতে আপনি এই ইভেন্টটি ব্যবহার করতে পারেন।

সদস্যতা বাতিলের কারণ

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

  • TRANSFERRED_OUT : গ্রাহক সরাসরি বিলিং বা অন্য রিসেলারে স্থানান্তরিত হয়েছে৷
  • PURCHASE_OF_SUBSUMING_SKU : গ্রাহক একটি SKU-তে আপগ্রেড করেছেন যা অন্যটিকে ওভাররাইড করে৷ যেমন, Google Workspace বিজনেস স্টার্টার এবং Google Vault সহ একজন গ্রাহক Google Workspace বিজনেস প্লাসে আপগ্রেড করলে, 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 ব্যবহার করার পরামর্শ দিই।