リアルタイム更新の構造化

リアルタイム更新のユースケース

リアルタイム更新は、常に次のシナリオで行う必要があります。

  • ユーザーがシステムで予約をキャンセルし、その予約枠が できます。
  • ユーザーがアクション センターと 使用できなくなりました。
  • アクション センターで予約がキャンセルされた場合、 販売者によって直接呼び出されるといった具合です更新するには、 元のスロットが新しい予約スロットに 再度利用可能になります

また RTU の置き換え、 リアルタイム更新は次のシナリオで行う必要があります。

  • 販売者がシステムでスケジュール(空き状況)を変更したとき。
  • ユーザーがシステムと予約枠で予約したとき はご利用いただけなくなりました。
  • Google Cloud との間の従来の統合を CheckAvailability 予約サーバーが CheckAvailability から呼び出して、実際の在庫と一致しない在庫が返されました。

すべての Maps Booking API 呼び出しが必要なわけではありません。以下の項目は必須です。

統合のタイプに応じて、以下も利用できる場合と必要な場合があります。

予約 RTU を更新する

アクション センターの予約が更新された場合(例: キャンセル、 システム上で保持されると、 notification.partners.bookings.patch (BookingNotification.UpdateBooking) 送信する必要があります。

変更可能なフィールド

  • status
  • startTime
  • duration
  • partySize
  • paymentInformation.prepaymentStatus
で確認できます。 <ph type="x-smartling-placeholder">

解約の例

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

<ph type="x-smartling-placeholder">

インフラストラクチャの更新に使用できる 2 種類の置換メソッド 在庫状況:

  • バッチ置換InventoryUpdate.BatchServiceAvailability): 販売者と複数の顧客の在庫状況データを完全に置き換える 提供します。
    • 注: このバッチ呼び出しはアトミック性を保証するものではありません。単独 正常に更新された予約枠が返されます。
  • 単一置換InventoryUpdate.ReplaceServiceAvailability): 単一の販売者とサービスの在庫状況を完全に置き換える。

以下を使用してください リファレンス 表示されます。

リアルタイム更新では、データと同じ可用性構造を使用する必要があります フィードを介して送信されるデータです次のいずれかを使用する必要があります。

  • spotsOpen
  • recurrence

呼び出す置換メソッドの選択

以下のガイドを参考にして、どちらの方法が高いか判断してください。 適:

  • 1 回の予約で複数のサービスを受けられますか?例: ヘアカット 色付け(それぞれが個別の Service)がスタイリストで予約されているため、 その時間枠のスタイリストと関連付けられているサービスを削除する必要があります。
  • お使いのシステムは常に Google のシステムと同期するため、 最終更新以降に在庫状況が変化しました(非推奨)。
    • バッチ置換
    • 注: インベントリ RTU は、更新が発生してから 5 分以内に送信されることを想定しています。 提供できますそのため、アップデートは少なくとも 5 分ごとに確認して送信する必要があります。
  • 上記のいずれにも当てはまらない
    • 単一置換
    • 注: 単一の置換呼び出しを複数使用して、新しい関数をエミュレートできます。 できます。ただし、1 つのファイルのみを使用したほうが、 バッチ置換呼び出し

リアルタイム更新: 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 の場合、 午後 3 時 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"
          }
        ]
      }
    ]
  }

以下は、新しい時間枠が 午後 3 時 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"
        }
      ]
<ph type="x-smartling-placeholder">

リアルタイム更新: 繰り返しの形式

フィード、予約サーバー、サービス アカウント全体で、同じ形式を使用することが重要です。 リアルタイムで更新できます

繰り返しを使用するフィードは次のようになります。

フィード スニペット

  "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 の場合、 午後 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"
                }
              }
            ]
          }
        ]
      }
    ]
  }
<ph type="x-smartling-placeholder">

以下に、次回の日次フィードで期待される内容の例を示します。ご覧のとおり、 その販売者のサービス全体の在庫状況と 新旧バージョン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
              }
            }
          ],
        }
      ]

リアルタイムの更新情報を送信するタイミング

可用性が変化するたびに、リアルタイム更新を継続的に送信する必要があります。 これは包括的な在庫状況フィードに加えて 在庫状況が同期するように、毎日 1 回送信されます。 安全な接続を確保します。