रीयल-टाइम में स्ट्रक्चर अपडेट करना

रीयल-टाइम अपडेट के लिए केस का इस्तेमाल करें

रीयल-टाइम अपडेट हमेशा इन स्थितियों में जारी किए जाने चाहिए:

  • जब कोई उपयोगकर्ता आपके सिस्टम पर बुकिंग रद्द करता है, तो स्लॉट उपलब्ध हो जाता है.
  • जब कोई उपयोगकर्ता Reserve with Google से बुकिंग करता है और उपलब्धता स्लॉट की सुविधा उपलब्ध नहीं होती है.
  • जब Reserve with Google से की गई बुकिंग को आपकी तरफ़ से रद्द कर दिया जाता है, जैसे कि व्यापारी या कंपनी सीधे तौर पर बुकिंग रद्द कर देती है. आपको बुकिंग के साथ-साथ उपलब्धता भी अपडेट करनी होगी, क्योंकि ओरिजनल स्लॉट अब उपलब्ध है.

इसके अलावा, अगर उपलब्धता बदलने का आरटीयू लागू किया जाता है, तो रीयल-टाइम अपडेट इन स्थितियों में जारी किए जाने चाहिए:

  • जब कोई व्यापारी या कंपनी आपके सिस्टम पर शेड्यूल (खरीदारी के लिए उपलब्धता) में बदलाव करती है.
  • जब कोई उपयोगकर्ता आपके सिस्टम पर बुकिंग करता है और उपलब्धता स्लॉट अब उपलब्ध नहीं होता है.
  • अगर CheckAvailability के साथ, लेगसी इंटिग्रेशन का इस्तेमाल किया जा रहा है, तो बुकिंग सर्वर CheckAvailability से कॉल करने पर, ऐसी इन्वेंट्री मिलती है जो असल इन्वेंट्री से मेल नहीं खाती.

Maps बुकिंग एपीआई से जुड़े सभी कॉल ज़रूरी नहीं हैं. ये ज़रूरी हैं:

इंटिग्रेशन किस तरह का है, उसके हिसाब से ये भी उपलब्ध हो सकते हैं या इनकी ज़रूरत पड़ सकती है:

बुकिंग आरटीयू अपडेट करें

अगर आपके सिस्टम पर, Reserve with Google की बुकिंग (जैसे कि रद्द या बदलाव) में कोई अपडेट किया गया है, तो notification.partners.bookings.patch (BookingNotification.UpdateBooking) भेजा जाना चाहिए.

बदले जा सकने वाले फ़ील्ड

  • status
  • startTime
  • duration
  • partySize
  • paymentInformation.prepaymentStatus

रद्द करने का उदाहरण

Request:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/<PARTNER_ID>/bookings/<BOOKING_ID>?updateMask=status

Body:
{
  "name": "partners/<PARTNER_ID>/bookings/<BOOKING_ID>",
  "merchantId": "10001",
  "serviceId": "1001",
  "startTime": "2014-10-02T15:01:23.045123456Z",
  "duration": "3000s",
  "status": "CANCELED"
}

RTU की उपलब्धता

उपलब्धता की जानकारी अपडेट करने के लिए, दो तरीके उपलब्ध हैं:

  • बैच बदलना (InventoryUpdate.BatchServiceAvailability): व्यापारी/कंपनी और कई सेवाओं के लिए, खरीदारी के लिए उपलब्धता का डेटा पूरी तरह बदल देता है.
    • ध्यान दें: यह बैच कॉल, एटॉमिकिटी की गारंटी नहीं देता है. उपलब्धता के लिए सिर्फ़ वे स्लॉट लौटाए जाएंगे जो अपडेट किए गए हैं.
  • सिंगल रिप्लेस (InventoryUpdate.ReplaceServiceAvailability): किसी एक व्यापारी/कंपनी और सेवा की उपलब्धता को पूरी तरह से बदल देता है.

