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

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

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

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

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

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

לא כל הקריאות של Maps Booking 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": "2014-10-02T15:01:23.045123456Z",
  "duration": "3000s",
  "status": "CANCELED"
}

זמינות במקום RTU

יש שני סוגים של שיטות החלפה שזמינות לעדכון הזמינות:

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

אפשר להיעזר בחומר העזר הבא כדי לקבל פרטים נוספים.

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

  • spotsOpen
  • recurrence

בחירת שיטת החלפה להתקשרות

כדאי להיעזר במדריך הבא כדי להחליט איזו שיטת החלפה מתאימה יותר:

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

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

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

קטע קוד של פיד 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.