Sitzbereiche für die Gastronomie hinzufügen

Restaurants haben oft verschiedene Sitzbereiche wie eine Bar oder eine Terrasse und bieten unterschiedliche Erlebnisse wie ein 5‑Gänge-Menü oder eine Weinprobe. Das Actions Center unterstützt diese Unterscheidung und ermöglicht es dem Nutzer, den Bereich anzugeben, in dem er einen Tisch reservieren möchte.

Verfügbarkeitszeiträume mit Raumnamen

Abbildung 1: Beispiel für die Auswahl von Zeitfenstern für ein Restaurant mit Sitzbereichen

Diese Inventartrennung kann durch Festlegen der Felder room_id, room_name und in der resources-Nachricht eines Verfügbarkeitszeitraums erfolgen. Verwenden Sie das Feld room_description in der Ressourcen-Nachricht, um Zimmerbeschreibungen einzufügen.

// A resource is used to disambiguate availability slots from one another when
// different staff, room or party_size values are part of the service.
// Multiple slots for the same service and time interval can co-exist when they
// have different resources.
message Resources {
  // One of staff_id, room_id, or party_size must be set.

  // Optional ID for a staff member providing the service. This field identifies
  // the staff member across all merchants, services, and availability records.
  // It also needs to be stable over time to allow correlation with past
  // bookings. (optional but required if staff_name is present)
  string staff_id = 1;

  // Optional name of a staff member providing the service. This field will be
  // displayed to users making a booking, and should be human-readable, as
  // opposed to an opaque identifier. (optional but required if staff_id is
  // present)
  string staff_name = 2;

  // An optional ID for the room the service is located in. This field
  // identifies the room across all merchants, services, and availability
  // records. It also needs to be stable over time to allow correlation with
  // past bookings. (optional but required if room_name is present)
  string room_id = 3;

  // An optional name for the room the service is located in or experience of
  // of the service. This field will be displayed to users making a booking,
  // and should be human readable, as opposed to an opaque identifier.
  // A room name should only be used for seating areas or prepaid experiences.
  // Examples of room names include "Bar", "Patio", "Dining Room". Examples of
  // dining experiences using room names include "Five-Course Tasting Menu",
  // "Chef Omakase". It is strongly recommended that the default seating area
  // does not have a room associated with it.
  string room_name = 4;

  // Applicable only for Dining: The party size that can be accommodated
  // during this time slot. A restaurant can be associated with multiple Slots
  // for the same time, each specifying a different party_size, if for instance
  // 2, 3, or 4 people can be seated with a reservation. (optional)
  int32 party_size = 5;

  // Localized room description with a limit of 500 characters. If set,
  // a default value must be provided, it is preferred to use the common
  // languages for the merchant's locale.
  Text room_description = 7;
}

Diese Informationen sind ein integraler Bestandteil einer Slot-Definition und müssen in die Feeds sowie in alle Buchungs- und Echtzeitaktualisierungsvorgänge aufgenommen werden. Beispiele für die Angabe von room_id und room_name finden Sie im Beispiel für einen vertikalen Feed für Restaurants.

Verfügbarkeitszeiträume mit Raumnamen für Erlebnisse

Wenn Sie Reservations Payments Redirect implementiert haben oder gerade dabei sind, können Sie room_name und room_descriptions für Prepaid-Reservierungen nutzen. Der folgende Screenshot zeigt, wie die Funktion im Web dargestellt wird.

Abbildung 1: Beispiel für die Auswahl von Zeitblöcken für ein Restaurant mit Sitzbereichen, einschließlich Raumbeschreibungen

Raumbeispiel

{
  "availability": [{
    "merchant_id": "dining-A",
    "service_id": "reservation",
    "start_sec": 1535853600,
    "duration_sec": 2700,
    "spots_total": 2,
    "spots_open": 2,
    "resources": {
      "room_id": "A-dining-room",
      "room_name": "Bar",
      "party_size": 2,
      }
  }]
}

Beispiel für Aktivitäten

{
  "availability": [{
    "merchant_id": "dining-A",
    "service_id": "reservation",
    "start_sec": 1535853600,
    "duration_sec": 2700,
    "spots_total": 2,
    "spots_open": 2,
    "resources": {
      "room_id": "experience-1",
      "room_name": "Wine Tasting Menu Pair",
      "description": "This Wine Tasting Menu Pair showcases American cuisine rooted in the nostalgic flavors of the 20th century American experience. Each experience is hand-crafted, with a progression from small bites to more substantial plates.",
      "party_size": 2,
      }
    }]
}

Größe des Feeds gering halten

Wenn Sie viele Sitzplatzbereiche mit Zimmerbeschreibungen haben, können Sie die Größe Ihres Feeds reduzieren, indem Sie die Zimmerbeschreibungen nur in einem der Slots angeben. Wir verwenden room_name und room_id für alle Slots und fügen room_description aus einem der Slots hinzu.

Wenn Sie die Größe Ihres Feeds verwalten, sollten Sie die Best Practices in Feeddateien komprimieren und Feeddateien aufteilen beachten.

Beispiel für eine Zimmerbeschreibung

{
  "availability": [
    {
    "merchant_id": "dining-A",
    "service_id": "reservation",
    "start_sec": 1535853600,
    "duration_sec": 2700,
    "spots_total": 2,
    "spots_open": 2,
    "resources": {
      "room_id": "experience-1",
      "room_name": "Wine Tasting Menu Pair",
      "description": "This Wine Tasting Menu Pair showcases American cuisine rooted in the nostalgic flavors of the 20th century American experience. Each experience is hand-crafted, with a progression from small bites to more substantial plates.",
      "party_size": 2
      }
  },
  {
    "merchant_id": "dining-A",
    "service_id": "reservation",
    "start_sec": 1535854600,
    "duration_sec": 2700,
    "spots_total": 4,
    "spots_open": 4,
    "resources": {
      "room_id": "experience-1",
      "room_name": "Wine Tasting Menu Pair",
      "party_size": 6
      }
  }]
}