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

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

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

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

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

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

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

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

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

במקרה שבוצע עדכון בהזמנה ב-Actions Center (למשל, בוטלה או במערכת, 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"
          }
    ]

ב-Inventory Update 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
              }
            }
          ],
        }
      ]

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