Nội dung cập nhật về khoảng không quảng cáo gia tăng phiên bản 1

Phần này mô tả cách bạn có thể gửi nội dung cập nhật kịp thời của nguồn cấp dữ liệu cho Google. API cập nhật gia tăng cho phép bạn cập nhật và xoá các thực thể trong nguồn cấp dữ liệu của mình theo thời gian gần như thực.

Chức năng này chủ yếu dành cho các bản cập nhật mà bạn không thể đoán trước, chẳng hạn như việc đóng cửa trong trường hợp khẩn cấp. Theo quy tắc, mọi thay đổi được gửi qua API Bản cập nhật gia tăng đều phải là thay đổi phải có hiệu lực trong không quá một tuần. Nếu thay đổi của bạn không cần được phản ánh ngay lập tức, bạn có thể sử dụng tính năng cập nhật hàng loạt. Các bản cập nhật gia tăng được xử lý trong vòng không quá 5 phút.

Thiết lập

Để triển khai bản cập nhật gia tăng, hãy làm như sau:

  1. Làm theo các bước trong phần Tạo và thiết lập dự án để tạo một dự án.
  2. Làm theo các bước trong bài viết Thiết lập tài khoản dịch vụ để tạo tài khoản dịch vụ. Xin lưu ý rằng bạn phải là "Chủ sở hữu" của dự án thì mới có thể thêm vai trò "Người chỉnh sửa" cho tài khoản dịch vụ
  3. (Không bắt buộc, nhưng nên dùng) Cài đặt Thư viện ứng dụng của Google bằng ngôn ngữ bạn chọn để tạo điều kiện sử dụng OAuth 2.0 khi gọi API. Các mã mẫu dưới đây sử dụng các thư viện này. Nếu không, bạn cần xử lý các hoạt động trao đổi mã thông báo theo cách thủ công như mô tả trong bài viết Sử dụng OAuth 2.0 để truy cập API của Google.

Điểm cuối

Để thông báo cho Google về một bản cập nhật, hãy tạo một yêu cầu POST HTTP cho API Cập nhật gia tăng, đồng thời đưa vào một trọng tải nội dung cập nhật và bổ sung. Giản đồ khoảng không quảng cáo mà bạn sử dụng sẽ xác định điểm cuối cần gửi yêu cầu đến:

khoảng không quảng cáo phiên bản 2

https://actions.googleapis.com/v2/apps/PROJECT_ID/entities/TYPE/ENTITY_ID:push

khoảng không quảng cáo phiên bản 1

https://actions.googleapis.com/v2/apps/PROJECT_ID/entities/ENTITY_ID:push

Để xoá một thực thể, hãy tạo yêu cầu DELETE HTTP tới điểm cuối tương ứng với giản đồ khoảng không quảng cáo mà bạn sử dụng:

khoảng không quảng cáo phiên bản 2

https://actions.googleapis.com/v2/apps/PROJECT_ID/entities/TYPE/ENTITY_ID?entity.vertical=FOODORDERING&delete_time=DELETE_TIME

khoảng không quảng cáo phiên bản 1

https://actions.googleapis.com/v2/apps/PROJECT_ID/entities/ENTITY_ID?entity.vertical=FOODORDERING&delete_time=DELETE_TIME

Trong các yêu cầu trên, hãy thay thế nội dung sau:

  • PROJECT_ID: Mã dự án trên Google Cloud được liên kết với dự án mà bạn đã tạo trong mục Tạo và thiết lập dự án.
  • TYPE (chỉ dành cho giản đồ khoảng không quảng cáo phiên bản 2): Loại thực thể (thuộc tính @type) của đối tượng trong nguồn cấp dữ liệu mà bạn muốn cập nhật.
  • ENTITY_ID: Mã nhận dạng thực thể có trong tải trọng. Hãy nhớ mã hoá URL cho mã nhận dạng thực thể của bạn.
  • DELETE_TIME (chỉ xoá điểm cuối): Trường không bắt buộc để biểu thị thời điểm thực thể bị xoá trên hệ thống (mặc định là khi nhận được yêu cầu). Giá trị thời gian không được ở trong tương lai. Khi gửi một thực thể thông qua lệnh gọi tăng dần, tạo phiên bản thực thể cũng sử dụng trường delete_time trong trường hợp lệnh gọi xoá. Định dạng giá trị này là yyyy-mm-ddTHH:mm:ssZ

