사용자는 특정 가격으로 이용 가능한 시간대를 예약할 때 사용자가 정의한 URL을 사용하여 예약 페이지로 리디렉션됩니다. 제공된 단계에서는 다음을 수행하는 방법을 보여줍니다.
- URL 템플릿을 정의합니다.
- 피드에서 URL 템플릿을 설정합니다.
- 이용 가능 시간대별로 연결을 사용 설정합니다.
- 알림 센터에서 입력란을 확인합니다.
1. URL 템플릿 정의
URI 템플릿은 IETF (Internet Engineering Task Force) RFC6570을 따릅니다. 레벨 2 URI 템플릿 사양, 자세한 내용은 datatracker.ietf.org를 참조하세요. URL은 예약과 관련된 정보로 동적으로 채워지는 매개변수를 사용하여 설정합니다. 다음 표에는 필수 및 선택적 매개변수를 제공합니다.
`https://reservation-provider.com/examplerestaurant/book?date={availability_slot_start_seconds}&num_guests={resources_party_size}`
사용 가능한 URL 템플릿 값
템플릿 매개변수 | 필수/선택사항 | 피드 | 필드 | 예시 값 |
---|---|---|---|---|
availability_slot_start_seconds | 필수 | availability | start_sec | 4152695841 |
resources_party_size | 필수 | availability.resources | party_size | 2 |
availability_slot_availability_tag | 선택사항 | availability | availability_tag | res-123 |
availability_slot_duration_seconds | 선택사항 | availability | duration_sec | 3600 |
resources_room_id | 선택사항 | availability.resources | room_id | bar_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 템플릿을 설정하면 연결에 필요한 이용 가능 시간대를 지정해야 합니다.
PAYMENT_REQUIRED
값의 linkout_required_reason
필드를 추가하면 됩니다.
링크 아웃 이유 정의
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 템플릿 정의는 판매자의 인벤토리 뷰에 있는 서비스 섹션에서 확인할 수 있습니다. 템플릿은 '피드 스니펫' 아래에 있습니다. 섹션으로 이동합니다. 판매자 및 판매자에 대한 자세한 내용은 인벤토리 보기를 참조하세요. 서비스 뷰.
<ph type="x-smartling-placeholder">어베일러빌리티 뷰어의 링크 아웃 이유
linkout_reason_required
필드는 이용 가능 여부 보기에서 특정 이용 가능 여부 슬롯을 볼 때 확인할 수 있습니다.