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

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

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

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

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

  • जब कोई कारोबारी या कंपनी आपके सिस्टम पर अपना शेड्यूल (उपलब्धता) बदलता है.
  • जब कोई उपयोगकर्ता आपके सिस्टम पर बुकिंग करता है और उपलब्धता स्लॉट अब उपलब्ध नहीं है.
  • अगर 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": "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 के सिस्टम के बीच सिंक हो.