Ví dụ: bạn có một dự án có mã nhận dạng là "delivery-provider-id" và sử dụng giản đồ khoảng không quảng cáo phiên bản 2. Bạn muốn sửa đổi nhà hàng bằng loại thực thể nhà hàng là "MenuSection" và mã nhận dạng thực thể "menuSection_122". Điểm cuối để cập nhật dữ liệu sẽ như sau:

https://actions.googleapis.com/v2/apps/delivery-provider-id/entities/MenuSection/menuSection_122:push

Để xoá chính thực thể này, bạn sẽ thực hiện lệnh gọi API DELETE HTTP sau:

https://actions.googleapis.com/v2/apps/delivery-provider-id/entities/MenuSection/menuSection_122?entity.vertical=FOODORDERING

Yêu cầu hộp cát

Đối với các yêu cầu trong hộp cát, hãy làm theo hướng dẫn trong phần Endpoint ở trên, nhưng đưa ra yêu cầu tới /v2/sandbox/apps/ thay vì /v2/apps/. Ví dụ: yêu cầu xoá hộp cát cho giản đồ khoảng không quảng cáo phiên bản 2 có cấu trúc như sau:

https://actions.googleapis.com/v2/sandbox/apps/PROJECT_ID/entities/TYPE/ENTITY_ID?entity.vertical=FOODORDERING&delete_time=DELETE_TIME

Nội dung cập nhật và bổ sung

Nguồn cấp dữ liệu hàng ngày của bạn cũng phải chứa mọi thay đổi được gửi thông qua API này. Nếu không, các bản cập nhật theo lô sẽ ghi đè các thay đổi gia tăng.

Dung lượng

Mỗi yêu cầu POST phải bao gồm các tham số yêu cầu cùng với tải trọng JSON chứa dữ liệu có cấu trúc của mọi kiểu thực thể được liệt kê trong giản đồ khoảng không quảng cáo.

JSON sẽ xuất hiện giống như trong nguồn cấp dữ liệu hàng loạt với những điểm khác biệt sau:

  • Kích thước phần tải trọng không được vượt quá 5 MB. Tương tự như nguồn cấp dữ liệu hàng loạt, bạn nên loại bỏ khoảng trắng để có thể điều chỉnh thêm dữ liệu.
  • Phong bì như sau:
{
  "entity": {
    "data":"ENTITY_DATA",
    "vertical":"FOODORDERING"
  },
  "update_time":"UPDATE_TIMESTAMP"
}

Trong tải trọng ở trên, hãy thay thế nội dung sau:

  • ENTITY_DATA: Thực thể ở định dạng JSON được chuyển đổi tuần tự dưới dạng một chuỗi. Thực thể JSON-LD phải được truyền dưới dạng chuỗi trong trường data.
  • UPDATE_TIMESTAMP (không bắt buộc): Dấu thời gian khi thực thể được cập nhật trong hệ thống. Giá trị thời gian không được ở trong tương lai. Dấu thời gian mặc định là khi Google nhận được yêu cầu. Khi gửi một thực thể thông qua yêu cầu tăng dần, tạo phiên bản thực thể cũng sử dụng trường update_time trong trường hợp yêu cầu thêm/cập nhật.

Cập nhật một thực thể

Ví dụ 1: Cập nhật một nhà hàng

Giả sử bạn cần cập nhật khẩn cấp số điện thoại của một nhà hàng. Nội dung cập nhật của bạn chứa JSON cho toàn bộ nhà hàng.

Hãy xem xét một nguồn cấp dữ liệu hàng loạt có dạng như sau:

