BatchAvailabilityLookup نمونه ها و تعاریف,BatchAvailabilityLookup نمونه ها و تعاریف

ساختار درخواست

درخواست‌های BatchAvailabilityLookup می‌توانند در چندین سرویس برای یک فروشنده واحد وجود داشته باشند و بازه‌های زمانی درخواستی می‌توانند چندین منبع و روز را در بر بگیرند. توصیه می‌کنیم برای ساده‌سازی ادغام، از یک شناسه سرویس واحد برای همه فروشندگان استفاده شود.

زمان‌های پاسخ

درخواست‌های BatchAvailabilityLookup دارای آستانه تأخیر ۱.۵ ثانیه‌ای هستند و پس از آن، پاسخ به عنوان شکست در نظر گرفته می‌شود. مطمئن شوید که شبکه داخلی و مسیریابی DNS شما همگام‌سازی شده‌اند تا هرگونه تأخیر در درخواستی که به زیرساخت شما می‌رسد، به حداقل برسد. اگر خطاهای timeout قابل توجهی وجود داشته باشد، ممکن است یکپارچه‌سازی شما تا زمانی که بتوانید آنها را برطرف کنید، آفلاین شود.

هر پاسخ به یک درخواست باید وضعیت واقعی موجودی شما را در آن لحظه برگرداند و نه زمانی که جریان رزرو وارد شده است. اگر یک جایگاه رزرو شده است، آن را در پاسخ‌های فعلی منعکس کنید.

تعاریف

متد BatchAvailabilityLookup تأیید می‌کند که فقط اسلات‌های فعلی در طول جریان رزرو به کاربران ارائه می‌شوند.

درخواست جستجوی دسترسی دسته‌ای

message BatchAvailabilityLookupRequest {
  // ID of the merchant.
  string merchant_id = 1;

  // Multiple slot times to be checked for availability. All queried times apply
  // to the same merchant_id and service_id.
  repeated SlotTime slot_time = 3;

  reserved 2;
}

پاسخ BatchAvailabilityLookup

// Response for the [ext.maps.booking.partner.v3.BatchAvailabilityLookupRequest]
// RPC with the availabilities of the appointment slots.
message BatchAvailabilityLookupResponse {
  // The availabilities for the requested SlotTime entries. There must be
  // exactly one slot_time_availability for each SlotTime entry in the
  // [ext.maps.booking.partner.v3.BatchAvailabilityLookupRequest].
  repeated SlotTimeAvailability slot_time_availability = 1;
}

اسلات تایم

// Identifies a Slot service_id and start time and optionally, the Slot duration
// and resources, for a specific merchant. Note that this differs from the
// definition of Slot, as it does not include merchant_id identifier.
message SlotTime {
  // ID of the service. (required)
  string service_id = 5;

  // Start time of the appointment slot in seconds of UTC time since Unix epoch
  // (required)
  int64 start_sec = 1;

  // Duration of the appointment slot in seconds (optional)
  int64 duration_sec = 2;

  // Opaque tag that identifies the availability slot and matches the value
  // provided in the Availability Feed (optional)
  string availability_tag = 3;

  // The set of resources that specifies the appointment slot, e.g. by
  // indicating the staff member and room selected by the user, or party size
  // for dining slots (optional)
  ResourceIds resource_ids = 4;

  // Indicates whether bookings of this slot will be confirmed
  // synchronously or asynchronously. (optional)
  // An UNSPECIFIED value will be interpreted as synchronous.
  ConfirmationMode confirmation_mode = 6;
}

زمان اسلات

اگر هیچ اسلاتی پیدا نشد، یک پاسخ خالی برگردانید. خطای ۴۰۰ برنگردانید، در عوض می‌توانید کد ۲۰۴ یا کد ۲xx دیگری را برگردانید. این کد تأیید می‌کند که پاسخ به درستی دریافت شده است.

message SlotTimeAvailability {
  // The SlotTime for which availability was checked.
  SlotTime slot_time = 1;

  // Whether the requested SlotTime is available
  bool available = 2;
}

نمونه های BatchAvailabilityLookup

بارگذاری صفحه

وقتی کاربر برای شروع فرآیند رزرو، روی گزینه رزرو آنلاین کلیک می‌کند، یک درخواست BatchAvailabilityLookup با تعداد جایگاه‌های موجود برای فروشنده ارسال می‌شود. برای هر جایگاه ارسال شده در درخواست، سرور رزرو شما پاسخی با تعداد جایگاه‌های موجود واقعی و فعلی برمی‌گرداند. فقط جایگاه‌های موجود در قسمت کاربری به کاربر نمایش داده می‌شوند.

اگر کاربری تعداد اعضای گروه خود را تغییر دهد یا تاریخ دیگری را انتخاب کند، درخواست بارگذاری صفحه دیگری می‌تواند ارسال شود.

درخواست بارگذاری صفحه

 {
    "merchant_id" : "1234",
   "slot_time" : [
       {
          "duration_sec" : "1800",
          "resource_ids" : {
             "party_size" : 2
          },
          "service_id" : "1000",
          "start_sec" : "1606467600"
       },
       {
          "duration_sec" : "1800",
          "resource_ids" : {
             "party_size" : 2
          },
          "service_id" : "1000",
          "start_sec" : "1606469400"
       },
       {
          "duration_sec" : "1800",
          "resource_ids" : {
             "party_size" : 2
          },
          "service_id" : "1000",
          "start_sec" : "1606471200"
       }
    ]
 }

پاسخ بارگذاری صفحه

 { "slot_time_availability" :
    [
       {
          "available" : true,
          "slot_time" : {
                "duration_sec" : "1800",
                "resource_ids" : {
                     "party_size" : 2 },
                 "service_id" : "1000",
                 "start_sec" : "1606467600"  }
       },
       {
          "available" : true,
          "slot_time" : {
                "duration_sec" : "1800",
                "resource_ids" : {
                     "party_size" : 2 },
                 "service_id" : "1000",
                 "start_sec" : "1606469400" }
       },
       {
          "available" : false,
          "slot_time" : {
                 "duration_sec" : "1800",
                  "resource_ids" : {
                       "party_size" : 2 },
                 "service_id" : "1000",
                 "start_sec" : "1606471200" }
       }
    ]
 }

کلیک اسلات

وقتی کاربری یک جایگاه قابل رزرو را انتخاب می‌کند، یک درخواست BatchAvailabilityLookup برای آن جایگاه خاص ارسال می‌شود. سرور رزرو شما پاسخی حاوی موجودی واقعی و فعلی آن جایگاه را برمی‌گرداند. اگر آن جایگاه توسط کاربر دیگری از گوگل، به صورت داخلی در سیستم شما یا بین بارگذاری صفحه و درخواست‌های کلیک روی جایگاه رزرو شده باشد، پاسخ مورد انتظار برای موجودی False است.

درخواست کلیک اسلات

 {
    "merchant_id" : "1234",
    "slot_time" : [
       {
          "duration_sec" : "1800",
          "resource_ids" : {
             "party_size" : 2
          },
          "service_id" : "1000",
          "start_sec" : "1606467600"
       }
    ]
 }

پاسخ کلیک اسلات

 {
    "slot_time_availability" : [
       {
          "available" : true,
          "slot_time" : {
           "duration_sec" : "1800",
             "resource_ids" : {
                "party_size" : 2
             },
             "service_id" : "1000",
             "start_sec" : "1606467600"
          }
       }
    ]
 }