Inventar für Vertex AI Search for Commerce aktualisieren

Auf dieser Seite werden die Methoden zum Verwalten von Preis- und Mengenaktualisierungen in Echtzeit für den Vertex AI Search for Retail-Katalog mit der Retail API beschrieben.

Während die Product-Methoden zum Erstellen, Lesen, Aktualisieren und Löschen (CRUD) verwendet werden, um die Attribute eines Product umfassend zu ändern, gibt es eine Reihe von Product-Methoden, die wird für die Aktualisierung von inventarspezifischen Feldern mit unterschiedlichem Detaillierungsgrad verwendet.

Inventar

Im Allgemeinen bezieht sich Inventar auf den Lagerbestand (Menge) und den Preis von Artikeln auf einer E-Commerce-Website. Bei der Retail API bezieht sich inventory auf Preis, Verfügbarkeit, verfügbare Menge, Informationen zur Ausführung, lokale Preise und zusätzliche lokale Attribute. Diese Felder werden im Produktschema mit den folgenden Feldern definiert:

Inventar auf Produktebene

Bei Händlern mit einer E-Commerce-Website, die nur einen Onlinekatalog haben, wird inventory in der Regel nur durch die Produkte im Katalog dargestellt. Preis, Verfügbarkeit und alle anderen Daten werden für jeden Produkteintrag im Katalog festgelegt. Die Felder fulfillmentInfo und localInventories werden nicht verwendet.

Lokales Inventar

Bei Einzelhändlern mit mehreren Standorten werden Produkte weiterhin durch die Produkteinträge im Katalog dargestellt. Lokales Inventar (Preis, Verfügbarkeit und Versand) kann jedoch mit der Methode addLocalInventories den Standorten (placeId) für ein Produkt hinzugefügt werden.

Für lokales Inventar werden zwei separate Produktfelder verwendet: Product.fulfillmentInfo und Product.localInventories. Je nach Anforderungen kann eine oder beide verwendet werden. Sowohl fulfillmentInfo als auch localInventories sind Listen von Orten mit zugehörigen Daten.

fulfillmentInfo gibt an, wie ein Produkt an einem bestimmten Standort erfüllt wird, während localInventories Preis und andere benutzerdefinierte Attribute für jeden Standort angibt.

Wenn Sie ein Produkt an einem bestimmten Standort als nicht vorrätig oder nicht mehr verfügbar kennzeichnen möchten, verwenden Sie die Methode removeLocalInventories, um fulfillment und inventory für ein Produkt für einen bestimmten placeId zu entfernen.

Methoden zur Inventaraktualisierung

Änderungen an den Inventarinformationen eines Produkts können wesentlich häufiger erfolgen als Änderungen an seinen Kataloginformationen. Daher steht ein spezieller Satz von Methoden zur Verfügung, um große Mengen an inventarspezifischen Updates zu bewältigen. Diese Methoden sind asynchron aufgrund von nachgelagerten Optimierungen, die Hunderte von gleichzeitigen Aktualisierungen pro Produkt unterstützen, ohne die Leistung zu beeinträchtigen.

Inkrementelle Aktualisierungen

Folgen Sie der Anleitung zum Aktualisieren des lokalen Inventars, um inkrementelle Inventaraktualisierungen vorzunehmen. Die neueren API-Methoden bieten eine detailliertere Steuerung der Inventarattribute für einzelne Orte.

fulfillment_info wird häufig verwendet, um die Verfügbarkeit der Auftragsausführung auf Standortebene für eine Product zu codieren. In einigen Fällen kann sich die Verfügbarkeit der Auftragsausführung für bestimmte Orte ändern. Sie können Aktualisierungen festlegen, die diese Änderung beschreiben, anstatt die Methode UpdateProduct zu verwenden, um alle Informationen zur Auftragsausführung des Produkts noch einmal anzugeben.

In solchen Fällen können Sie mit den Methoden AddFulfillmentPlaces und RemoveFulfillmentPlaces die Auftragsausführungsänderungen eines Produkts schrittweise aktualisieren, je nachdem, welche Orts-IDs für einen bestimmten Auftragsausführungstyp hinzugefügt oder entfernt werden.

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Vertex AI Search for Commerce finden Sie unter Vertex AI Search for Commerce-Clientbibliotheken. Weitere Informationen finden Sie in der API-Referenzdokumentation zu Vertex AI Search for Commerce Java.