{
  "@type": "Restaurant",
  "@id": "restaurant12345",
  "name": "Some Restaurant",
  "url": "https://www.provider.com/somerestaurant",
  "telephone": "+16501234567",
  "streetAddress": "345 Spear St",
  "addressLocality": "San Francisco",
  "addressRegion": "CA",
  "postalCode": "94105",
  "addressCountry": "US",
  "latitude": 37.472842,
  "longitude": -122.217144
}

Sau đó, quá trình cập nhật gia tăng theo yêu cầu POST qua HTTP sẽ diễn ra như sau:

POST v2/apps/provider-project/entities/Restaurant/restaurant12345:push
Host: actions.googleapis.com
Content-Type: application/ld+json
{
  "entity": {
    "data": {
      "@type": "Restaurant",
      "@id": "restaurant12345",
      "name": "Some Restaurant",
      "url": "https://www.provider.com/somerestaurant",
      "telephone": "+16501235555",
      "streetAddress": "345 Spear St",
      "addressLocality": "San Francisco",
      "addressRegion": "CA",
      "postalCode": "94105",
      "addressCountry": "US",
      "latitude": 37.472842,
      "longitude": -122.217144
    },
    "vertical": "FOODORDERING"
  }
}

Ví dụ 2: Cập nhật giá của một món trong thực đơn

Giả sử bạn cần thay đổi giá của một mục trong trình đơn. Như trong Ví dụ 1, bản cập nhật của bạn phải chứa JSON cho toàn bộ thực thể cấp cao nhất (trình đơn) và nguồn cấp dữ liệu sử dụng giản đồ khoảng không quảng cáo phiên bản 1.

Hãy xem xét một nguồn cấp dữ liệu hàng loạt có dạng như sau:

{
  "@type": "MenuItemOffer",
  "@id": "menuitemoffer6680262",
  "sku": "offer-cola",
  "menuItemId": "menuitem896532",
  "price": 3.00,
  "priceCurrency": "USD"
}

Sau đó, quá trình cập nhật gia tăng qua phương thức POST sẽ như sau:

POST v2/apps/provider-project/entities/MenuItemOffer/menuitemoffer6680262:push
Host: actions.googleapis.com
Content-Type: application/ld+json
{
  "entity": {
    "data": {
      "@type": "MenuItemOffer",
      "@id": "menuitemoffer6680262",
      "sku": "offer-cola",
      "menuItemId": "menuitem896532",
      "price": 1.00,
      "priceCurrency": "USD"
    },
    "vertical": "FOODORDERING"
  }
}

Thêm thực thể

Để thêm thực thể, hãy tránh sử dụng tính năng cập nhật khoảng không quảng cáo. Thay vào đó, hãy sử dụng quy trình nguồn cấp dữ liệu hàng loạt như mô tả cho giản đồ khoảng không quảng cáo phiên bản 2.

Xoá thực thể

Để xoá các thực thể cấp cao nhất, bạn sử dụng điểm cuối được sửa đổi một chút và sử dụng HTTP DELETE thay vì HTTP POST trong yêu cầu.

Không sử dụng tính năng DELETE HTTP để xoá thực thể phụ trong thực thể cấp cao nhất, chẳng hạn như một mục trong trình đơn. Thay vào đó, hãy coi việc xoá thực thể con là thông tin cập nhật cho thực thể cấp cao nhất, trong đó thực thể phụ bị xoá khỏi danh sách hoặc tham số liên quan.

Ví dụ 1: Xoá thực thể cấp cao nhất

Hãy cân nhắc trường hợp bạn muốn xoá một nhà hàng trong nguồn cấp dữ liệu sử dụng giản đồ khoảng không quảng cáo phiên bản 1. Bạn cũng phải xoá các dịch vụ và thực đơn của nhà hàng này.

Một điểm cuối mẫu cho một thực thể thực đơn có mã nhận dạng là "https://www.provider.com/Supplier/menu/nr":

DELETE v2/apps/delivery-provider-id/entities/https%3A%2F%2Fwww.provider.com%2Frestaurant%2Fmenu%2Fnr?entity.vertical=FOODORDERING
Host: actions.googleapis.com

Một điểm cuối mẫu cho thực thể nhà hàng có mã nhận dạng là "https://www.provider.com/NH/nr":