ज़्यादा जानकारी के लिए, कृपया यह रेफ़रंस इस्तेमाल करें.

रीयल-टाइम अपडेट में उसी उपलब्धता स्ट्रक्चर का इस्तेमाल किया जाना चाहिए जो फ़ीड के ज़रिए भेजा गया डेटा है. उन्हें इनमें से एक का इस्तेमाल करना होगा:

  • spotsOpen
  • recurrence

कॉल करने के लिए दूसरा तरीका चुनें

नीचे दी गई गाइड की मदद से तय करें कि कौनसा तरीका बेहतर है:

  • क्या एक बुकिंग से कई सेवाओं पर असर पड़ता है? उदाहरण के लिए, स्टाइलिस्ट के साथ हेयरकट और रंग सेवा (हर एक सेवा अलग है) के लिए, स्टाइलिस्ट से जुड़ी सभी सेवाएं हटा दी जानी चाहिए.
  • पिछले सिस्टम के बाद से, उपलब्धता से जुड़े सभी बदलाव भेजकर, हमारा सिस्टम समय-समय पर Google के साथ सिंक करता रहेगा (हम इसका सुझाव नहीं देते).
    • बैच बदलना
    • ध्यान दें: हमें उम्मीद है कि अपडेट होने के पांच मिनट के अंदर, इन्वेंट्री आरटीयू भेज दिया जाएगा. इसलिए, आपको कम से कम हर पांच मिनट में अपडेट की जांच करनी चाहिए.
  • इनमें से कोई भी लागू नहीं होता?
    • एक बार में बदल दें
    • ध्यान दें: कई बैच को बदलने के लिए, कई रिप्लेस कॉल का इस्तेमाल किया जा सकता है. हालांकि, सिंगल बैच रिप्लेस कॉल का इस्तेमाल करना ज़्यादा बेहतर होगा

रीयल-टाइम अपडेट: Spots फ़ॉर्मैट

फ़ीड, बुकिंग सर्वर, और रीयल-टाइम अपडेट में एक ही फ़ॉर्मैट का इस्तेमाल करना अहम है.

spots_open फ़ीड स्निपेट ऐसा दिखता है:

फ़ीड स्निपेट

   "availability": [
          {
            "merchant_id": "1001",
            "service_id": "12310",
            "spots_open": 2,
            "spots_total": 2,
            "start_sec": 1412263800, # October 02, 2014 15:30:00
            "duration_sec": 1800,
            "availabilityTag": "1000001"
          }
    ]

इन्वेंट्री अपडेट एपीआई के लिए, दोपहर 3:30 बजे के स्लॉट बुक किए जाने पर, अनुरोध के मुख्य हिस्से को बदलें:

रीयल-टाइम अपडेट स्निपेट को बदलना

  {
    "extendedServiceAvailability": [
      {
        "merchantId": "1001",
        "serviceId": "12310",
        "startTimeRestrict": "2014-10-02T15:01:23.045123456Z",
        "endTimeRestrict": "2014-10-02T19:01:23.045123456Z",
        "availability": [
          {
            "startTime": "2014-10-02T15:30:00.00Z",
            "duration": "3600s",
            "spotsOpen": "1",
            "spotsTotal": "2",
            "availabilityTag": "1000001"
          }
        ]
      }
    ]
  }

यहां एक उदाहरण दिया गया है, जिससे हमें पता चलता है कि अगले दिन के फ़ीड में क्या उम्मीद की जाती है: अगर दोपहर 3:30 बजे के लिए कोई नया स्लॉट बुक किया जाता है, तो:

फ़ीड स्निपेट

"availability": [
        {
          "merchant_id": "1001",
          "service_id": "12310",
          "spots_open": 1,
          "spots_total": 2,
          "start_sec": 1412263800, # October 02, 2014 15:30:00
          "duration_sec": 1800,
          "availabilityTag": "1000001"
        }
      ]

