রিয়েল-টাইম আপডেট গঠন করা

রিয়েল-টাইম আপডেটের জন্য কেস ব্যবহার করুন

রিয়েল-টাইম আপডেটগুলি অবশ্যই নিম্নলিখিত পরিস্থিতিতে জারি করা উচিত:

  • যখন একজন ব্যবহারকারী আপনার সিস্টেমে একটি রিজার্ভেশন বাতিল করে, এবং স্লট উপলব্ধ হয়।
  • যখন একজন ব্যবহারকারী অ্যাকশন সেন্টারের মাধ্যমে একটি রিজার্ভেশন বুক করেন এবং উপলভ্যতার স্লট আর উপলব্ধ থাকে না।
  • যখন আপনার পক্ষ থেকে অ্যাকশন সেন্টারের মাধ্যমে করা রিজার্ভেশন বাতিল করা হয়, উদাহরণস্বরূপ, ব্যবসায়ী সরাসরি। আপনাকে বুকিংয়ের পাশাপাশি উপলব্ধতা আপডেট করতে হবে কারণ আসল স্লট এখন আবার উপলব্ধ।

অতিরিক্তভাবে, আপনি যদি Availability Replace RTU বাস্তবায়ন করেন, তাহলে নিম্নলিখিত পরিস্থিতিতে রিয়েল-টাইম আপডেট জারি করা উচিত:

  • যখন একজন বণিক আপনার সিস্টেমে তাদের সময়সূচী (উপলভ্যতা) পরিবর্তন করে।
  • যখন একজন ব্যবহারকারী আপনার সিস্টেমে একটি রিজার্ভেশন বুক করে এবং উপলব্ধতার স্লট আর উপলব্ধ থাকে না।
  • আপনি যদি CheckAvailability এর সাথে একটি লিগ্যাসি ইন্টিগ্রেশন ব্যবহার করেন, যখন একটি বুকিং সার্ভার CheckAvailability কল আসল ইনভেন্টরির সাথে মেলে না এমন ইনভেন্টরি ফেরত দেয়।

সমস্ত মানচিত্র বুকিং API কল প্রয়োজন হয় না। নিম্নলিখিত বাধ্যতামূলক:

একীকরণের ধরণের উপর নির্ভর করে নিম্নলিখিতগুলি উপলব্ধ বা প্রয়োজনীয় হতে পারে:

বুকিং RTU আপডেট করুন

আপনার সিস্টেমে একটি অ্যাকশন সেন্টার বুকিং (যেমন বাতিল বা পরিবর্তিত) আপডেট করা হলে, একটি 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-এর সাথে সিঙ্ক্রোনাইজ করবে।
    • ব্যাচ প্রতিস্থাপন
    • দ্রষ্টব্য: আমরা আশা করি যে ইনভেন্টরি RTU আপনার পক্ষ থেকে আপডেট হওয়ার 5 মিনিটের মধ্যে পাঠানো হবে। তাই আপনাকে অন্তত প্রতি 5 মিনিটে যেকোনো আপডেট চেক করে পাঠাতে হবে।
  • এইগুলির কোনটিই প্রযোজ্য নয় বা আপনাকে শুধুমাত্র একটি বণিক এবং পরিষেবা আপডেট করতে হবে?
    • একক প্রতিস্থাপন
    • দ্রষ্টব্য: আপনি একটি ব্যাচ প্রতিস্থাপন কল অনুকরণ করতে একাধিক একক প্রতিস্থাপন কল ব্যবহার করতে পারেন, তবে একটি একক ব্যাচ প্রতিস্থাপন কল ব্যবহার করা আরও কার্যকর হবে

রিয়েল-টাইম আপডেট: স্পট ওপেন ফরম্যাট

ফিড, বুকিং সার্ভার এবং রিয়েল-টাইম আপডেট জুড়ে একই ফর্ম্যাট ব্যবহার করা গুরুত্বপূর্ণ।

একটি 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"
          }
    ]

ইনভেন্টরি আপডেট API-এর জন্য, যখন 3:30 PM স্লট বুক করা হয় তখন রিপ্লেস রিকোয়েস্ট বডি ফরম্যাট:

রিয়েল-টাইম আপডেট স্নিপেট প্রতিস্থাপন করুন

  {
    "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 PM-তে একটি নতুন স্লট বুক করা হলে পরবর্তী দৈনিক ফিডে আমরা কী আশা করি তার একটি উদাহরণ এখানে দেওয়া হল:

ফিড স্নিপেট

"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
              }
            }
          ],
        }
      ]

ইনভেন্টরি আপডেট API-এর জন্য, যখন 3:30 PM স্লট বুক করা হয় তার জন্য রিপ্লেস রিকোয়েস্ট বডি ফরম্যাট, দেখতে এইরকম:

  {
    "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-এর সিস্টেমের মধ্যে উপলব্ধতা সিঙ্ক্রোনাইজ করা হয় তা নিশ্চিত করতে।