借助数据 Feed,您可以在端到端点餐中提供您的餐厅、服务和菜单。
本文档介绍了如何托管沙盒和生产目录,以及如何使用批量提取功能在端到端订购中更新目录。
数据 Feed 环境
您可以使用以下三个数据 Feed 环境进行集成开发:
Feed 环境 | 说明 | 批量提取 |
---|---|---|
沙盒 | 用于 Feed 开发的测试环境。 | 必填 |
生产 | 您要发布的广告资源的生产环境。 | 必填 |
托管数据 Feed
为了让端到端订购功能能够按批量提取方式处理您的沙盒和生产数据 Feed,您必须将数据 Feed 文件托管在 Google Cloud Storage、Amazon S3 或 HTTPS 中,并提供网站地图。
我们建议您为沙盒环境和生产环境分别托管数据 Feed。通过这种方法,您可以在沙盒 Feed 环境中进行开发和测试,然后再将更改部署到生产环境。
例如,如果您使用 Google Cloud Storage 作为托管选项,则会有以下路径:
- 沙盒 Feed:
gs://foorestaurant-google-feed-sandbox/
- 正式版 Feed:
gs://foorestaurant-google-feed-prod/
如需托管商品目录,请执行以下操作:
- 生成数据 Feed 文件。
- 选择托管解决方案。
- 托管数据 Feed。
- 确保定期更新数据 Feed 文件。正式版数据 Feed 必须每天更新。
如需详细了解如何创建商品目录 Feed,请参阅 Restaurant
、Service
和 Menu
实体的文档,以及创建数据 Feed 部分。
数据 Feed 文件准则
每个文件(可以包含多个实体)不得超过 200 MB。顶级实体 Restaurant
、Service
和 Menu
及其子实体总大小不得超过 4 MB。
选择托管解决方案
下表列出了托管数据 Feed 的选项,以及这些托管服务如何与端到端订购服务搭配使用:
Amazon S3 | Google Cloud Storage | 使用站点地图的 HTTPS | |
---|---|---|---|
凭据和访问权限 |
请向 Google 提供以下信息:
S3 存储分区需要包含以下信息:
|
向 Google 提供指向生产环境和沙盒存储分区目录以及 将 Google 顾问提供的服务账号添加为 Google Cloud Storage 存储分区的读取器。 如需详细了解如何控制 Google Cloud Storage (GCS) 的访问权限,请参阅 Google Cloud Platform 控制台:设置存储分区权限。 GCS 存储分区需要包含以下信息:
|
请向 Google 提供以下信息:
|
Google 如何知道需要提取哪些文件 | 存储分区中所有文件的目录列表。 | 存储分区中所有文件的目录列表。 | 站点地图中列出的文件的各个网址。 |
Google 如何知道文件可以提取 | 生成数据 Feed 后,使用最新的时间戳更新 marker.txt 文件。 |
生成数据 Feed 后,使用最新的时间戳更新 marker.txt 文件。 |
生成数据 Feed 后,请使用最新的时间戳更新 sitemap.xml 的响应标头 last-modified 。 |
文件限制 |
文件数量上限:10 万个。 您的 Amazon S3 存储分区中总文件数不得超过 10 万个。 |
文件数量上限:10 万个。 您的 Google Cloud Storage 存储分区中总文件数不得超过 10 万个。 |
文件数量上限:10 万个。 站点地图 XML 文件中的文件路径数量不得超过 10 万个。 |
关联数据 Feed 以进行批量提取
托管 Feed 后,您需要在 Actions Center 中将其关联到您的项目。您可以在新手入门任务页面上完成正式版 Feed 的初始配置。之后,任何拥有管理员角色的门户用户都可以随时在配置 > Feed 页面中更新正式版和沙盒 Feed 配置。沙盒环境用于开发和测试,而生产 Feed 会向用户显示。
如果您使用 Amazon S3 托管数据 Feed
- 在操作中心中,依次选择配置 > Feed。
-
点击修改,然后填写更新 Feed 表单:
- Feed 提交方法:设为 Amazon S3。
- 标记文件:提供
marker.txt
文件的网址。 - 数据文件:提供包含数据 Feed 的 S3 存储分区的网址。
- 访问 ID:输入具有从 S3 资源读取权限的 IAM 访问密钥 ID。
- 访问密钥:输入具有从 S3 资源读取权限的 IAM 密钥。
- 点击提交。
- 一到两小时后,检查批量提取功能是否提取了您的 Feed 文件。
如果您使用 Google Cloud Storage 托管数据 Feed
- 在操作中心中,依次选择配置 > Feed。
-
点击修改,然后填写更新 Feed 表单:
- Feed 提交方式:设为 Google Cloud Storage。
- 标记文件:提供
marker.txt
文件的网址。 - 数据文件:提供包含数据 Feed 的 GCS 存储分区的网址。
- 点击提交。
- 系统会创建一个服务账号来访问您的 GCS 存储分区。完成初始配置任务后,您可以在配置>Feed 中找到账号名称。此服务账号需要“Storage Legacy Object Reader”角色。您可以在 Google Cloud 控制台的 IAM 页面中向服务账号授予此角色。
- 一到两小时后,检查批量提取功能是否提取了您的 Feed 文件。
如果您使用 HTTPS 托管数据 Feed
- 在操作中心中,依次选择配置 > Feed。
-
点击修改,然后填写更新 Feed 表单:
- Feed 提交方法:设置为 HTTPS。
- 站点地图文件:提供
sitemap.xml
文件的网址。 - 用户名:输入用于访问 HTTPS 服务器的用户名凭据。
- 密码:输入用于访问 HTTPS 服务器的密码。
- 点击提交。
- 一到两小时后,检查批量提取功能是否提取了您的 Feed 文件。
路径示例
下表包含每种托管选项的路径示例:
Amazon S3 | Google Cloud Storage | 使用站点地图的 HTTPS | |
---|---|---|---|
路径 | s3://foorestaurant-google-feed-sandbox/ |
gs://foorestaurant-google-feed-sandbox/ |
https://sandbox-foorestaurant.com/sitemap.xml |
标记文件 | s3://foorestaurant-google-feed-sandbox/marker.txt |
gs://foorestaurant-google-feed-sandbox/marker.txt |
不适用 |
适用于 HTTPS 托管的站点地图
定义网站地图时,请遵循以下准则:
- 站点地图中的链接必须指向文件本身。
- 如果您的站点地图包含对云服务提供商(而非您自己的网域名)的引用,请确保网址开头(例如
https://www.yourcloudprovider.com/your_id
)稳定且对您的批量作业而言是唯一的。 - 请务必不要上传部分站点地图(例如在部分数据上传时)。这样做会导致 Google 仅提取站点地图中的文件,这会导致您的商品目录级别下降,并且可能会导致您的 Feed 提取被屏蔽。
- 确保站点地图中引用的文件的路径不会发生变化。例如,请勿让站点地图今天引用
https://www.yourcloudprovider.com/your_id/10000.json
,明天引用https://www.yourcloudprovider.com/your_id/20000.json
。
站点地图示例
以下是用于分发数据 Feed 文件的 sitemap.xml
文件示例:
示例 1:按商家对实体进行分组(推荐)。
XML
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://your_fulfillment_url.com/restaurant_1.ndjson</loc> <lastmod>2018-06-11T10:46:43+05:30</lastmod> </url> <url> <loc>https://your_fulfillment_url.com/restaurant_2.ndjson</loc> <lastmod>2018-06-11T10:46:43+05:30</lastmod> </url> <url> <loc>https://your_fulfillment_url.com/restaurant_3.ndjson</loc> <lastmod>2018-06-11T10:46:43+05:30</lastmod> </url> </urlset>
示例 2:按类型分组的实体。
XML
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://your_fulfillment_url.com/restaurant.json</loc> <lastmod>2018-06-11T10:46:43+05:30</lastmod> </url> <url> <loc>https://your_fulfillment_url.com/menu.json</loc> <lastmod>2018-06-11T10:46:43+05:30</lastmod> </url> <url> <loc>https://your_fulfillment_url.com/service.json</loc> <lastmod>2018-06-11T10:46:43+05:30</lastmod> </url> </urlset>
更新数据 Feed
关联数据 Feed 后,Google 会每小时检查一次更新,但只有在 marker.txt
或 sitemap.xml
文件发生修改时,我们才会提取所有数据 Feed。我们希望您每天更新一次数据 Feed,以免商品目录过时。
如需指定数据 Feed 已修改且可以批量提取,请更新 marker.txt
文件的 last-modified
对象元数据字段(适用于 GCP 和 S3)或 sitemap.xml
文件的 last-modified
响应标头。Google 会使用这些值来确定数据 Feed 的新鲜度。
在提取批量 Feed 时,
- 系统会插入当前端到端订购商品目录中不存在且没有任何错误的新实体。
-
如果广告资源中已有实体,并且在提取时没有任何错误,并且
dateModified
比当前条目更新,或者如果没有dateModified
,则 Feed 提取开始时间比当前条目更新,则系统会更新这些实体,否则会将其标记为过时。 - 如果 Feed 中没有文件级错误,则系统会删除之前的 Feed 中包含但不再包含在正在处理的批量 Feed 中的实体。
只有在生成并更新所有数据 Feed 文件后,才能更新时间戳或 last-modified
响应标头。将更新数据 Feed 的批处理作业限制为每天只运行一次。或者,请让每个批处理作业之间至少间隔 3 小时。如果您不执行这些步骤,Google 可能会提取过时文件。