실시간 업데이트 구조화

실시간 업데이트 사용 사례

다음 시나리오에서는 항상 실시간 업데이트를 발행해야 합니다.

  • 사용자가 시스템에서 예약을 취소하여 시간대가 사용 가능해집니다.
  • 사용자가 작업 센터를 통해 예약하고 이용 가능 시간대를 더 이상 사용할 수 없는 경우
  • Actions Center를 통해 한 예약이 사용자 측에서, 예를 들어 판매자에 의해 직접 취소되는 경우 이제 원래 시간대을 다시 사용할 수 있으므로 예약 및 이용 가능 여부를 업데이트해야 합니다.

또한 이용 가능 여부 교체 RTU를 구현하는 경우 다음 시나리오에서 실시간 업데이트가 발행되어야 합니다.

  • 판매자가 시스템에서 일정 (이용 가능 여부)을 변경하는 경우
  • 사용자가 시스템에서 예약하고 이용 가능 시간대를 더 이상 사용할 수 없는 경우
  • CheckAvailability와 기존 통합을 사용하는 경우 예약 서버 CheckAvailability 호출이 실제 인벤토리와 일치하지 않는 인벤토리를 반환합니다.

모든 Maps Booking API 호출이 필요한 것은 아닙니다. 다음은 필수입니다.

통합 유형에 따라 다음이 제공되거나 필요할 수도 있습니다.

Update Booking 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": "2025-01-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": 1735831800, # January 02, 2025 15:30:00
            "duration_sec": 1800,
            "availabilityTag": "1000001"
          }
    ]

인벤토리 업데이트 API의 경우 오후 3시 30분 슬롯이 예약될 때의 바꾸기 요청 본문 형식은 다음과 같습니다.

실시간 업데이트 스니펫 바꾸기

  {
    "extendedServiceAvailability": [
      {
        "merchantId": "1001",
        "serviceId": "12310",
        "startTimeRestrict": "2025-01-02T15:01:23.045123456Z",
        "endTimeRestrict": "2025-01-02T19:01:23.045123456Z",
        "availability": [
          {
            "startTime": "2025-01-02T15:30:00.00Z",
            "duration": "3600s",
            "spotsOpen": "1",
            "spotsTotal": "2",
            "availabilityTag": "1000001"
          }
        ]
      }
    ]
  }

오후 3시 30분에 새 슬롯이 예약된 경우 다음 일일 피드에서 예상되는 내용은 다음과 같습니다.

피드 스니펫

"availability": [
        {
          "merchant_id": "1001",
          "service_id": "12310",
          "spots_open": 1,
          "spots_total": 2,
          "start_sec": 1735831800, # January 02, 2025 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의 경우 오후 3시 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 시스템 간에 재고가 동기화되도록 매일 한 번 제출해야 하는 포괄적인 재고 피드 외에 추가로 제공되는 기능입니다.