DELETE v2/apps/delivery-provider-id/entities/https%3A%2F%2Fwww.provider.com%2Frestaurant%2Fnr?entity.vertical=FOODORDERING
Host: actions.googleapis.com

Điểm cuối mẫu của một thực thể dịch vụ có mã nhận dạng là "https://www.provider.com/NH/service/nr":

DELETE v2/apps/delivery-provider-id/entities/https%3A%2F%2Fwww.provider.com%2Frestaurant%2Fservice%2Fnr?entity.vertical=FOODORDERING
Host: actions.googleapis.com
}

Ví dụ 2: Xoá thực thể phụ

Để xoá thực thể phụ khỏi thực thể cấp cao nhất, bạn gửi thực thể cấp cao nhất kèm theo thực thể phụ bị xoá khỏi trường tương ứng. Ví dụ sau giả định nguồn cấp dữ liệu sử dụng giản đồ kho hàng phiên bản 1.

Ví dụ: để xoá một khu vực kinh doanh, hãy cập nhật dịch vụ bằng khu vực kinh doanh đã bị xoá khỏi danh sách areaServed.

POST v2/apps/delivery-provider-id/entities/https%3A%2F%2Fwww.provider.com%2Frestaurant%2Fservice%2Fnr:push
Host: actions.googleapis.com
Content-Type: application/ld+json
{
  "entity": {
    // Note: "data" is not serialized as a string in our example for readability.
    "data": {
      "@type": "Service",
      "provider": {
        "@type": "Restaurant",
        "@id": "https://www.provider.com/restaurant/nr"
      },
      "areaServed": [
        {
          "@type": "GeoCircle",
          "geoMidpoint": {
            "@type": "GeoCoordinates",
            "latitude": "42.362757",
            "longitude": "-71.087109"
          },
          "geoRadius": "10000"
        }
        // area2 is removed.
      ]
      ...
    },
    "vertical": "FOODORDERING"
  }
}

Mã phản hồi của API

Lệnh gọi thành công không có nghĩa là nguồn cấp dữ liệu hợp lệ hoặc chính xác, mà chỉ có nghĩa là lệnh gọi API đã được thực hiện. Các lệnh gọi thành công sẽ nhận được mã phản hồi HTTP 200 cùng với nội dung phản hồi trống:

{}

Đối với lỗi, mã phản hồi HTTP sẽ không là 200 và nội dung phản hồi sẽ cho biết đã xảy ra lỗi.

Ví dụ: nếu người dùng đã đặt giá trị "dọc" trong phong bì thành FAKE_VERTICAL, bạn sẽ nhận được thông báo dưới đây:

{
  "error": {
    "code": 400,
    "message": "Invalid value at 'entity.vertical' (TYPE_ENUM), \"FAKE_VERTICAL\"",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "entity.vertical",
            "description": "Invalid value at 'entity.vertical' (TYPE_ENUM), \"FAKE_VERTICAL\""
          }
        ]
      }
    ]
  }
}

Mã mẫu

Dưới đây là một số mẫu về cách sử dụng API Bản cập nhật gia tăng bằng nhiều ngôn ngữ. Các mẫu này sử dụng Thư viện xác thực của Google và giả định một nguồn cấp dữ liệu bằng giản đồ khoảng không quảng cáo phiên bản 1. Để biết các giải pháp thay thế, hãy tham khảo bài viết Sử dụng OAuth 2.0 cho ứng dụng từ máy chủ đến máy chủ.

Cập nhật thực thể

Node.js

Mã này sử dụng thư viện xác thực của Google cho Node.js.

const {auth} = require('google-auth-library')
const request = require('request');
// The service account client secret file downloaded from the Google Cloud Console
const serviceAccountJson = require('./service-account.json')
// entity.json is a file that contains the entity data in json format
const entity = require('./entity.json')

const ENTITY_ID = 'restaurant/http://www.provider.com/somerestaurant'
const PROJECT_ID = 'your-project-id'

/**
 * Get the authorization token using a service account.
 */
