Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Các nhà hàng thường có những khu vực chỗ ngồi riêng biệt như quầy bar hoặc hiên và những trải nghiệm khác nhau, chẳng hạn như thực đơn nếm thử 5 món hoặc nếm thử rượu vang. Actions Center hỗ trợ điểm khác biệt này và cho phép người dùng chỉ định khu vực để đặt bàn.
Các khung giờ còn trống kèm tên phòng
Hình 1: Ví dụ về lựa chọn vị trí cho một nhà hàng có khu vực chỗ ngồi
Bạn có thể sử dụng chế độ tách biệt quỹ phòng này bằng cách đặt các trường room_id, room_name và trong thông báo resources của một khung giờ Availability. Để thêm nội dung mô tả phòng, hãy dùng trường room_description bên trong thông báo Tài nguyên.
// 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.messageResources{// 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)stringstaff_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)stringstaff_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)stringroom_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.stringroom_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)int32party_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.Textroom_description=7;}
Thông tin này là một phần không thể thiếu trong định nghĩa về các khung giờ và bạn cần phải đưa thông tin này vào nguồn cấp dữ liệu cũng như tất cả các thao tác đặt phòng và cập nhật theo thời gian thực.
Bạn có thể xem ví dụ về room_id và room_name được chỉ định trong Ví dụ về nguồn cấp dữ liệu dành riêng cho ngành dọc, Ăn uống.
Số suất còn trống sử dụng tên phòng cho các trải nghiệm
Nếu đã triển khai hoặc đang trong quá trình triển khai Reservations Payments Redirect (Chuyển hướng thanh toán cho lượt đặt chỗ), bạn có thể sử dụng room_name và room_descriptions để hỗ trợ trải nghiệm dùng bữa trả trước. Ảnh chụp màn hình sau đây cho biết cách trải nghiệm này xuất hiện trên web.
Hình 1: Ví dụ về lựa chọn vị trí cho một nhà hàng có các khu vực chỗ ngồi và nội dung mô tả phòng
{
"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,
}
}]
}
Đảm bảo kích thước nguồn cấp dữ liệu của bạn vẫn nhỏ
Nếu có nhiều phần chỗ ngồi, mỗi phần có nội dung mô tả phòng, bạn có thể giảm kích thước nguồn cấp dữ liệu bằng cách chỉ thêm nội dung mô tả phòng vào một trong các vị trí. Chúng ta sẽ dùng room_name và room_id trên tất cả các khe và thêm room_description từ một trong các khe.
{
"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
}
}]
}
[null,null,["Cập nhật lần gần đây nhất: 2025-08-22 UTC."],[[["\u003cp\u003eThe Actions Center allows restaurants to specify distinct seating areas (like bar or patio) or dining experiences (like tasting menus) for reservations.\u003c/p\u003e\n"],["\u003cp\u003eThis is achieved using the \u003ccode\u003eroom_id\u003c/code\u003e, \u003ccode\u003eroom_name\u003c/code\u003e, and optionally \u003ccode\u003eroom_description\u003c/code\u003e fields within the \u003ccode\u003eresources\u003c/code\u003e message of an Availability slot.\u003c/p\u003e\n"],["\u003cp\u003eIt's recommended to avoid assigning a room name to the general dining area.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eroom_name\u003c/code\u003e and \u003ccode\u003eroom_description\u003c/code\u003e can also be utilized for prepaid dining experiences, particularly when implementing Reservations Payments Redirect.\u003c/p\u003e\n"],["\u003cp\u003eWhen specifying rooms or experiences, the information needs to be consistent across the availability feed, booking operations, and real-time updates.\u003c/p\u003e\n"]]],["Restaurants can specify distinct seating areas or experiences like \"Bar\" or \"Wine Tasting\" using `room_id` and `room_name` in the `resources` message of the Availability feed. `room_description` offers detailed information about each room. Multiple slots can share the same `room_id` and `room_name`. Ensure only one slot includes the `room_description` for each room. Feeds should include this data and follow best practices, like compressing and sharding to manage the size.\n"],null,["# Add dining seating sections\n\nIt is common for restaurants to have distinct seating areas such a bar or\npatio and different experiences, like a five-course tasting menu or wine\ntasting. The Actions Center supports this distinction and allows the user to\nspecify the area to book a table.\n| **Note:** A room name should only specify seating areas or prepaid experiences.\n\nAvailability Slots With Room Names\n----------------------------------\n\n**Figure 1:** Example slot selection for a restaurant with seating sections **Note:** It is recommended that the general dining area not have a room associated with it.\n\nThis inventory separation can be employed by setting the `room_id`,\n`room_name`, and fields in the `resources` message of an\n[Availability](/actions-center/verticals/reservations/e2e/reference/feeds/availability-feed)\nslot. To include room descriptions, use `room_description` field inside the\nResources message. \n\n // A resource is used to disambiguate availability slots from one another when\n // different staff, room or party_size values are part of the service.\n // Multiple slots for the same service and time interval can co-exist when they\n // have different resources.\n message Resources {\n // One of staff_id, room_id, or party_size must be set.\n\n // Optional ID for a staff member providing the service. This field identifies\n // the staff member across all merchants, services, and availability records.\n // It also needs to be stable over time to allow correlation with past\n // bookings. (optional but required if staff_name is present)\n string staff_id = 1;\n\n // Optional name of a staff member providing the service. This field will be\n // displayed to users making a booking, and should be human-readable, as\n // opposed to an opaque identifier. (optional but required if staff_id is\n // present)\n string staff_name = 2;\n\n // An optional ID for the room the service is located in. This field\n // identifies the room across all merchants, services, and availability\n // records. It also needs to be stable over time to allow correlation with\n // past bookings. (optional but required if room_name is present)\n string room_id = 3;\n\n // An optional name for the room the service is located in or experience of\n // of the service. This field will be displayed to users making a booking,\n // and should be human readable, as opposed to an opaque identifier.\n // A room name should only be used for seating areas or prepaid experiences.\n // Examples of room names include \"Bar\", \"Patio\", \"Dining Room\". Examples of\n // dining experiences using room names include \"Five-Course Tasting Menu\",\n // \"Chef Omakase\". It is strongly recommended that the default seating area\n // does not have a room associated with it.\n string room_name = 4;\n\n // Applicable only for Dining: The party size that can be accommodated\n // during this time slot. A restaurant can be associated with multiple Slots\n // for the same time, each specifying a different party_size, if for instance\n // 2, 3, or 4 people can be seated with a reservation. (optional)\n int32 party_size = 5;\n\n // Localized room description with a limit of 500 characters. If set,\n // a default value must be provided, it is preferred to use the common\n // languages for the merchant's locale.\n Text room_description = 7;\n }\n\nThis information is an integral part of a slots definition and will need to be\nincluded in the feeds as well as all booking and real-time update operations.\nYou can see examples of the `room_id` and `room_name` being specified in the\n[Dining, Vertical-Specific Feed\nexample](/actions-center/verticals/%7B%7B%20vertical%20%7D%7D/add-ons/add-payments/feeds).\n\nAvailability Slots using Room Names for Experiences\n---------------------------------------------------\n\nIf you have implemented or are in the process of implementing [Reservations Payments Redirect](/actions-center/verticals/reservations/e2e/add-ons/add-payments-redirect/overview),\nyou may use `room_name` and `room_descriptions` to power prepaid dining\nexperiences. The following screenshot details how the experience is shown on the\nweb.\n**Figure 1:** Example slot selection for a restaurant with seating sections and room descriptions \n\n#### Room Sample\n\n```scdoc\n{\n \"availability\": [{\n \"merchant_id\": \"dining-A\",\n \"service_id\": \"reservation\",\n \"start_sec\": 1535853600,\n \"duration_sec\": 2700,\n \"spots_total\": 2,\n \"spots_open\": 2,\n \"resources\": {\n \"room_id\": \"A-dining-room\",\n \"room_name\": \"Bar\",\n \"party_size\": 2,\n }\n }]\n}\n```\n\n#### Experiences Sample\n\n```scdoc\n{\n \"availability\": [{\n \"merchant_id\": \"dining-A\",\n \"service_id\": \"reservation\",\n \"start_sec\": 1535853600,\n \"duration_sec\": 2700,\n \"spots_total\": 2,\n \"spots_open\": 2,\n \"resources\": {\n \"room_id\": \"experience-1\",\n \"room_name\": \"Wine Tasting Menu Pair\",\n \"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.\",\n \"party_size\": 2,\n }\n }]\n}\n```\n\nEnsure the Size of Your Feed Remains Small\n------------------------------------------\n\nIf you have a large number of seating sections each with room descriptions, you\ncan reduce the size of your feed by only including the room descriptions in one\nof the slots. We use the `room_name` and `room_id` across all slots and add the\n`room_description` from one of the slots.\n| **Warning:** If more than one `room_description` is provided in different slots and they're a different definition, we don't show any room descriptions for that room or experience.\n\nWhen managing the size of your feed, consider following the best practices\noutlined in [Compress Feed Files](/actions-center/verticals/reservations/e2e/reference/tutorials/compression) and [Shard Feed Files](/actions-center/verticals/reservations/e2e/reference/tutorials/sharding) \n\n#### Room Description Sample\n\n```scdoc\n{\n \"availability\": [\n {\n \"merchant_id\": \"dining-A\",\n \"service_id\": \"reservation\",\n \"start_sec\": 1535853600,\n \"duration_sec\": 2700,\n \"spots_total\": 2,\n \"spots_open\": 2,\n \"resources\": {\n \"room_id\": \"experience-1\",\n \"room_name\": \"Wine Tasting Menu Pair\",\n \"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.\",\n \"party_size\": 2\n }\n },\n {\n \"merchant_id\": \"dining-A\",\n \"service_id\": \"reservation\",\n \"start_sec\": 1535854600,\n \"duration_sec\": 2700,\n \"spots_total\": 4,\n \"spots_open\": 4,\n \"resources\": {\n \"room_id\": \"experience-1\",\n \"room_name\": \"Wine Tasting Menu Pair\",\n \"party_size\": 6\n }\n }]\n}\n```"]]