पुश नोटिफ़िकेशन

खास जानकारी

रीसेलर एपीआई, Google Workspace की सदस्यता के अलग-अलग इवेंट के बारे में पुश नोटिफ़िकेशन भेजने के लिए, Pub/Sub API का इस्तेमाल करता है. उदाहरण के लिए, अपने ग्राहकों की सदस्यता की स्थितियों में बदलाव होने पर सूचना पाने के लिए, पुश नोटिफ़िकेशन सेट अप किया जा सकता है.

ज़रूरी शर्तें

  • अपने Google Cloud प्रोजेक्ट के लिए, Pub/Sub API चालू करें.
  • अपने Cloud प्रोजेक्ट पर, अपने सेवा खाते को Pub/Sub IAM भूमिकाएं दें. roles/pubsub.editor की भूमिका देना एक अच्छा प्लान है (आसान और बहुत बड़ा नहीं), लेकिन हो सकता है कि आप ज़्यादा सटीक Pub/Sub अनुमतियों का इस्तेमाल करना चाहें.

कोई विषय बनाएं

कोई विषय बनाने के लिए, आपको रीसेलर एपीआई पर रजिस्टर करने के लिए, resellernotify.register तरीके का इस्तेमाल करना होगा. resellernotify.register वाला तरीका, सेवा खाते के ईमेल पते को पैरामीटर के तौर पर इस्तेमाल करता है. आपके नए विषय की सदस्यता लेने के लिए, सिर्फ़ इस तरीके से अनुमति दिए गए सेवा खाते ही सदस्यता ले सकते हैं.

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

सही जवाब देने पर, एक एचटीटीपी 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"
}

किसी विषय की सदस्यता लेना

Pub/Sub विषय बनाने के बाद, आपको यह सेट अप करना होगा कि आपका ऐप्लिकेशन, बदलाव से जुड़े इवेंट का इस्तेमाल कैसे करता है. इनमें से कोई एक विकल्प चुनें:

  • पुश सदस्यता: आपने एक एचटीटीपी POST कॉलबैक दिया है. Pub/Sub इस कॉलबैक का इस्तेमाल, आपके ऐप्लिकेशन को नए इवेंट के बारे में सूचना देने के लिए करता है.
  • सदस्यता लें: आपका ऐप्लिकेशन समय-समय पर एक एचटीटीपी कॉल करता है, ताकि सभी सूची में होने वाले बदलावों की जानकारी मिल सके.

किसी विषय की सदस्यता लेने के अनुरोध का एक उदाहरण यहां दिया गया है:

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 Cloud प्रोजेक्ट.
  • SUBSCRIPTION_NAME: आपकी सदस्यता की पहचान करने वाला नाम.
  • TOPIC_NAME: वह Pub/Sub विषय जिसे आपने पहले बनाया था.
  • PUSH_NOTIFICATION_ENDPOINT: आपका पुश नोटिफ़िकेशन हैंडलर एंडपॉइंट.

सही जवाब देने पर, एचटीटीपी 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 की किसी अंदरूनी वजह से निलंबित किया गया—जैसे, बुरा बर्ताव.

Pub/Sub की सीमाएं

पुश नोटिफ़िकेशन के ऑर्डर की गारंटी नहीं है. हो सकता है कि मैसेज कई बार और गंभीर स्थितियों में डिलीवर किए जाएं. ऐसा बिलकुल भी नहीं है. हमारा सुझाव है कि मौजूदा स्थिति देखने के लिए, बदली गई सभी सदस्यताओं के लिए reseller.subscriptions.get का इस्तेमाल करें.