async function getAuthToken() {
  let client = auth.fromJSON(serviceAccountJson)
  client.scopes = ['https://www.googleapis.com/auth/assistant']
  const tokens = await client.authorize()
  return tokens.access_token;
}

/**
 * Send an incremental update to update or add an entity
 */
async function updateEntity(entityId, entity) {
  const token = await getAuthToken()
  request.post({
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${token}`
    },
    url: `https://actions.googleapis.com/v2/apps/${PROJECT_ID}/entities/${encodeURIComponent(entityId)}:push`,
    body: {
      entity: {
        data: JSON.stringify(entity),
        vertical: 'FOODORDERING',
      }
    },
    json: true
  },
  (err, res, body) => {
    if (err) { return console.log(err); }
    console.log(`Response: ${JSON.stringify(res)}`)
  })
}

updateEntity(ENTITY_ID, entity)

Python

Mã này sử dụng thư viện xác thực của Google cho Python.

from google.oauth2 import service_account
from google.auth.transport.requests import AuthorizedSession
import json
import urllib

PROJECT_ID = 'your-project-id'
ENTITY_ID = 'restaurant/http://www.provider.com/somerestaurant'
ENDPOINT = 'https://actions.googleapis.com/v2/apps/%s/entities/%s:push' % (
    PROJECT_ID, urllib.quote(ENTITY_ID, ''))

# service-account.json is the service account client secret file downloaded from the
# Google Cloud Console
credentials = service_account.Credentials.from_service_account_file(
    'service-account.json')

scoped_credentials = credentials.with_scopes(
    ['https://www.googleapis.com/auth/assistant'])

authed_session = AuthorizedSession(scoped_credentials)

# Retrieving the entity
update_file = open("entity.json")  #JSON file containing entity data in json format.
data = update_file.read()

# Populating the entity with wrapper
entity = {}
entity['data'] = data #entity JSON-LD serialized as string
entity['vertical'] = 'FOODORDERING'

request = {}
request['entity'] = entity

response = authed_session.post(ENDPOINT, json=request)

print(response.text) #if successful, will be '{}'

Java

Mã này sử dụng thư viện xác thực của Google dành cho Java.

private static final String PROJECT_ID = "your-project-id";
private static final String ENTITY_ID = "http://www.provider.com/somerestaurant";

/**
 * Get the authorization token using a service account.
 */
private static String getAuthToken() {
  InputStream serviceAccountFile =
      Example.class.getClassLoader().getResourceAsStream("service-account.json");
  ServiceAccountCredentials.Builder credentialsSimpleBuilder =
      ServiceAccountCredentials.fromStream(serviceAccountFile).toBuilder();
  credentialsSimpleBuilder.setScopes(ImmutableList.of("https://www.googleapis.com/auth/assistant"));
  AccessToken accessToken = credentialsSimpleBuilder.build().refreshAccessToken();
  return accessToken.getTokenValue();
}

/**
 * Send an incremental update to update or add an entity.
 * @param entityId The id of the entity to update.
 * @param entity the json of the entity to be updated.
 */
public void updateEntity(String entityId, JSONObject entity) {
  String authToken = getAuthToken();
  String endpoint = String.format(
      "https://actions.googleapis.com/v2/apps/%s/entities/%s:push",
      PROJECT_ID, URLEncoder.encode(entityId, "UTF-8"));
  JSONObject data = new JSONObject();
  data.put("data", entity.toString());
  data.put("vertical", "FOODORDERING");
  JSONObject jsonBody = new JSONObject();
  jsonBody.put("entity", data);
  // Execute POST request
  executePostRequest(endpoint, authToken, jsonBody);
}

Xoá thực thể

Node.js

Mã này sử dụng thư viện xác thực của Google cho Node.js.

const {auth} = require('google-auth-library')
const request = require('request');
// The service account client secret file downloaded from the Google Cloud Console
const serviceAccountJson = require('./service-account.json')
// entity.json is a file that contains the entity data in json format
const entity = require('./entity.json')