Richten Sie zur Authentifizierung bei Vertex AI Search for Commerce Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

public static AddFulfillmentPlacesResponse addFulfillmentPlaces(
    Product productToUpdate, String fulfillmentInfoType, ImmutableList<String> placeIds)
    throws IOException, InterruptedException, ExecutionException {
  ProductServiceClient productClient = getProductServiceClient();

  AddFulfillmentPlacesRequest request = AddFulfillmentPlacesRequest.newBuilder()
      .setProduct(productToUpdate.getName())
      .setType(fulfillmentInfoType)
      .addAllPlaceIds(placeIds)
      .setAddTime(Timestamps.fromMillis(System.currentTimeMillis()))
      .build();

  AddFulfillmentPlacesResponse response = productClient
      .addFulfillmentPlacesAsync(request).get();

  productClient.shutdownNow();
  productClient.awaitTermination(2, TimeUnit.SECONDS);

  return response;
}

Proto

  {
    product: "projects/123/locations/global/catalogs/default_catalog/branches/default_branch/products/p123"
    type: "pickup-in-store"
    place_ids: "store0"
    place_ids: "store1"
    add_time: {
      seconds: 100
      nanos: 100
    }
    allow_missing: true
  }
  

Dieses Beispiel AddFulfillmentPlacesRequest fügt den Typ der Auftragsausführung "pickup-in-store" hinzu, um die IDs "store0" und "store1" für das angegebene Produkt zu platzieren. Da AddFulfillmentPlacesRequest.allow_missing auf „true“ gesetzt ist, werden die aktualisierten Inventarinformationen auch bei der Erstellung des Produkts gespeichert, auch wenn das Produkt noch nicht vorhanden ist. Die Aktualisierung ist mit einem Zeitstempel versehen, der mit AddFulfillmentPlacesRequest.add_time versehen ist, um zu verhindern, dass veraltete Aktualisierungen den Auftragsausführungsstatus dieser Orts-IDs überschreiben. Diese Features werden in den folgenden Abschnitten ausführlicher behandelt.

Das Verhalten ist bei RemoveFulfillmentPlacesRequest identisch und das Schema ist sehr ähnlich.

Wenn fulfillment_types von AddLocalInventories und RemoveLocalInventories aktualisiert wird, wird eine Zuordnung von jeder Orts-ID zu einer Liste der unterstützten Auftragsausführungstypen widergespiegelt. Wenn fulfillment_info durch AddFulfillmentPlaces und RemoveFulfillmentPlaces aktualisiert wird, wird eine Zuordnung von jedem bestimmten Auftragsausführungstyp zu einer Liste von Orts-IDs widergespiegelt, die jeden Typ unterstützt. Beide API-Typen ändern dieselben zugrunde liegenden Informationen zur Erfüllung. Die Auswirkungen beider API-Typen werden durch Product.fulfillment_info widergespiegelt.

Nicht inkrementelle Aktualisierungen

Die Methoden price_info, availability und available_quantity können nicht schrittweise aktualisiert werden, da sie Informationen zu Inventar auf Produktebene darstellen, anstatt Informationen auf Ortsebene zu verwenden. Es kann auch sinnvoll sein, nicht inkrementelle Aktualisierungen an fulfillment_info vorzunehmen. Statt nur inkrementeller Änderungen wird SetInventory empfohlen.

Die Methode setInventory ist die bevorzugte Methode zum Aktualisieren von Preis, Verfügbarkeit und Menge auf Produktebene, wenn viele häufige Updates erforderlich sind. Die Methode setInventory ist asynchron, daher erfolgen die Aktualisierungen möglicherweise nicht sofort. Das Standardkontingent (300.000 Anfragen pro Minute) unterstützt viel mehr Anfragen als UpdateProduct.

Außerdem wird die Methode setInventory für lokale Fulfillment-Updates verwendet, wenn fulfillmentInfo in der Anfrage enthalten ist. Die localInventories-Felder können damit jedoch nicht aktualisiert werden. Verwenden Sie für diese Attribute die Methoden addLocalInventories und removeLocalInventories.

