Obsługa wersji encji

Każdy element wysyłany do Google (za pomocą kanałów lub aktualizacji w czasie rzeczywistym) ma dołączoną wersję. Ta wersja ma postać sygnatury czasowej. W plikach danych sygnaturę czasową każdego elementu można podać za pomocą atrybutu dateModified. Jeśli ten atrybut nie zawiera elementów kanału, wersja jest ustawiana na czas rozpoczęcia przetwarzania kanału. W aktualizacjach w czasie rzeczywistym do ustawienia wersji służą odpowiednio pola generation_timestamp i delete_time, odpowiednio batchPush i batchDelete. Jeśli to pole nie jest uwzględnione, wersja jest ustawiana na moment otrzymania żądania. Sprawdź oczekiwany format wartości czasowych w relacyjnym schemacie zasobów reklamowych.

Google przetwarza tylko elementy (takie jak restauracja, menu czy usługa) w wersji zgodnej z ostatnią akceptowaną wersją lub nowszą. W przeciwnym razie encja nie jest przetwarzana, a błąd Nieaktualny element jest rejestrowany. Przy aktualizowaniu elementu o nową wersję sygnatura czasowa ostatniej modyfikacji jest aktualizowana na bieżącą godzinę aktualizacji.

Przykład

Załóżmy, że 16 czerwca o godzinie 01:10 czasu UTC został wygenerowany plik danych zawierający ten przykładowy element.

{
  "@type": "Restaurant",
  "@id": "restaurant12345",
  "dateModified": "2022-06-16T01:10:00.000Z",
  ...
}

Kanał nie został jeszcze przetworzony przez Google. Później tego samego dnia o 2022-06-16T01:22:00.000Z Google otrzymuje żądanie aktualizacji w czasie rzeczywistym batchPush z podanym elementem.

{
  "records": [
    {
      "data_record": "{\"@type\": \"Restaurant\",\"@id\": \"restaurant12345\" ...",
      "generation_timestamp": "2022-06-16T01:20:00.000Z"
    }
  ]
}

Wersja identyfikatora jednostki restauracji restaurant12345 to teraz 2022-06-16T01:20:00.000Z, a sygnatura czasowa ostatniej modyfikacji elementu jest ustawiona na 2022-06-16T01:22:00.000Z. W skrócie czas ostatniej modyfikacji to czas aktualizacji elementu w zasobach reklamowych Google, a wersja to wartość generation_timestamp z żądania aktualizacji w czasie rzeczywistym lub wartość dateModified z pliku danych.

Przetwarzanie kanału rozpoczyna się 16 czerwca o godzinie 02:00 czasu UTC. W takiej sytuacji element otrzymany w kanale w wersji 2022-06-16T01:10:00.000Z jest uważany za nieaktualny i nie jest przetwarzany. Dlatego Google nadal wyświetla encję w wersji 2022-06-16T01:20:00.000Z z żądania aktualizacji w czasie rzeczywistym.

Sprawdzone metody:

  • Zaimplementuj w plikach danych sygnaturę czasową dla każdego elementu.
  • Zastosuj zmiany związane z aktualizacją w czasie rzeczywistym do następnego pliku danych i ustaw w elementach kanału sygnaturę czasową dateModified na czas bieżący w chwili utworzenia kanału.