const ENTITY_ID = 'restaurant/http://www.provider.com/somerestaurant'
const PROJECT_ID = 'your-project-id'

/**
 * Get the authorization token using a service account.
 */
async function getAuthToken() {
  let client = auth.fromJSON(serviceAccountJson)
  client.scopes = ['https://www.googleapis.com/auth/assistant']
  const tokens = await client.authorize()
  return tokens.access_token;
}

/**
 * Send an incremental update to delete an entity
 */
async function deleteEntity(entityId) {
  const token = await getAuthToken()
  request.delete({
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${token}`
    },
    url: `https://actions.googleapis.com/v2/apps/${PROJECT_ID}/entities/${encodeURIComponent(entityId)}?entity.vertical=FOODORDERING`,
    body: {},
    json: true
  },
  (err, res, body) => {
    if (err) { return console.log(err); }
    console.log(`Response: ${JSON.stringify(res)}`)
  })
}

deleteEntity(ENTITY_ID)

Python

Mã này sử dụng thư viện xác thực của Google cho Python.

from google.oauth2 import service_account
from google.auth.transport.requests import AuthorizedSession
import json
import urllib

# Service config
PROJECT_ID = 'your-project-id'
ENTITY_ID = 'restaurant/http://www.provider.com/somerestaurant'
DELETE_TIME = '2018-04-07T14:30:00-07:00'
ENDPOINT = 'https://actions.googleapis.com/v2/apps/%s/entities/%s?entity.vertical=FOODORDERING&delete_time=%s' % (
    PROJECT_ID, urllib.quote(ENTITY_ID, ''), urllib.quote(DELETE_TIME, ''))

# service-account.json is the service account client secret file downloaded from the
# Google Cloud Console
credentials = service_account.Credentials.from_service_account_file(
    'service-account.json')

scoped_credentials = credentials.with_scopes(
    ['https://www.googleapis.com/auth/assistant'])

authed_session = AuthorizedSession(scoped_credentials)
response = authed_session.delete(ENDPOINT)

print(response.text) #if successful, will be '{}'

Java

Mã này sử dụng thư viện xác thực của Google dành cho Java.

private static final String PROJECT_ID = "your-project-id";
private static final String ENTITY_ID = "restaurant/http://www.provider.com/somerestaurant";

/**
 * Get the authorization token using a service account.
 */
private static String getAuthToken() {
  InputStream serviceAccountFile = Example.class.getClassLoader().getResourceAsStream("service-account.json");
  ServiceAccountCredentials.Builder credentialsSimpleBuilder =
      ServiceAccountCredentials.fromStream(serviceAccountFile).toBuilder();
  credentialsSimpleBuilder.setScopes(ImmutableList.of("https://www.googleapis.com/auth/assistant"));
  AccessToken accessToken = credentialsSimpleBuilder.build().refreshAccessToken();
  return accessToken.getTokenValue();
}

/**
 * Send an incremental update to delete an entity.
 * @param entityId The id of the entity to delete.
 */
public void deleteEntity(String entityId) {
  String authToken = getAuthToken();
  String endpoint = String.format(
      "https://actions.googleapis.com/v2/apps/%s/entities/%s?entity.vertical=FOODORDERING",
      PROJECT_ID, URLEncoder.encode(entityId, "UTF-8"));
  // Execute DELETE request
  System.out.println(executeDeleteRequest(endpoint, authToken));
}

Trường hợp sử dụng

Các trường hợp sử dụng sau đây là ví dụ về việc cập nhật dần dần, cập nhật toàn bộ nguồn cấp dữ liệu và nội dung ở cấp cao trong lệnh gọi API:

Trường hợp Thực thể cấp cao nhất Mô tả và hiệu ứng
Tắt dịch vụ DisabledService

Bạn cần tắt một dịch vụ vì một lý do không lường trước được.

Nội dung cập nhật gia tăng: Gửi thực thể Service được đề cập với @type được thay đổi thành DisabledService, nhưng giữ nguyên các thuộc tính khác.