Lokales Inventar wird unabhängig vom Katalog auf Geschäftsebene gespeichert. Für Kunden mit Online- und Offlineinventar kann der Hauptproduktkatalog für Onlineinventar verwendet werden. Alternativ kann ein bestimmtes placeId (z. B. -1 oder online) verwendet werden, um Onlineinventar darzustellen. Verwenden Sie jedoch den Hauptkatalog für das Onlineinventar, da die Produktinventarfelder mit gültigen priceInfo- und availability-Werten ausgefüllt werden sollten. Wenn für Online ein separates Inventar placeId verwendet wird, sollten auch die Preis- und Verfügbarkeitsinformationen im Hauptkatalog auf dem neuesten Stand gehalten werden. Weitere Informationen zu Aktualisierungen des lokalen Inventars finden Sie unter Lokales Inventar aktualisieren.

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Vertex AI Search for Commerce finden Sie unter Vertex AI Search for Commerce-Clientbibliotheken. Weitere Informationen finden Sie in der API-Referenzdokumentation zu Vertex AI Search for Commerce Java.

Richten Sie zur Authentifizierung bei Vertex AI Search for Commerce Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

public static SetInventoryResponse setInventoryWithMask(Product productToUpdate,
    FieldMask updateMask)
    throws IOException, ExecutionException, InterruptedException {
  ProductServiceClient productClient = getProductServiceClient();

  SetInventoryRequest request = SetInventoryRequest.newBuilder()
      .setInventory(productToUpdate)
      .setSetMask(updateMask)
      .setSetTime(Timestamps.fromMillis(System.currentTimeMillis()))
      .setAllowMissing(true)
      .build();

  SetInventoryResponse response = productClient.setInventoryAsync(request).get();

  productClient.shutdownNow();
  productClient.awaitTermination(2, TimeUnit.SECONDS);

  return response;
}

Proto

  {
    product: {
      name: "projects/123/locations/global/catalogs/default_catalog/branches/default_branch/products/p123"
      availability: IN_STOCK
      fulfillment_info: {
        type: "pickup-in-store"
        place_ids: "store0"
        place_ids: "store1"
        place_ids: "store2"
        place_ids: "store3"
      }
      fulfillment_info: {
        type: "same-day-delivery"
      }
    }
    set_time: {
      seconds: 100
      nanos: 100
    }
    set_mask: {
      paths: "availability"
      paths: "fulfillment_info"
    }
    allow_missing: true
  }
  

In dieser Anfrage sind die SetInventoryRequest.product.fulfillment_info-Felder vollständige Beschreibungen der zulässigen Orts-IDs jedes Auftragsausführungstyps im Gegensatz zu inkrementellen Spezifikationen. Die Aktualisierung von "same-day-delivery" gibt an, dass für diesen Typ der Auftragsausführung für dieses Produkt keine Orts-IDs zulässig sind. Alle anderen Auftragsausführungstypen werden in dieser Anfrage nicht aktualisiert. So können Sie die Orts-IDs nur für eine Teilmenge der Auftragsausführungstypen ersetzen, während die anderen Typen unverändert bleiben.

Standardmäßig aktualisiert SetInventory alle Inventarfelder, wenn SetInventory.set_mask nicht festgelegt oder leer ist. Wenn die Maske nicht leer ist oder ein Inventarfeld nicht explizit in SetInventoryRequest.set_mask aufgeführt ist, wird jeder angegebene Wert für dieses Inventarfeld in der Aktualisierungsanfrage ignoriert.

Wie bei inkrementellen Aktualisierungen kann das Feld SetInventoryRequest.set_time verwendet werden, um eine Aktualisierungszeit festzulegen, die auf die letzte aufgezeichnete Aktualisierungszeit aller aktualisierten Inventarfelder zutrifft.

Zeitstempelschutz für Inventaraktualisierungen

Es gibt mehrere verschiedene Pfade zum Aktualisieren der Inventarfelder eines Produkts. Zum Schutz vor Out-of-Order-Aktualisierungen ist jedes Inventarfeld mit einer neuesten Aktualisierungszeit verknüpft.

Die letzte Aktualisierungszeit wird für price_info, availability, available_quantity und jedes Paar von (fulfillment_info.place_ids, fulfillment_info.type) aufgezeichnet.

Die Methoden AddFulfillmentPlaces, RemoveFulfillmentPlaces und SetInventory ermöglichen dem Aufrufer, eine Aktualisierungszeit der Anfrage. Diese Aktualisierungszeit wird mit der letzten Aktualisierungszeit für die relevanten Inventarfelder verglichen und die Aktualisierung wird nur dann durchgeführt, wenn die Aktualisierungszeit ausschließlich hinter der letzten Aktualisierungszeit liegt.

