L'API OmnichannelSettings è il punto di accesso per configurare i programmi annunci di inventario locale (LIA) e schede locali senza costi (FLL).
Utilizzalo per
- Gestire (creare e aggiornare) le impostazioni omnicanale
- Recupera (ottieni ed elenca) le impostazioni omnicanale
- Richiedere la verifica dell'inventario per i commercianti idonei
Per saperne di più, consulta la panoramica degli annunci di inventario locale e delle schede locali senza costi.
Prerequisiti
Dovresti avere
un account Merchant Center
un profilo dell'attività. Se non ne hai uno, puoi crearlo. Consulta Registrati per richiedere un profilo dell'attività.
Un collegamento tra il tuo Profilo dell'attività e il tuo account Merchant Center. Per creare il collegamento, puoi utilizzare l'interfaccia utente di Merchant Center o l'API Merchant Center (vedi Collegare un profilo dell'attività su Google).
Crea un'impostazione omnicanale
Puoi utilizzare il metodo omnichannelSettings.create per creare un'impostazione
omnicanale. Il metodo create accetta una risorsa omnichannelSetting come input e
restituisce l'impostazione omnicanale creata, se l'operazione va a buon fine.
Quando crei un'offerta, devi compilare sia il campo regionCode sia il campo
LsfType:
- OmnichannelSetting è su base nazionale.
RegionCodedefinisce il paese di destinazione. Una volta creato, non puoi modificarlo.RegionCodedeve rispettare la regola di denominazione definita dal progetto Common Locale Data Repository (CLDR). LsfTypesi basa sulla pagina del prodotto. Per maggiori dettagli, vediLsfType.
Per maggiori dettagli, consulta Modificare l'esperienza sulla pagina di prodotto per gli annunci di inventario locale.
Non devi compilare tutti i campi durante la fase di creazione, ma puoi
configurarli in un secondo momento. Per aggiornare un omnichannelSetting esistente, consulta
Aggiornare un'impostazione omnicanale.
Ecco una richiesta di esempio se scegli MHLSF_BASIC e ti registri
inStock:
POST https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/omnichannelSettings
{
"regionCode": "{REGION_CODE}",
"lsfType: "MHLSF_BASIC",
"inStock": {
"uri": "{URI}"
}
}
Sostituisci quanto segue:
{ACCOUNT_ID}: l'identificatore univoco del tuo account Merchant Center{REGION_CODE}: un codice regione definito da CLDR{URI}: un URI valido utilizzato per la recensione specificata. Un URI non idoneo potrebbe impedire l'approvazione.
Una volta eseguita correttamente la richiesta, dovresti visualizzare la seguente risposta:
{
"name": "accounts/{ACCOUNT_ID}/omnichannelSettings/{omnichannel_setting}",
"regionCode": "{REGION_CODE}",
"lsfType: "MHLSF_BASIC",
"inStock": {
"uri": "{URI}",
"state": "RUNNING"
}
}
La registrazione di diverse funzionalità LIA/FLL utilizzando i campi omnichannelSetting attiva
revisioni manuali che in genere richiedono da un paio di ore a un paio di giorni. Ti
consigliamo di ricontrollare i dati inseriti per evitare tempi di attesa inutili dovuti a
dati non idonei.
Per visualizzare l'impostazione omnicanale appena creata o controllare lo stato delle recensioni,
utilizza accounts.omnichannelSettings.get o accounts.omnichannelSettings.list,
specificando il paese.
Tipo di vetrina locale
In base alla pagina di prodotto che prevedi di utilizzare, scegli un LsfType:
| Tipo di pagina di prodotto | LsfType | Valore enum |
|---|---|---|
| Pagine di prodotto con disponibilità in negozio | Vetrina locale ospitata dal commerciante (implementazione di base) | MHLSF_BASIC |
| Pagine di prodotto specifiche per i singoli negozi con disponibilità e prezzo | Vetrina locale ospitata dal commerciante (implementazione completa) | MHLSF_FULL |
| Pagine di prodotto senza disponibilità in negozio | Vetrina locale su Google | GHLSF |
Se scegli i tipi di vetrina locale ospitata dal commerciante, devi anche compilare
il campo URI per almeno uno dei seguenti valori: inStock o pickup.
InStock
Puoi utilizzare InStock per fornire ulteriori informazioni sulla pagina del prodotto.
Se scegli i tipi di vetrina locale ospitata dal commerciante e specifichi il campo URI in InStock, mostri la tua intenzione di pubblicare prodotti con disponibilità in stock. Inizieremo una revisione in base all'URI fornito.
Se scegli il tipo GHLSF, devi fornire un campo InStock vuoto nella
richiesta. A differenza dei tipi di LSF ospitati dal commerciante, per completare l'onboarding devi
completare la procedura di verifica dell'inventario.
Questo codice di esempio crea un omnichannelSetting con GHLSF:
package shopping.merchant.samples.accounts.v1;
// [START merchantapi_create_omnichannel_setting]
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.AccountName;
import com.google.shopping.merchant.accounts.v1.CreateOmnichannelSettingRequest;
import com.google.shopping.merchant.accounts.v1.InStock;
import com.google.shopping.merchant.accounts.v1.OmnichannelSetting;
import com.google.shopping.merchant.accounts.v1.OmnichannelSetting.LsfType;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceClient;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/**
* This class demonstrates how to create an omnichannel setting for a given Merchant Center account
* in a given country
*/
public class CreateOmnichannelSettingSample {
public static void createOmnichannelSetting(Config config, String regionCode) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the retrieved credentials.
OmnichannelSettingsServiceSettings omnichannelSettingsServiceSettings =
OmnichannelSettingsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Calls the API and catches and prints any network failures/errors.
try (OmnichannelSettingsServiceClient omnichannelSettingsServiceClient =
OmnichannelSettingsServiceClient.create(omnichannelSettingsServiceSettings)) {
String accountId = config.getAccountId().toString();
String parent = AccountName.newBuilder().setAccount(accountId).build().toString();
// Creates an omnichannel setting with GHLSF type in the given country.
CreateOmnichannelSettingRequest request =
CreateOmnichannelSettingRequest.newBuilder()
.setParent(parent)
.setOmnichannelSetting(
OmnichannelSetting.newBuilder()
.setRegionCode(regionCode)
.setLsfType(LsfType.GHLSF)
.setInStock(InStock.getDefaultInstance())
.build())
.build();
System.out.println("Sending create omnichannel setting request:");
OmnichannelSetting response =
omnichannelSettingsServiceClient.createOmnichannelSetting(request);
System.out.println("Inserted Omnichannel Setting below:");
System.out.println(response);
} catch (Exception e) {
System.out.println("An error has occurred: ");
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// The country which you're targeting at.
String regionCode = "{REGION_CODE}";
createOmnichannelSetting(config, regionCode);
}
}
// [END merchantapi_list_omnichannel_settings]
Ritiro
Oltre alla disponibilità in negozio, puoi anche migliorare i prodotti disponibili in negozio con la funzionalità Ritira, idonea solo per i tipi di annunci di inventario locale ospitati dal commerciante.
Quando un prodotto è contrassegnato per il ritiro, significa che un cliente può acquistarlo online
e ritirarlo in negozio. Se imposti il campo Pickup, mostri la tua
intenzione di pubblicare prodotti con un contratto di servizio per il ritiro. Inizieremo una revisione in base
all'URI fornito.
Di seguito è riportata una richiesta di esempio che crea un'impostazione omnichannel con Pickup:
POST https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/omnichannelSettings
{
"regionCode": "{REGION_CODE}",
"lsfType: "MHLSF_BASIC",
"pickup": {
"uri: "{URI}"
}
}
In esposizione, può essere ordinato
Con la funzionalità In esposizione, può essere ordinato puoi mostrare i prodotti esposti nel tuo negozio fisico, ma non disponibili per un acquisto immediato. Ad esempio, mobili di grandi dimensioni:
- I clienti che cercano prodotti simili su Google visualizzeranno questi annunci con l'annotazione "In negozio" nei risultati di ricerca.
- I clienti che esplorano il negozio in una pagina dei risultati di ricerca di Google vedranno questi prodotti contrassegnati come "Ordinabile".
Possono scegliere l'annuncio di inventario locale o la scheda locale senza costi per visualizzare l'articolo. Per acquistare l'articolo, possono visitare il tuo negozio fisico, visualizzarlo e quindi ordinarlo, scegliendo tra la spedizione a domicilio oppure presso il tuo negozio, dove potranno ritirarlo.
Pagina Informazioni (Germania, Austria e Svizzera)
Se pubblichi annunci in Austria e Germania e scegli GHLSF, devi inviare una pagina
Informazioni.
Se pubblichi annunci in Svizzera, devi inviare una pagina "Informazioni" indipendentemente da
LsfType.
Finché l'URL della pagina Informazioni non viene verificato, i commercianti GHLSF non possono richiedere la verifica manuale dell'inventario da parte di Google.
Per tutti i commercianti di questi tre paesi, il servizio non attiva le funzionalità FLL/LIA finché la pagina Chi siamo non viene approvata.
Verifica dell'inventario
La verifica dell'inventario è obbligatoria solo per i commercianti GHLSF. Non è
supportato per i tipi MHLSF.
Prima o dopo aver aggiunto i dati di prodotto e di inventario (utilizzando
accounts.products.localInventories.insert o l'interfaccia utente di Merchant Center), devi verificare il tuo contatto. Fornisci un contatto per la verifica dell'inventario (nome e indirizzo email) utilizzando il metodo create o update. Il
contatto riceverà un'email inviata da Google e potrà verificare il proprio
stato facendo clic su un pulsante nel messaggio.
Una volta completata questa operazione, puoi richiedere la verifica dell'inventario. Per saperne di più, consulta Informazioni sulla verifica dell'inventario.
Puoi modificare il contatto durante la procedura di verifica o dopo
la verifica utilizzando omnichannelSetting.update.
Al termine della procedura, Google convalida l'accuratezza delle informazioni fornite.
Recupera un'impostazione omnicanale
Per recuperare la configurazione omnichannelSetting in un determinato paese o controllare lo stato attuale delle recensioni, utilizza il metodo omnichannelSettings.get.
Ecco una richiesta di esempio:
GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/omnichannelSettings/{OMNICHANNEL_SETTING}
Sostituisci quanto segue:
{ACCOUNT_ID}: l'identificatore univoco del tuo account Merchant Center{OMNICHANNEL_SETTING}: Il codice regione del paese di destinazione
Lo stato ACTIVE indica che la revisione è stata approvata.
Se lo stato è FAILED, risolvi i problemi e attiva una nuova revisione chiamando il numero omnichannelSetting.update.
Il campo di sola lettura LFP mostra lo stato della partnership per i feed locali. Per collegarti
alla partnership, utilizza lfpProviders.linkLfpProvider.
Per saperne di più sul controllo degli stati e sul loro significato, vedi Visualizzare lo stato di un'impostazione omnicanale.
Elenca le impostazioni omnicanale
Per recuperare tutte le informazioni omnichannelSetting del tuo account, utilizza il metodo omnichannelSettings.list.
Ecco un esempio di codice:
package shopping.merchant.samples.accounts.v1;
// [START merchantapi_list_omnichannel_settings]
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.AccountName;
import com.google.shopping.merchant.accounts.v1.ListOmnichannelSettingsRequest;
import com.google.shopping.merchant.accounts.v1.OmnichannelSetting;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceClient;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceClient.ListOmnichannelSettingsPagedResponse;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/**
* This class demonstrates how to get the list of omnichannel settings for a given Merchant Center
* account
*/
public class ListOmnichannelSettingsSample {
public static void omnichannelSettings(Config config) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the retrieved credentials.
OmnichannelSettingsServiceSettings omnichannelSettingsServiceSettings =
OmnichannelSettingsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
String accountId = config.getAccountId().toString();
String parent = AccountName.newBuilder().setAccount(accountId).build().toString();
// Calls the API and catches and prints any network failures/errors.
try (OmnichannelSettingsServiceClient omnichannelSettingsServiceClient =
OmnichannelSettingsServiceClient.create(omnichannelSettingsServiceSettings)) {
ListOmnichannelSettingsRequest request =
ListOmnichannelSettingsRequest.newBuilder().setParent(parent).build();
System.out.println("Sending list omnichannel setting request:");
ListOmnichannelSettingsPagedResponse response =
omnichannelSettingsServiceClient.listOmnichannelSettings(request);
int count = 0;
// Iterates over all the entries in the response.
for (OmnichannelSetting omnichannelSetting : response.iterateAll()) {
System.out.println(omnichannelSetting);
count++;
}
System.out.println(String.format("The following count of elements were returned: %d", count));
} catch (Exception e) {
System.out.println("An error has occurred: ");
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
omnichannelSettings(config);
}
}
// [END merchantapi_list_omnichannel_settings]
Aggiornare un'impostazione omnicanale
Per aggiornare la configurazione di un'impostazione omnicanale esistente, utilizza il metodo omnichannelSettings.update.
Per eseguire l'aggiornamento, devi aggiungere la funzionalità che vuoi alla maschera di aggiornamento e compilare i campi corrispondenti nel campo omnichannelSetting della richiesta di aggiornamento.
Puoi aggiornare uno qualsiasi dei
lsfTypeinStockpickupodoaboutinventoryVerification
Se un attributo non è incluso nella maschera di aggiornamento, non verrà aggiornato.
Se un attributo è incluso nella maschera di aggiornamento, ma non impostato nella richiesta, verrà cancellato.
Il seguente esempio di codice mostra come aggiornare il campo di verifica dell'inventario.
package shopping.merchant.samples.accounts.v1;
// [START merchantapi_update_omnichannel_setting]
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.protobuf.FieldMask;
import com.google.shopping.merchant.accounts.v1.InventoryVerification;
import com.google.shopping.merchant.accounts.v1.OmnichannelSetting;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingName;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceClient;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceSettings;
import com.google.shopping.merchant.accounts.v1.UpdateOmnichannelSettingRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/**
* This class demonstrates how to update an omnichannel setting for a given Merchant Center account
* in a given country
*/
public class UpdateOmnichannelSettingSample {
public static void updateOmnichannelSettings(
Config config, String regionCode, String contact, String email) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the retrieved credentials.
OmnichannelSettingsServiceSettings omnichannelSettingsServiceSettings =
OmnichannelSettingsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Calls the API and catches and prints any network failures/errors.
try (OmnichannelSettingsServiceClient omnichannelSettingsServiceClient =
OmnichannelSettingsServiceClient.create(omnichannelSettingsServiceSettings)) {
String accountId = config.getAccountId().toString();
String name =
OmnichannelSettingName.newBuilder()
.setAccount(accountId)
.setOmnichannelSetting(regionCode)
.build()
.toString();
OmnichannelSetting omnichannelSetting =
OmnichannelSetting.newBuilder()
.setName(name)
.setInventoryVerification(
InventoryVerification.newBuilder()
.setContact(contact)
.setContactEmail(email)
.build())
.build();
FieldMask fieldMask = FieldMask.newBuilder().addPaths("inventory_verification").build();
UpdateOmnichannelSettingRequest request =
UpdateOmnichannelSettingRequest.newBuilder()
.setOmnichannelSetting(omnichannelSetting)
.setUpdateMask(fieldMask)
.build();
System.out.println("Sending update omnichannel setting request:");
OmnichannelSetting response =
omnichannelSettingsServiceClient.updateOmnichannelSetting(request);
System.out.println("Updated Omnichannel Setting below:");
System.out.println(response);
} catch (Exception e) {
System.out.println("An error has occurred: ");
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// The country which you're targeting at.
String regionCode = "{REGION_CODE}";
// The name of the inventory verification contact you want to update.
String contact = "{NAME}";
// The address of the inventory verification email you want to update.
String email = "{EMAIL}";
updateOmnichannelSettings(config, regionCode, contact, email);
}
}
// [END merchantapi_update_omnichannel_setting]
Richiedere la verifica dell'inventario
omnichannelSettings.requestInventoryVerification è pertinente solo per i commercianti GHLSF.
Prima di chiamare questa RPC, devi aver eseguito le seguenti operazioni:
- Carica i dati di prodotto e di inventario.
- Verifica un contatto per la verifica dell'inventario.
- Per i commercianti in Austria, Germania o Svizzera, completa una revisione della pagina
About.
Per determinare la tua idoneità, chiama il numero omnichannelSettings.get e controlla
omnichannelSetting.inventoryVerification.state. Se viene visualizzato INACTIVE, puoi
chiamare omnichannelSettings.requestInventoryVerification.
package shopping.merchant.samples.accounts.v1;
// [START merchantapi_request_inventory_verification]
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingName;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceClient;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceSettings;
import com.google.shopping.merchant.accounts.v1.RequestInventoryVerificationRequest;
import com.google.shopping.merchant.accounts.v1.RequestInventoryVerificationResponse;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/**
* This class demonstrates how to request inventory verification for a given Merchant Center account
* in a given country
*/
public class RequestInventoryVerificationSample {
public static void requestInventoryVerification(Config config, String regionCode)
throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the retrieved credentials.
OmnichannelSettingsServiceSettings omnichannelSettingsServiceSettings =
OmnichannelSettingsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Calls the API and catches and prints any network failures/errors.
try (OmnichannelSettingsServiceClient omnichannelSettingsServiceClient =
OmnichannelSettingsServiceClient.create(omnichannelSettingsServiceSettings)) {
String accountId = config.getAccountId().toString();
String name =
OmnichannelSettingName.newBuilder()
.setAccount(accountId)
.setOmnichannelSetting(regionCode)
.build()
.toString();
RequestInventoryVerificationRequest request =
RequestInventoryVerificationRequest.newBuilder().setName(name).build();
System.out.println("Sending request inventory verification request:");
RequestInventoryVerificationResponse response =
omnichannelSettingsServiceClient.requestInventoryVerification(request);
System.out.println("Omnichannel Setting after inventory verification request below:");
System.out.println(response);
} catch (Exception e) {
System.out.println("An error has occurred: ");
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// The country which you're targeting at.
String regionCode = "{REGION_CODE}";
requestInventoryVerification(config, regionCode);
}
}
// [END merchantapi_request_inventory_verification]
Visualizza lo stato di un'impostazione omnicanale.
Per controllare lo stato di revisione delle revisioni di onboarding degli annunci di inventario locale, controlla ReviewState
per gli attributi corrispondenti di omnichannelSetting restituiti dai metodi
omnichannelSettings.get o omnichannelSettings.list.
Il campo ReviewState si applica a tutte le revisioni di onboarding, ad eccezione del processo di verifica dell'inventario, e può avere i seguenti valori:
ACTIVE: è approvato.FAILED: è stato rifiutato.RUNNING: è ancora in fase di revisione.ACTION_REQUIRED: questo esiste solo inInStock.stateper i commercianti GHLSF. Significa che devi richiedere la verifica dell'inventario per attivare gli annunci di inventario locale.
InventoryVerification.State ha i seguenti valori:
SUCCEEDED: è approvato.INACTIVE: puoi richiedere la verifica dell'inventario.RUNNING: è in corso di revisioneSUSPENDED: La verifica dell'inventario non è riuscita troppe volte (di solito 5) e devi attendere prima di poterla richiedere di nuovo.ACTION_REQUIRED: Devi intraprendere ulteriori azioni prima di richiedere la verifica dell'inventario.
Risolvere i problemi relativi all'API OmnichannelSettings
Questa sezione descrive come risolvere i problemi comuni.
Crea un'impostazione omnicanale
- Assicurati di impostare sia
LsfTypecheRegionCode. - Se scegli
GHLSF, fornisci unInStockvuoto nella richiesta. - Se scegli i tipi di LSF ospitati dal commerciante, fornisci almeno un URI in
InStockoPickup.
Aggiornare un'impostazione omnicanale
Il metodo di aggiornamento per questa risorsa richiede le seguenti regole aggiuntive:
- Non puoi modificare il codice regione.
- Non puoi apportare aggiornamenti mentre la funzionalità Annunci di inventario locale/Feed di inventario locale è in esecuzione o è stata approvata.
- Quando passi dai tipi di LSF ospitati dal commerciante a
GHLSF, seInStockePickupsono stati configurati in precedenza, devi includerli nella maschera di aggiornamento insieme all'aggiornamento diLsfType.
Ad esempio, se in precedenza hai richiesto MHLSF_BASIC e Pickup e queste sono state
rifiutate, puoi passare a GHLSF inviando una richiesta come questa:
PATCH https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/omnichannelSettings/{REGION_CODE}?update_mask=lsf_type,in_stock,pickup
{
"lsfType: "GHLSF",
"inStock": {},
}
Sostituisci quanto segue:
{ACCOUNT_ID}: l'identificatore univoco del tuo account Merchant Center{REGION_CODE}: un codice regione definito da CLDR
Richiedere la verifica dell'inventario
Se, nonostante l'aggiornamento dei feed dei prodotti o dell'inventario e la conferma del contatto,
InventoryVerification.state è diverso da INACTIVE:
- Per i commercianti in Austria, Germania e Svizzera: assicurati di aver completato una revisione della pagina Informazioni.
- Ci sarà un ritardo di circa 48 ore.
- In caso di errori ripetuti di controllo dell'inventario (più di cinque), il servizio impone un periodo di attesa di 30 giorni prima di consentire un'altra richiesta. Contatta l'Assistenza Google se vuoi richiederlo in anticipo.
Scopri di più
Per ulteriori dettagli, consulta il Centro assistenza annunci di inventario locale e schede locali senza costi.