Ajouter des sections de tables

Il est courant que les restaurants disposent de zones de places assises distinctes, comme un bar ou une terrasse, et proposent différentes expériences, comme un menu dégustation de cinq plats ou une dégustation de vins. Le Centre d'actions prend en charge cette distinction et permet à l'utilisateur de spécifier la zone dans laquelle réserver une table.

Emplacements disponibles avec les noms des salles

Figure 1 : Exemple de sélection d'un créneau pour un restaurant avec des sections de places assises

Cette séparation de l'inventaire peut être utilisée en définissant les champs room_id, room_name et resources dans le message resources d'un créneau Availability. Pour inclure des descriptions de chambres, utilisez le champ room_description dans le message Resources.

// 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;
}

Ces informations font partie intégrante de la définition des créneaux horaires et devront être incluses dans les flux, ainsi que dans toutes les opérations de réservation et de mise à jour en temps réel. Vous pouvez voir des exemples de spécification de room_id et room_name dans l'exemple de flux spécifique au secteur de la restauration.

Créer des créneaux de disponibilité à l'aide des noms de salles pour les expériences

Si vous avez implémenté ou êtes en train d'implémenter la redirection des paiements pour les réservations, vous pouvez utiliser room_name et room_descriptions pour proposer des expériences de restauration prépayées. La capture d'écran suivante montre comment l'expérience s'affiche sur le Web.

Figure 1 : Exemple de sélection de créneaux pour un restaurant avec des sections de places assises, y compris des descriptions de salles

Exemple de pièce

{
  "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,
      }
  }]
}

Exemple d'expériences

{
  "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,
      }
    }]
}

Veillez à ce que la taille de votre flux reste faible

Si vous avez un grand nombre de sections de sièges, chacune avec des descriptions de salles, vous pouvez réduire la taille de votre flux en n'incluant les descriptions de salles que dans l'un des emplacements. Nous utilisons room_name et room_id dans tous les emplacements et ajoutons room_description à partir de l'un des emplacements.

Lorsque vous gérez la taille de votre flux, pensez à suivre les bonnes pratiques décrites dans Compresser les fichiers de flux et Fractionner les fichiers de flux.

Exemple de description de chambre

{
  "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
      }
  }]
}