Beispiel: Für die Orts-ID "store1" ist der Auftragsausführungstyp "pickup-in- store" aktiviert, wobei die letzte aufgezeichnete Aktualisierungszeit auf Zeit T gesetzt ist. Wenn RemoveFulfillmentPlacesRequest.type = "pickup-in-store" und RemoveFulfillmentPlacesRequest.place_ids "store1" enthalten, wird in der Anfrage "pickup-in-store" nur dann aus "store1" gelöscht, wenn die RemoveFulfillmentPlacesRequest.remove_time hinter der Uhrzeit T liegt. Dasselbe gilt für AddFulfillmentPlacesRequests.

SetInventory funktioniert auf ähnliche Weise zum Aktualisieren von price_info, availability und available_quantity. Beim Aktualisieren von fulfillment_info wird ein SetInventoryRequest implizit aufgefordert, alle angegebenen Orts-IDs für einen bestimmten Auftragsausführungstyp hinzuzufügen und alle nicht angegebenen vorhandenen IDs zu entfernen.

Wenn die SetInventoryRequest-Verarbeitung verarbeitet wird, wird die fulfillment_info-Aktualisierung implizit in eine AddFulfillmentPlacesRequest- und eine RemoveFulfillmentPlacesRequest-Datei für jeden angegebenen Auftragsausführungstyp umgewandelt. Das bedeutet, wenn ein vorhandener Ort "store1" mit Auftragsausführung "pickup-in-store" eine letzte Aktualisierungszeit T hat, die aktueller als SetInventoryRequest.set_time ist, dann wird das implizite Hinzufügen oder Entfernen von "store1" und "pickup-in-store" nicht angewendet.

Vorab geladene Attribute

setInventory ist asynchron. Das bedeutet, dass beim Hinzufügen oder Ändern von Inventarfeldern keine taxonomischen oder referenziellen Kontrollen erzwungen werden. Das im Antrag angegebene Produkt muss noch nicht vorhanden sein.

So können Kunden Preloading-Muster implementieren, bei denen die Verwaltung von Inventarfeldern vom Hauptkatalog oder Produktimportprozess entkoppelt werden kann. Nutzer können beispielsweise den Verfügbarkeits- oder Preiskontext importieren, bevor das zugehörige Produkt importiert wird.

Bei jeder Inventaraktualisierungsmethode kann der Aufrufer allow_missing in der Anfrage festlegen. Wenn allow_missing auf "true" gesetzt ist, wird eine Inventaraktualisierung auf ein nicht vorhandenes Product verarbeitet, als wäre das Product gemäß den Methodenspezifikationen vorhanden. Die Inventarinformationen werden maximal zwei Tage lang aufbewahrt, wenn der entsprechende Product innerhalb dieses Zeitraums nicht über CreateProduct erstellt wird.

Java

public static SetInventoryResponse setInventory(Product productToUpdate)
    throws IOException, ExecutionException, InterruptedException {
  ProductServiceClient productClient = getProductServiceClient();

  SetInventoryRequest request = SetInventoryRequest.newBuilder()
      .setInventory(productToUpdate)
      .setSetTime(Timestamps.fromMillis(System.currentTimeMillis()))
      .setAllowMissing(true)
      .build();

  SetInventoryResponse response = productClient.setInventoryAsync(request).get();

  productClient.shutdownNow();
  productClient.awaitTermination(2, TimeUnit.SECONDS);

  return response;
}

Wann werden die Product-Methoden verwendet?

Obwohl es möglich ist, Inventarfelder mit den CRUD-Methoden des Produkts zu aktualisieren, sollte der Aufrufer explizit die Auswirkungen auf vorhandene oder bereits vorhandene Inventarinformationen kennen.

Dies sind synchrone Methoden, d. h., die nachgelagerten Optimierungen, die für Inventarmethoden verwendet werden, gelten nicht und können für häufige Inventaraktualisierungen kostspielig werden. Verwenden Sie nach Möglichkeit die oben genannten Methoden zur Inventaraktualisierung.

CreateProduct