Nguồn cấp dữ liệu đầy đủ: Hãy nhớ cập nhật thực thể trong các nguồn cấp dữ liệu đầy đủ để đặt @type thành DisabledService trước lần tìm nạp tiếp theo của Google. Nếu không, thực thể sẽ được bật lại.

Mặt hàng cụ thể đã hết hàng Menu Nội dung cập nhật gia tăng: Gửi thực thể Menu đóng gói có offer.inventoryLevel được đặt thành 0 cho MenuItem đã cho và mọi dữ liệu khác không thay đổi.
Thay đổi giá của món trong thực đơn Menu Cập nhật gia tăng: Gửi thực thể Menu đóng gói có offer.price được đặt thành giá cập nhật cho MenuItem nhất định và tất cả dữ liệu khác không thay đổi.

Thêm thực thể cấp cao nhất mới

Chỉ áp dụng cho thực thể thuộc loại Menu, RestaurantService.

Menu, Restaurant, Service

Ví dụ: bạn cần thêm thực đơn mới vào một nhà hàng.

Nội dung cập nhật gia tăng: Gửi thực thể mới của thực đơn, cùng với thực thể nhà hàng có trường hasMenu sẽ được cập nhật tương ứng.

Xoá vĩnh viễn thực thể cấp cao nhất

Chỉ áp dụng cho thực thể thuộc loại Menu, RestaurantService.

Menu, Restaurant, Service

Nội dung cập nhật gia tăng: Gửi một yêu cầu xoá rõ ràng.

Nguồn cấp dữ liệu đầy đủ: Nhớ xoá thực thể khỏi nguồn cấp dữ liệu đầy đủ trước khi Google tìm nạp lần tiếp theo. Nếu không, thực thể sẽ được thêm lại.

Thêm khu vực giao hàng mới trong một Service cụ thể Service Nguồn cấp dữ liệu tăng dần:Gửi thực thể Service liên quan với toàn bộ các trường của thực thể như bình thường trong nguồn cấp dữ liệu đầy đủ, với khu vực phân phối mới được chỉ định trong areaServed của Service.
Cập nhật thời gian dự kiến giao hàng đến nơi tại Service Service Nguồn cấp dữ liệu tăng dần: Gửi Service giống như trong nguồn cấp dữ liệu, ngoại trừ hoursAvailable.deliveryHours của nó được cập nhật tương ứng.
Cập nhật giá giao hàng tại Service Service Nguồn cấp dữ liệu tăng dần: Gửi Service đầy đủ có cập nhật offers.priceSpecification.price.
Cập nhật giờ giao hàng hoặc giờ bán đồ mang đi trong Service Service Nguồn cấp dữ liệu tăng dần: Gửi Service giống như trong nguồn cấp dữ liệu, ngoại trừ hoursAvailable của nó được cập nhật tương ứng.
Service (thay đổi số tiền tối thiểu của đơn đặt hàng) Service Nguồn cấp dữ liệu tăng dần: Gửi Service đầy đủ có cập nhật Service.offers.priceSpecification.eligibleTransactionVolume
Xoá vĩnh viễn MenuItem Menu Nguồn cấp dữ liệu tăng dần:Gửi Menu giống như trong nguồn cấp dữ liệu, nhưng MenuItem này đã bị xoá khỏi danh sách hasMenuItems.

Mục tiêu mức độ dịch vụ về thời gian xử lý cho các công việc theo lô và bản cập nhật gia tăng

Một thực thể được thêm thông qua quá trình cập nhật theo lô hoặc cập nhật tăng dần sẽ được xử lý trong 1-2 ngày. Một thực thể được cập nhật hoặc xoá qua một lô sẽ được xử lý trong 2 giờ, còn thực thể được cập nhật thông qua một bản cập nhật tăng dần sẽ được xử lý trong 5 phút. Một thực thể cũ sẽ bị xoá sau 7 ngày.

Bạn có thể gửi cho Google:

  • Nhiều công việc theo lô mỗi ngày để đảm bảo kho hàng của bạn luôn được cập nhật, HOẶC
  • Một công việc theo lô mỗi ngày và các API gia tăng để luôn cập nhật khoảng không quảng cáo của bạn.