Ao reservar um horário de disponibilidade com um preço específico, o usuário será redirecionado para sua página de reserva usando um URL definido por você. As etapas fornecidas mostram como fazer o seguinte:
- Defina seu modelo de URL.
- Defina o modelo de URL nos seus feeds.
- Ative o link externo por faixa de disponibilidade.
- Verifique os campos na Central de ações.
1. Definir seu modelo de URL.
O modelo de URI segue a especificação de modelo de URI de nível 2 RFC6570 da Internet Engineering Task Force (IETF). Para mais detalhes, acesse datatracker.ietf.org. O URL é definido por você com parâmetros que são preenchidos dinamicamente com informações relacionadas a essa reserva. A tabela a seguir inclui os parâmetros obrigatórios e opcionais disponíveis para seu modelo de URI.
`https://reservation-provider.com/examplerestaurant/book?date={availability_slot_start_seconds}&num_guests={resources_party_size}`
Valores disponíveis para modelo de URL
Parâmetros de modelo | Obrigatório / Opcional | Feed | Campo | Valor do exemplo |
---|---|---|---|---|
availability_slot_start_seconds | Obrigatório | disponibilidade | start_sec | 4152695841 |
resources_party_size | Obrigatório | availability.resources | party_size | 2 |
availability_slot_availability_tag | Opcional | disponibilidade | availability_tag | res-123 |
availability_slot_duration_seconds | Opcional | disponibilidade | duration_sec | 3600 |
2. Defina o modelo de URI no feed.
A seção a seguir pressupõe que você tenha uma integração E2E ativa com um feed de serviços. O URL definido será definido no feed de serviços. Confira abaixo a definição desse campo.
message Service {
// ..
UriTemplate uri_template = 38;
}
Definição do modelo de URI
// A template specifying how Google should generate URLs to external site. message UriTemplate { // The uri template must follow the RFC6570, see // https://datatracker.ietf.org/doc/html/rfc6570. // Supports Level 2 templates. // These parameters will be resolved to their values specified in their // respective entities. // // Available parameters for Dining Reservation Linkout: // 1) (required) {availability_slot_start_seconds} :: populated from start_sec // field in availability feed // 2) (required) {resources_party_size} :: populated from party_size field in // availability feed // 3) (optional) {availability_slot_duration_seconds} :: populated from // duration_sec field in availability feed // 4) (optional) {availability_slot_availability_tag} :: populated from // availability_tag field in availability feed // // Example usage: // http://example.com/book/restaurant?start={availability_slot_start_seconds} // &num_guests={resources_party_size} // * start_sec = 123456 // * party_size = 2 // https://example.com/book/restaurant?start=123456&num_guests=2 string uri_template = 1; }
Definição de exemplo de serviço
{ "metadata": { "processing_instruction": "PROCESS_AS_COMPLETE", "shard_number": 0, "total_shards": 1, "nonce": "12484913", "generation_timestamp": 1530432018 }, "service": [ { "merchant_id": "dining-A", "service_id": "reservation", "uri_template": { "uri_template": "https://reservation-provider.com/examplerestaurant/book?date={availability_slot_start_seconds}&num_guests={resources_party_size}" }, "localized_service_name": { "value": "Reservation", "localized_value": [ { "locale": "en", "value": "Reservation" } ] } } ] }
3. Ative o link externo por faixa de disponibilidade.
A seção a seguir pressupõe que você tenha uma integração E2E ativa com um feed de disponibilidade. Depois de definir o modelo de URL no feed de serviços, especifique quais dos seus horários de disponibilidade serão necessários para o link externo.
Para isso, adicione o campo linkout_required_reason
com o valor PAYMENT_REQUIRED
.
Definição do motivo do link externo
message Availability {
// ..
LinkoutRequiredReason linkout_required_reason = 19;
}
// The reason why a slot requires a linkout. Currently only used for Dining // Reservations Payment Redirect Partners. enum LinkoutRequiredReason { // Default value: Do not use, equates to unknown. LINKOUT_REQUIRED_REASON_UNSPECIFIED = 0; // Slot requires payment in the partner platform to be booked. PAYMENT_REQUIRED = 1; }
Exemplo de definição de motivo de link externo
{ "metadata": { "processing_instruction": "PROCESS_AS_COMPLETE", "shard_number": 0, "total_shards": 1, "nonce": "11203880", "generation_timestamp": 1543875200 }, "service_availability": [ { "availability": [ { "merchant_id": "dining-A", "service_id": "reservation", "linkout_required_reason": "PAYMENT_REQUIRED", "start_sec": 1535853600, "duration_sec": 2700, "spots_total": 2, "spots_open": 2, "resources": { "room_id": "A-dining-room", "room_name": "Dining Room", "party_size": 2 } } ] } ] }
4. Verificar campos na Central de ações
Depois que os feeds forem enviados e não houver erros no histórico, siga estas etapas para verificar os campos.
Modelo de URL no visualizador de inventário
A definição do modelo de URL está na seção "Serviços" da visualização de inventário de um comerciante. O modelo fica na seção "Snippet do feed". Consulte a visualização de inventário para mais detalhes sobre as visualizações de comerciante e serviço.

Motivo do link externo no visualizador de disponibilidade
O campo linkout_required_reason
aparece quando você visualiza o período de disponibilidade específico na Visualização de disponibilidade.