Wenn CreateProduct mit festgelegten Inventarfeldern aufgerufen wird, überschreiben die angegebenen Werte in CreateProductRequest.product alle vorab geladenen Werte für diese jeweiligen Felder. Wenn keine Inventarfelder festgelegt sind, werden automatisch alle vorhandenen Inventarinformationen verwendet.

Darüber hinaus wird der letzte Aktualisierungszeitpunkt für die überschriebenen Inventarfelder auf den Zeitpunkt des Methodenaufrufs zurückgesetzt.

CreateProduct mit vorab geladenem Inventar

PROTO

{
  parent: "projects/123/locations/global/catalogs/default_catalog/branches/default_branch"
  product_id: "p123"
  product: {
    name: "projects/123/locations/global/catalogs/default_catalog/branches/default_branch/products/p123"
    title: "some product"
    type: VARIANT
  }
}

In diesem Beispiel sind für das erstellte Produkt keine Inventarfelder festgelegt. Dies bedeutet, dass vorab geladene Inventarinformationen automatisch verwendet werden, wenn Sie sie mit den Methoden zur Inventaraktualisierung aktualisieren. Dies kann hilfreich sein, wenn Inventaraktualisierungen von Katalogaktualisierungen entkoppelt werden und eine neu erstellte Product-Synchronisierung mit vorhandenen Inventarinformationen synchronisiert werden soll.

CreateProduct mit explizitem Inventar

PROTO

{
  parent: "projects/123/locations/global/catalogs/default_catalog/branches/default_branch"
  product_id: "p123"
  product: {
    name: "projects/123/locations/global/catalogs/default_catalog/branches/default_branch/products/p123"
    title: "some product"
    type: VARIANT
    availability: OUT_OF_STOCK
    fulfillment_info: {
      type: "pickup-in-store"
    }
    fulfillment_info: {
      type: "same-day-delivery"
    }
  }
}

In diesem Beispiel wird ein Product mit explizit festgelegten Inventarfeldern erstellt. Diese Felder überschreiben alle bereits vorhandenen Werte und ignorieren die letzte Aktualisierungszeit für die entsprechenden Felder. Daher ist für das neu erstellte Product die Verfügbarkeit auf OUT_OF_STOCK festgelegt und keine Orts-IDs unterstützen die Auftragsausführungstypen "pickup-in-store" und "same-day-delivery".

CreateProduct mit Inventarinformationen können nützlich sein, wenn Sie nicht sicher sind, ob alle vorab geladenen Inventarinformationen korrekt sind, und Sie das Inventar lieber explizit zum Zeitpunkt der Erstellung von Product festzulegen, um den Katalog und das Inventar vollständig zu synchronisieren.

UpdateProduct

Mit der Methode UpdateProduct lassen sich bestimmte Attribute eines vorhandenen Katalogelements aktualisieren. Dies kann für einzelne oder mehrere Felder gleichzeitig und für einzelne Produkte oder mithilfe der Importmethode für mehrere Produkte erfolgen. Wenn Sie die Importmethode ohne Maske verwenden, werden die Daten überschrieben.

UpdateProduct wird häufig für Preis- und Verfügbarkeitsaktualisierungen in Echtzeit verwendet, kann aber auch zum Aktualisieren beliebiger Felder genutzt werden, ohne dass alle Daten für ein Produkt noch einmal eingereicht werden müssen. im Gegensatz zu createMethod oder importProducts.

Der Hauptvorteil von UpdateProduct ist, dass es sich um eine synchrone Anfrage handelt. Aktualisierungen des Index (und der Suche oder Empfehlungen) erfolgen nahezu sofort. UpdateProduct ist jedoch nicht für sehr häufige Aktualisierungen vorgesehen. Das Standardkontingent beträgt 12.000 Produktschreibanfragen pro Minute. Normalerweise sollten Sie diese Methode nur verwenden, wenn sich der Preis eines Artikels oder der Lagerbestand ändert (nicht bei jeder Mengenreduzierung).

UpdateProduct kann nur Attribute auf Produktebene ändern. Es kann nicht verwendet werden, um die Attribute für lokales Inventar für localInventories oder fulfillmentInfo zu ändern.

Wenn Sie einen Aufruf mit UpdateProduct oder ImportProducts ausführen, müssen Sie den Parameter updateMask angeben. updateMask enthält eine Liste der zu aktualisierenden Felder. Es werden nur die in „updateMask“ angegebenen Felder aktualisiert, auch wenn im Anfragetext weitere Felder übergeben werden. Wenn für eine Aktualisierungs- oder Importanfrage keine updateMask vorhanden ist, werden alle Felder genau auf die Werte aktualisiert, die im Anfragetext übermittelt werden.

