إنشاء خلاصات مدى توفّر المواعيد وتحميلها
عند إنشاء خلاصات بيانات مدى توفّر المواعيد وتحميلها، اتّبِع التعليمات التالية:
- اتّبِع المواصفات الموضّحة في خلاصة مدى توفّر المواعيد لملفات بيانات مدى توفّر المواعيد. ننصحك باستخدام أسماء ملفات فريدة لبيانات مدى توفّر المواعيد لكل عملية تحميل.
أدرِج طابعًا زمنيًا في اسم الملف، مثلاً
appointment availability_1633621547.json. - في واصف مجموعة الملفات، اضبط الحقل
nameعلىappointment.availability. للاطّلاع على مثال لملف الواصف، يُرجى الرجوع إلى نموذج JSON. ننصحك باستخدام أسماء ملفات وصفية فريدة لكل عملية تحميل. أدرِج طابعًا زمنيًا في اسم الملف، مثلاًappointment availability_1633621547.filesetdesc.json. يجب تحميل ملف الواصف إلى خادم SFTP العام. - حمِّل الخلاصات إلى خادم SFTP العام كل 30 دقيقة كتحديثات كاملة.
- يمكنك العثور على تفاصيل خادم SFTP في قسم الإعدادات > الخلاصات في "بوابة الشريك".
- يمكنك الاطّلاع على حالة عرض الخلاصة في القسم الخلاصات > السجلّ في "بوابة الشريك".
تحميل الخلاصات التدريجية
تتيح ميزة "مدى توفّر المواعيد" أيضًا استخدام خلاصات تدريجية، ما يتيح للشركاء تحميل التغييرات التي تم إجراؤها على مدى توفّرهم فقط باستخدام عملية تحميل الخلاصة.
لتحميل خلاصة إضافية، اضبط قيمة is_incremental: true في خانة واحدة على الأقل من خانات مدى التوفّر في خلاصتك. إذا تم ضبط بعض الخلاصات على is_incremental وبعضها الآخر على true، سيتعامل النظام مع جميعها على أنّها إضافية.false
توفّر التحديثات التزايدية العمليات التالية:
- ليس هناك أي تغيير
- لا تُدرِج معرّف مدى التوفّر للكيانات التي لم يطرأ عليها أي تغيير.
- تعديل مدى التوفّر
- لتعديل معلومات توفّر واحدة، حمِّل إدخال معلومات التوفّر المحدّد (
availability_idنفسه) الذي يتطلّب التعديل، مع تغيير أيّ من الحقول المحدّدة. - حذف معلومات التوفّر
- إذا لم يعُد إدخال بيانات التوفّر متوفّرًا أو يجب حذفه، حمِّل بيانات التوفّر هذه (
availability_idنفسها) مع ضبط قيمةspots_availableعلى 0، وسيحذفها النظام تلقائيًا. بالإضافة إلى ذلك، لإزالة جميع بيانات تاجر أو مؤسسة، اضبط قيمةspots_availableلجميع خانات التوفّر الخاصة به على 0، ما سيؤدي إلى إزالة التاجر أو المؤسسة من خدمة "التوفّر". - إضافة أوقات التوفّر
- بالنسبة إلى خانات مدى التوفّر الجديدة، أدرِج إدخال مدى التوفّر الجديد مع
availability_idالجديد الفريد في عملية تحميل الخلاصة. يتعامل النظام معها كما لو كانت مضمّنة في خلاصة عادية.
التعريفات
تعريف AppointmentAvailabilityFeed
message AppointmentAvailabilityFeed { repeated AppointmentAvailability data = 1; }
تعريف AppointmentAvailability
// This represents the availability data for a bookable service provided by a // merchant. // For example, it can be a haircut/nail manicure service for a beauty salon or // a massage service for a spa. // The availability feed should be a list of this message. message AppointmentAvailability { // An opaque string generated by the partner that identifies a service time // slot. Must be unique across all entities and service time slots. // Strongly recommended to only include URL-safe characters. // Required. string availability_id = 1; // An opaque string generated by the partner that identifies an Entity. // Must be unique across all entities. // Strongly recommended to only include URL-safe characters. // Required. string entity_id = 2; // An opaque string of ASCII characters from an aggregator partner which // uniquely identifies the Service (haircut, nail manicure, massage). // Strongly recommended to only include URL-safe characters. // Required. string service_id = 3; // The name of the service provider. For example, the name of the // hairdresser or the spa staff member. // Optional. string provider = 12; // Timestamp of when this availability slot starts in UTC. // Given in seconds since the unix epoch. // For example, 1735714800 seconds for 1 Jan 2025, 07:00:00 (UTC). // Required. int64 start_time_sec = 4; // The minimum number of minutes in advance before the start time that this // availability slot can be booked. // For example, if the start time is 10:00 AM and the min_advance_minutes is // 60, then the latest time this slot can be booked is 9:00 AM on the day of // the appointment. // If not set, it is assumed to be 0, meaning the slot can be booked at any // time before the start time. // Optional. int32 min_advance_minutes = 13; // Number of total spots and available spots of this booking availability. // Required. int32 spots_total = 5; // Required. int32 spots_available = 6; // The minimum number of spots that should be booked for this availability. // For example, a user has to book at least 2 spots for a time slot sometimes. // If set, spots_minimum_book should be less or equal to spots_available. // Optional. int32 spots_minimum_book = 7; // Link of this booking availability. Users will be redirected to partner // website to continue booking after clicking this link. // Required. string booking_link = 8; // Base price per person. // Required. google.type.Money base_price = 9; // Fee per person. // Required. google.type.Money fee_price = 10; // Whether the feed is incremental or not. // By default it is false, meaning the Availability feed will override the // previous data for the same entity_id. // If this is set to be true, the Availability feed will be proceeded as // incremental updates for the same entity_id. // 1) If it is a new availability_id, the entry is added. // 2) If it is an existing availability_id and the spots_available is 0, // the entry is removed. // 3) If it is an existing availability_id and the spots_available is not // 0, the entry is updated. bool is_incremental = 11; }
مراجع proto الخارجية:
أمثلة على خلاصات بيانات مدى توفّر ملاعب الغولف
خلاصة مدى توفّر المواعيد
{ "data": [ { "availability_id": "availability_id_1", "entity_id": "entity_id_1", "service_id": "service_id_1", "start_time_sec": 1728257400, "spots_total": 4, "spots_available": 4, "spots_minimum_book": 2, "booking_link": "https://www.googleappointments.com/a_link_direct_to_booking_page", "base_price": { "currency_code": "USD", "units": 80, "nanos": 0 }, "fee_price": { "currency_code": "USD", "units": 1, "nanos": 750000000 } }, { "availability_id": "availability_id_2", "entity_id": "entity_id_2", "service_id": "service_id_2", "start_time_sec": 1728259200, "spots_total": 4, "spots_available": 4, "spots_minimum_book": 2, "booking_link": "https://googlegolfappointments.com/a_link_direct_to_booking_page", "base_price": { "currency_code": "USD", "units": 80, "nanos": 0 }, "fee_price" : { "currency_code": "USD", "units": 2, "nanos": 850000000 } } ] }
ملف الوصف
{ "generation_timestamp": 1663347730, "name": "appointment.availability", "data_file": [ "appointment_availability_1663347730.json" ] }