रीयल-टाइम अपडेट: दोहराएं जाने का फ़ॉर्मैट

फ़ीड, बुकिंग सर्वर, और रीयल-टाइम अपडेट में एक ही फ़ॉर्मैट का इस्तेमाल करना अहम है.

फ़ीड का बार-बार इस्तेमाल होने वाला फ़ीड कुछ ऐसा दिखता है:

फ़ीड स्निपेट

  "availability": [
        {
          "merchant_id": "1001",
          "service_id": "12310",
          "spots_open": 1,
          "spots_total": 1,
          "start_sec": 1540890000, # October 30, 2018 9:00:00 AM
          "duration_sec": 1800,
          "recurrence": {
            "repeat_every_sec": 1800,
            "repeat_until_sec": 1540918800 # October 30, 2018 5:00:00 PM
          },
          "schedule_exception": [
            {
              "time_range": {
                "begin_sec": 1540902600, # October 30, 2018 12:30:00 PM
                "end_sec": 1540904400 # October 30, 2018 1:00:00 PM
              }
            }
          ],
        }
      ]

इन्वेंट्री अपडेट एपीआई के लिए, दोपहर 3:30 बजे के स्लॉट बुक किए जाने पर, अनुरोध के बॉडी फ़ॉर्मैट को बदलें:

  {
    "extendedServiceAvailability": [
      {
        "merchantId": "1001",
        "serviceId": "12310",
        "startTimeRestrict": "2018-10-30T15:01:23.045123456Z",
        "endTimeRestrict": "2018-10-30T19:01:23.045123456Z",
        "availability": [
          {
            "startTime": "2018-10-30T15:30:00.00Z",
            "duration": "3600s",
            "spotsOpen": "1",
            "scheduleException": [
             {
                "timeRange": {
                  "startTime": "2018-10-30T12:30:00.00Z",
                  "endTime": "2018-10-30T13:00:00.00Z"
                }
              },
              {
                "timeRange": {
                  "startTime": "2018-10-30T15:30:00.00Z",
                  "endTime": "2018-10-30T16:00:00.00Z"
                }
              }
            ]
          }
        ]
      }
    ]
  }

यहां एक उदाहरण दिया गया है, जिससे आपको पता चलेगा कि अगले फ़ीड में क्या होने वाला है. ध्यान दें कि यह व्यापारी के लिए पूरी सेवा की उपलब्धता है. साथ ही, इसके पिछले और नए schedule_exceptions के लिए सभी शर्तें उपलब्ध हैं:

फ़ीड स्निपेट

   "availability": [
        {
          "merchant_id": "1001",
          "service_id": "12310",
          "spots_open": 1,
          "spots_total": 1,
          "start_sec": 1540890000, # October 30, 2018 9:00:00 AM
          "duration_sec": 1800,
          "recurrence": {
            "repeat_every_sec": 1800,
            "repeat_until_sec": 1540918800 # October 30, 2018 5:00:00 PM
          },
          "schedule_exception": [
            {
              "time_range": {
                "begin_sec": 1540902600, # October 30, 2018 12:30:00 PM
                "end_sec": 1540904400 # October 30, 2018 1:00:00 PM
              }
            },
            {
              "time_range": {
                "begin_sec": 1540913400, # October 30, 2018 3:30:00 PM
                "end_sec": 1540915200 # October 30, 2018 4:00:00 PM
              }
            }
          ],
        }
      ]

रीयल-टाइम अपडेट कब सबमिट करें

उपलब्धता में बदलाव होने पर, रीयल-टाइम अपडेट लगातार भेजे जाने चाहिए. प्रॉडक्ट की उपलब्धता की जानकारी वाले फ़ीड के साथ, यह दिन में एक बार सबमिट किया जाना चाहिए. इससे, यह पक्का किया जा सकेगा कि उपलब्धता की जानकारी, आपके और Google के सिस्टम के बीच सिंक की गई है.