הגדרת עדכונים בזמן אמת

תרחישים לדוגמה לעדכונים בזמן אמת

יש להנפיק עדכונים בזמן אמת תמיד בתרחישים הבאים:

  • כשמשתמש מבטל הזמנה במערכת והמשבצת זמינה.
  • כשמשתמש מזמין מקום באמצעות 'Google הזמנת מקומות' ומשבצת הזמן הזו לא זמינה יותר.
  • אם הזמנה שבוצעה דרך 'Google הזמנת מקומות' מבוטלת בצד שלכם, למשל, ישירות על ידי המוכר. צריך לעדכן את ההזמנה ואת הזמינות כי המשבצת המקורית זמינה עכשיו שוב.

כמו כן, אם מטמיעים RTU של החלפת זמינות, יש לפרסם עדכונים בזמן אמת בתרחישים הבאים:

  • כשמוכרים משנים את התזמון (הזמינות) שלהם במערכת.
  • כשמשתמש מזמין מקום במערכת ומשבצת הזמן הזו לא זמינה יותר.
  • אם נעשה שימוש בשילוב קודם עם CheckAvailability, כששרת הזמנות CheckAvailability מחזיר מלאי שלא תואם למלאי בפועל.

לא כל הקריאות ל-API של הזמנות ב-Maps נדרשות. חובה למלא את הפרטים הבאים:

בהתאם לסוג השילוב, ייתכן שהפרטים הבאים יהיו זמינים או נדרשים:

עדכון RTU של הזמנה

אם בוצע עדכון ב-'Google הזמנת מקומות' (למשל, ביטול או שינוי) במערכת שלך, צריך לשלוח 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 מעת לעת על ידי שליחת כל השינויים בזמינות מאז העדכון האחרון (לא מומלץ).
    • החלפת פריטים בכמות גדולה
    • הערה: אנחנו מצפים שה-RTU של מלאי שטחי הפרסום יישלח בתוך 5 דקות מרגע ביצוע העדכון. לכן עליך לבדוק ולשלוח עדכונים כל 5 דקות לפחות.
  • אף אחת מהאפשרויות האלה אינה רלוונטית?
    • החלפה יחידה
    • הערה: אפשר להשתמש בכמה קריאות להחלפה אחת כדי לחקות החלפה באצווה, אבל יהיה יעיל יותר להשתמש בקריאה יחידה להחלפת אצווה

עדכונים בזמן אמת: נקודות פתוחות בפורמט

חשוב להשתמש באותו פורמט בפידים, בשרת ההזמנות ובעדכונים בזמן אמת.

קטע הקוד של הפיד של 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"
          }
    ]

לממשק API של עדכון מלאי, יש להזין את פורמט הגוף של בקשת ההחלפה עבור אותה הזמנה למשבצת בשעה 15: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"
          }
        ]
      }
    ]
  }

זוהי דוגמה למה שאנחנו רואים בפיד היומי הבא, אם משבצת זמן חדשה בשעה 15: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
              }
            }
          ],
        }
      ]

ה-API של עדכון מלאי שטחי הפרסום בפורמט הזמן שבו יש לבצע הזמנה של משבצת בשעה 15:30 בממשק ה-API ייראה כך:

  {
    "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.