Wenn UpdateProduct aufgerufen wird und die Feldmaske UpdateProductRequest.update_mask Inventarfelder enthält, überschreiben die in UpdateProductRequest.product angegebenen Werte alle vorab geladenen Werte für diese jeweiligen Felder.

Darüber hinaus wird der letzte Aktualisierungszeitpunkt für die überschriebenen Inventarfelder auf den Zeitpunkt des Methodenaufrufs zurückgesetzt.

PROTO

{
  product: {
    name: "projects/123/locations/global/catalogs/default_catalog/branches/default_branch/products/p123"
    availability: IN_STOCK
    fulfillment_info: {
      type: "pickup-in-store"
      place_ids: "store0"
      place_ids: "store1"
      place_ids: "store2"
      place_ids: "store3"
    }
    fulfillment_info: {
      type: "same-day-delivery"
    }
  }
  update_mask: {
    paths: "availability"
    paths: "fulfillment_info"
  }
}

Dieses Beispiel ähnelt dem Beispiel SetInventory, mit der Ausnahme, dass die Aktualisierung unabhängig von der letzten Aktualisierungszeit jedes Inventarfelds angewendet wird.

  • UpdateProduct für Inventar kann hilfreich sein, wenn eine vollständige Synchronisierung von Inventarinformationen erforderlich ist, ohne Zeitstempelschutz zu ignorieren.

  • Wenn Sie UpdateProductRequest.allow_missing auf true setzen, um ein Product-Upsert durchzuführen, können Sie Inventarinformationen mit UpdateProduct vorab laden. Für die Methode müssen bestimmte Katalogfelder wie UpdateProductRequest.product.title festgelegt werden. Verwenden Sie daher die Methoden zur Inventaraktualisierung zum Vorabladen von Anwendungsfällen.

DeleteProduct

Wenn DeleteProduct aufgerufen wird, werden alle vorhandenen Inventarinformationen für das Produkt DeleteProductRequest.name gelöscht, einschließlich aller Datensätze der letzten Aktualisierungszeit für jedes Inventarfeld.

Überlegungen beim Ersetzen von Attributen auf Produktebene durch Attribute auf Inventarebene

Beachten Sie die folgenden Überlegungen und Einschränkungen für die einzelnen Ansätze:

Funktion Inventar auf Produktebene Inventar auf Geschäftsebene (lokal)
Suchfilter und Einstellungen für die Steigerung Ja Ja
Filter- und Facettenschlüsselformat, das in facetSpec angegeben ist Ja Nein
Verfügbar für Suchfacette Ja Nein
In der Suchantwort zurückgegeben Ja Ja (mit variantRollupKeys)
Filter und Boost-Steuerungen für Recommendations AI v2 Ja Nein
Funktion Inventar auf Produktebene Inventar auf Geschäftsebene (lokal)
Suchfilter und Boost-Einstellungen
Filter- und Facettenschlüsselformat, das in facetSpec angegeben ist
Verfügbar für Suchfacette
In der Suchantwort zurückgegeben (mit variantRollupKeys)
Filter und Boost-Steuerungen für Recommendations AI v2

Die verschiedenen Methoden zum Aktualisieren von Produktverfügbarkeit, Auftragsausführung und lokalem Preis haben einige Überschneidungen:

Funktion UpdateProduct setInventory addLocalInventories
Echtzeitaktualisierungen
Produktfelder aktualisieren
Produktpreis aktualisieren
Produktverfügbarkeit aktualisieren
Aktualisieren fulfillmentInfo
localInventories (lokale Preise) aktualisieren
Zeitstempelreihenfolge

Beispiele

In diesem Abschnitt wird gezeigt, wie Sie den Produktinventar mit den Methoden UpdateProduct und setInventory in curl-Befehlen aktualisieren.

  • UpdateProduct verwendet die HTTP-PATCH-Methode der REST API für synchrone Echtzeitaktualisierungen von Feldern auf Produktebene wie Preis und Verfügbarkeit. Sie kann auch für Batch-Aktualisierungen verwendet werden, indem die Methode import mit einem updateMask verwendet wird.

  • Die asynchrone Methode setInventory wird zum Aktualisieren von Inventarfeldern auf Produktebene (Preis, Verfügbarkeit, Menge) und Details zur lokalen Erfüllung mit fulfillmentInfo verwendet. Sie kann jedoch keine lokalen Preise oder Attribute ändern, die in localInventories gespeichert sind.

