रीयल-टाइम अपडेट को व्यवस्थित करना

रीयल-टाइम अपडेट के इस्तेमाल के उदाहरण

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

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

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

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

Maps Booking API के सभी कॉल ज़रूरी नहीं हैं. ये ज़रूरी हैं:

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

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

अगर आपके सिस्टम पर, ऐक्शन सेंटर की बुकिंग में कोई अपडेट किया गया है (उदाहरण के लिए, रद्द या बदलाव किया गया है), तो 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": "2025-01-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": 1735831800, # January 02, 2025 15:30:00
            "duration_sec": 1800,
            "availabilityTag": "1000001"
          }
    ]

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

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

  {
    "extendedServiceAvailability": [
      {
        "merchantId": "1001",
        "serviceId": "12310",
        "startTimeRestrict": "2025-01-02T15:01:23.045123456Z",
        "endTimeRestrict": "2025-01-02T19:01:23.045123456Z",
        "availability": [
          {
            "startTime": "2025-01-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": 1735831800, # January 02, 2025 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 के सिस्टम के बीच सिंक हो.