Definições de parâmetro
Conforme especificado na definição de Availability
:
party_size
: o número de pessoas que pode ser acomodado durante esse horário. Um restaurante pode ser associado a vários slots ao mesmo tempo, cada um especificando umparty_size
diferente, se, por exemplo, duas, três ou quatro pessoas puderem fazer uma reservaspots_open
: o número de vagas disponíveis no momento para esta entrada de disponibilidade.spots_total
: o número total de espaços que o comerciante tem para esta configuração (incluindo aqueles que não estão disponíveis)
Esses três parâmetros trabalham juntos para criar uma representação digital da planta baixa. party_size
é o número de pessoas que cada tabela pode conter (haverá uma entrada para cada tamanho que uma tabela pode acomodar). spots_open
e spots_total
são contagens de quantas tabelas podem acomodar esse party_size
.
Exemplo de planta baixa em branco
Imagine um restaurante com a seguinte planta baixa e sem reservas ativas:
![Figura 1: planta baixa sem reservas ativas](https://developers.google.cn/static/actions-center/images/tutorial_dining_flow_1.png?authuser=3&hl=pt)
Os valores de party_size
, spots_open
e spots_total
seriam:
party_size | spots_open | spots_total |
---|---|---|
4 | 3 | 3 |
5 | 3 | 3 |
6 | 4 | 4 |
7 | 1 | 1 |
8 | 1 | 1 |
O feed de disponibilidade para um horário específico desse comerciante teria esta aparência:
JSON
{ "availability": [ { "spots_total": 3, "spots_open": 3, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 4 } }, { "spots_total": 3, "spots_open": 3, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 5 } }, { "spots_total": 4, "spots_open": 4, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 6 } }, { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 7 } }, { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 8 } } ] }
Exemplo de planta baixa com uma reserva
Agora imagine que uma das mesas redondas foi reservada:
![Figura 2: planta baixa com uma reserva ativa](https://developers.google.cn/static/actions-center/images/tutorial_dining_flow_2.png?authuser=3&hl=pt)
Os valores de party_size
, spots_open
e spots_total
agora seriam:
party_size | spots_open | spots_total |
---|---|---|
4 | 2 | 3 |
5 | 2 | 3 |
6 | 3 | 4 |
7 | 1 | 1 |
8 | 1 | 1 |
JSON
{ "availability": [ { "spots_total": 3, "spots_open": 2, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 4 } }, { "spots_total": 3, "spots_open": 2, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 5 } }, { "spots_total": 4, "spots_open": 3, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 6 } }, { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 7 } }, { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 8 } } ] }
Especificar a disponibilidade de refeições com suporte a tabelas combinadas
Há muitas maneiras de um restaurante combinar mesas para atender a grupos
maiores. Nos feeds, é necessário especificar spots_open
e spots_total
de uma forma que reflita com precisão se é possível aceitar partes de um determinado tamanho. Veja a seguir um exemplo de como especificar tabelas de combinação.
Seus feeds podem variar um pouco na forma como esse cálculo é feito, e é aceitável especificar spots_open
e spots_total
de uma forma que corresponda à sua lógica de negócios.
Se um restaurante permite combinar tabelas para formar um grupo maior, atualize spots_open
e spots_total
para refletir isso.
Digamos que um restaurante possa combinar duas pequenas mesas para acomodar um grupo de 7 a 10 pessoas.
![Figura 3: planta baixa sem reservas ativas](https://developers.google.cn/static/actions-center/images/tutorial_dining_flow_1.png?authuser=3&hl=pt)
Caso não haja reservas ativas, os valores de party_size
, spots_open
e spots_total
são:
party_size | spots_open | spots_total |
---|---|---|
4 | 3 | 3 |
5 | 3 | 3 |
6 | 4 | 4 |
7 | 1 | 1 |
8 | 1 | 1 |
9 | 1 | 1 |
10 | 1 | 1 |
Agora, com a mesma planta baixa, é feita uma reserva para um grupo de 10 pessoas que combina duas mesas pequenas.
![Figura 4: planta baixa com uma reserva ativa abrangendo duas mesas](https://developers.google.cn/static/actions-center/images/tutorial_dining_flow_3.png?authuser=3&hl=pt)
Então, os valores de party_size
, spots_open
e spots_total
agora são:
party_size | spots_open | spots_total |
---|---|---|
4 | 1 | 3 |
5 | 1 | 3 |
6 | 2 | 4 |
7 | 1 | 1 |
8 | 1 | 1 |
9 | 0 | 1 |
10 | 0 | 1 |