UpdateProduct zum Aktualisieren von Produktpreis und -verfügbarkeit verwenden

Bei Verwendung der REST API wird für UpdateProduct die HTTP-Methode PATCH verwendet. Die Endpunkt-URL ist dieselbe wie bei CreateProduct, GetProduct und DeleteProduct. Es werden jedoch die HTTP-Methoden PUT, GET und DELETE verwendet. Maximieren Sie die folgenden Links, um die entsprechenden curl-Beispiele aufzurufen.

setInventory zum Aktualisieren von Produktpreis und -verfügbarkeit verwenden

setInventory unterstützt nur die folgenden Felder:

  • availability
  • availableQuantity
  • priceInfo

Maximieren Sie die folgenden Links, um die entsprechenden curl-Beispiele aufzurufen.

Für lokales Inventar können placeIds und Auftragsausführungstypen in fulfillmentInfo übergeben werden, wie in diesem curl-Beispiel gezeigt:

Tutorials

In diesen Anleitungen erfahren Sie, wie Sie setInventory verwenden oder Erfüllungen hinzufügen oder entfernen.

Anleitung zur Inventarauswahl

In dieser Anleitung erfahren Sie, wie Sie Inventaraktualisierungen mit der Methode SetInventory senden, anstatt das gesamte Produkt zu aktualisieren.


Klicken Sie auf Anleitung, um eine detaillierte Anleitung für diese Aufgabe direkt im Cloud Shell-Editor zu erhalten:

Anleitung


Anleitung zum Hinzufügen von Orten für die Auftragsausführung

Wir empfehlen, anstelle von AddFulfillmentPlaces die Methode AddLocalInventories zu verwenden. AddLocalInventories erzielt dieselben Ergebnisse, bietet aber eine detailliertere Kontrolle über die Aufnahme lokaler Inventardaten. Weitere Informationen finden Sie in der Dokumentation zu AddLocalInventories.

In dieser Anleitung erfahren Sie, wie Sie Informationen zur Produkterfüllung mit der Methode AddFulfillmentPlaces aktualisieren. So können in der Suche Updates angezeigt werden, in denen Produkte verfügbar sind und Bestellungen ausgeführt werden können. Ein Käufer sucht beispielsweise in einem Geschäft nach blauen Jeans, die aber nicht vorrätig sind. Sobald die Jeans in diesem oder einem anderen Shop wieder auf Lager sind, sieht der Käufer die Updates und kann mit der Bestellung fortfahren.


Klicken Sie auf Anleitung, um eine detaillierte Anleitung für diese Aufgabe direkt im Cloud Shell-Editor zu erhalten:

Anleitung


Anleitung zum Entfernen von Orten für die Auftragsausführung

Wir empfehlen, anstelle von RemoveFulfillmentPlaces die Methode RemoveLocalInventories zu verwenden. RmoveLocalInventories erzielt dieselben Ergebnisse, bietet aber eine detailliertere Kontrolle über die Aufnahme lokaler Inventardaten. Weitere Informationen finden Sie in der Dokumentation zu RemoveLocalInventories.

In dieser Anleitung erfahren Sie, wie Sie Informationen zur Produkterfüllung mit der Methode RemoveFulfillmentPlaces aktualisieren. So kann Vertex AI Search for Commerce Aktualisierungen anzeigen, in denen Produkte nicht verfügbar sind und Bestellungen nicht ausgeführt werden können. So können in der Suche Aktualisierungen angezeigt werden, bei denen Produkte nicht verfügbar sind und Bestellungen nicht ausgeführt werden können. Ein Käufer sucht beispielsweise in einem Geschäft nach blauen Jeans. Wenn die Jeans in diesem Geschäft nicht mehr auf Lager sind, wird das dem Käufer angezeigt und er kann seine Bestellung nicht fortsetzen.


Klicken Sie auf Anleitung, um eine detaillierte Anleitung für diese Aufgabe direkt im Cloud Shell-Editor zu erhalten:

Anleitung