用户预订价格为指定金额的空档后,系统会使用您定义的网址将其重定向到您的预订页面。提供的步骤将介绍如何执行以下操作:
- 定义网址模板。
- 在 Feed 中设置网址模板。
- 为每个播出信息时间段启用链接。
- 验证 Action Center 中的字段。
1. 定义网址模板。
URI 模板遵循互联网工程任务组 (IETF) RFC6570 级别 2 URI 模板规范,如需了解详情,请访问 datatracker.ietf.org。该网址由您设置,其中的参数会动态填充与相应预订相关的信息。下表包含可用于 URI 模板的必需参数和可选参数。
`https://reservation-provider.com/examplerestaurant/book?date={availability_slot_start_seconds}&num_guests={resources_party_size}`
网址模板的可用值
模板参数 | 必填 / 选填 | Feed | 字段 | 示例值 |
---|---|---|---|---|
availability_slot_start_seconds | 必填 | 库存状况 | start_sec | 4152695841 |
resources_party_size | 必填 | availability.resources | party_size | 2 |
availability_slot_availability_tag | 可选 | 库存状况 | availability_tag | res-123 |
availability_slot_duration_seconds | 可选 | 库存状况 | duration_sec | 3600 |
resources_room_id | 可选 | availability.resources | room_id | bar_123 |
2. 在 Feed 中设置 URI 模板。
以下部分假设您已与现有服务 Feed 实现了实时端到端集成。您定义的网址将在服务 Feed 中设置,以下内容包含该字段的定义。
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. 为每个播出信息时间段启用链接。
以下部分假设您已与现有库存状况 Feed 进行了实时端到端集成。在服务 Feed 中设置网址模板后,您需要指定哪些空档需要关联到外部网站。
为此,您可以添加值为 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. 验证 Action Center 中的字段
成功提交 Feed 并确保 Feed 历史记录中没有错误后,您可以按照以下步骤验证字段。
Inventory Viewer 中的网址模板
您可以在商家商品目录视图的“服务”部分找到网址模板定义。您可以在“Feed 摘要”部分下找到该模板。 如需详细了解“商家和服务”视图,请参阅商品目录视图。
可用性查看器中的关联原因
在播出信息视图中查看具体播出信息时,您可以找到 linkout_reason_required
字段。