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

खास जानकारी

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

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

  • अपने Google Cloud प्रोजेक्ट के लिए, Pub/Sub API को चालू करें.
  • अपने Cloud प्रोजेक्ट में, अपने सेवा खाते को 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"
}

सही तरीके से मिटने पर, जवाब के तौर पर एचटीटीपी 200 स्टेटस कोड और JSON रिस्पॉन्स दिखेगा. इसमें आपके Pub/Sub विषय का नाम शामिल होगा.

जवाब का एक उदाहरण यहां दिया गया है:

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

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

किसी सेवा खाते का ऐक्सेस रद्द करना

Reseller API, 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: सदस्यता की एसकेयू को अपग्रेड किया गया. उदाहरण के लिए, सदस्यता को Google Workspace Business Starter से Business Standard पर अपग्रेड किया गया था.

  • SUBSCRIPTION_DOWNGRADE: सदस्यता की एसकेयू को डाउनग्रेड कर दिया गया. उदाहरण के लिए, सदस्यता को 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 का इस्तेमाल करें, ताकि मौजूदा स्थिति को देखा जा सके.