При бронировании места доступности по определенной цене пользователь будет перенаправлен на вашу страницу бронирования по указанному вами URL-адресу. Предоставленные шаги покажут вам, как сделать следующее:
- Определите свой шаблон URL.
- Установите шаблон URL-адреса в своих каналах.
- Включите соединение для каждого слота доступности.
- Проверьте поля в Центре действий.
1. Определение шаблона URL-адреса.
Шаблон uri соответствует спецификации шаблона Uri уровня 2 IETF RFC6570, более подробную информацию можно найти на datatracker.ietf.org . URL-адрес задается вами с помощью параметров, которые динамически заполняются информацией, относящейся к этому резервированию. В следующей таблице приведены обязательные и дополнительные параметры, доступные для вашего шаблона URI.
`https://reservation-provider.com/examplerestaurant/book?date={availability_slot_start_seconds}&num_guests={resources_party_size}`
Доступные значения для шаблона URL-адреса
Параметры шаблона | Обязательно/Необязательно | Кормить | Поле | Пример значения |
---|---|---|---|---|
доступность_slot_start_секунды | Необходимый | доступность | start_sec | 4152695841 |
resources_party_size | Необходимый | доступность.ресурсы | party_size | 2 |
доступность_slot_availability_tag | Необязательный | доступность | доступность_тег | рез-123 |
доступность_slot_duration_секунды | Необязательный | доступность | продолжительность_сек | 3600 |
resources_room_id | Необязательный | доступность.ресурсы | идентификатор_комнаты | бар_123 |
2. Установите шаблон URI в своем фиде.
В следующем разделе предполагается, что у вас есть активная интеграция E2E с существующим сервисным фидом . URL-адрес, который вы определили, будет установлен в фиде службы. Ниже приведено определение этого поля.
message Service {
// ..
UriTemplate uri_template = 38;
}
Определение шаблона 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. // // 5 available parameters for Dining Reservation Linkout: // 1) (required) {availability_slot_start_seconds} :: populated from start_sec // field in availability feed // 2) (required) {availability_slot_duration_seconds} :: populated from // duration_sec field in availability feed // 3) (optional) {resources_party_size} :: populated from party_size field in // availability feed // 4) (optional) {availability_availability_tag} :: populated from // availability_tag field in availability feed // 5) (optional) {resources_room_id} :: populated from room_id 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; }
Пример определения услуги
{ "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. Включите соединение для каждого слота доступности.
В следующем разделе предполагается, что у вас есть действующая интеграция E2E с существующим каналом доступности . После того как вы установили шаблон URL-адреса в своем фиде услуг, вам нужно будет указать, какой из ваших слотов доступности потребуется для ссылки.
Вы можете сделать это, добавив поле linkout_required_reason
со значением PAYMENT_REQUIRED
.
Определение причины ссылки
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; }
Пример определения причины ссылки
{ "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. Проверьте поля в Центре действий.
Если ваши каналы успешно отправлены и в истории каналов нет ошибок, вы можете проверить поля, выполнив следующие действия.
Шаблон URL-адреса в средстве просмотра инвентаря
Определение шаблона URL-адреса можно найти в разделе «Услуги» в представлении инвентаря продавца. Вы найдете шаблон в разделе «Фрагмент канала». Дополнительную информацию о представлении продавцов и услуг см. в разделе «Просмотр инвентаря» .
Причина ссылки в средстве просмотра доступности
Поле linkout_reason_required
можно найти при просмотре конкретного слота доступности в представлении доступности .