Uno dei problemi di un e-commerce è quello del reperimento schede tecniche \ schede prodotto. La questione è cruciale per molti aspetti:
- aspetto qualitativo, per dare una immagine autorevolezza, trasparenza e serietà dimostrando di conoscere quel che si vende;
- per la necessità di attrarre il navigatore, magari inesperto, descrivendo il prodotto in modo completo e attraente;
- necessità di avere informazioni sui prodotti per poterli cercare sul sito in base alle features o di esporli al WEB per renderli ricercabili in base alle sue peculiarità;
- delimitare le caratteristiche del prodotto in modo da censire e chiarire quel che ha\fa piuttosto che quello che non fa\ha (utile in caso di controversia con i clienti fuorviati da descrizioni \ nomi prodotti non univoci);
- necessità di dettagliare le caratteristiche prodotto per consentire comparazioni omogenee (essenziale per prodotti tecnologici), anche per fornire al utente finale alternative;
- integrazione delle informazioni ottenute dai fornitori (caso del B2C) che spesso espongono solo i codici identificativi degli stessi o le cui caratteriste forniteci siano errate o non di “prima mano” (quando ci si affida a fornitori operanti nel B2B o di modesta dimensione che non hanno un buon “ufficio catalogo”);
- necessità di automatizzare gli aggiornamenti delle informazioni relative ai prodotti trattati che in realtà medio grandi, sono provenienti da svariati fornitori anche disomogenei per caratteristiche merceologiche trattate. Utili anche a classificare i prodotti nelle giuste categorie di appartenenza da tracciare con la propria architettura di catalogo (categorie dello storage). Errare è umano e gli errori nelle schede prodotto sono sempre in agguato la quantità di informazioni da tenere d’occhio è tale da scoraggiare quasiasi intervento manuale meglio affidarsi a specialisti qualificati;
- fornire un automatismo sulla localizzazione delle schede prodotto altrimenti da sottoporre manualmente e consentendo praticamente la possibilità di poter vendere a livello internazionale.
Il caso di cui parlerò in questo articolo riguarderà solo l’acquisizione di schede relative a prodotti dell’elettronica di consumo.
Come ho già affrontato in “integrazione cataloghi fornitore“, le informazioni di cui disporremo normalmente non sempre sono soddifacenti e attendibili e tra quelle propedeutiche alla pubblicazione sulle vetrine deve esserci la scheda del prodotto. Esistono ormai svariati fornitori di schede prodotto che vendono il servizio, il mercato più ampio è quello delle schede dell’elettronica di consumo. Ad esempio tra questi fornitori possiamo citare:
- GfK; fornitore con un ottimo standard qualitativo ed un buon layout ma il bacino di prodotti è limitato alle categorie di elettronica per l’informatica e telecomunicazioni (questo sino al qualche mese indietro il presente articolo). Il prezzo del servizio è impegnativo per una piccola impresa. E’ possibile chiedere una demo live, io l’ho fatto e mi hanno reso disponibile front-end e backOffice con Magento a questo link (se ancora attivo): http://Gre.gfk.it. Una demo invece delle schede tecniche dal sito:
www.spexlive.net. - IceCat; fornitore con un sufficiente standard qualitativo le cui lacune sono comunque compensate dal basso costo e dalla ottimo bacino di categorie coperte. Forniscono sia la scheda del prodotto che il set di features omogenee per categoria che consentono di montare motori di filtraggio e comparazione sulle vetrine del front-end. E’ notevolmente diffuso e ci sono una infinità di moduli e plug-in che si basano sul suo catalogo, gratuiti e non ad esempio ce ne sono per integrazione con Magento (Icecat live oppure Icecat connect) e Prestashop. Ci sono due tipologie di servizio: gratuito e a pagamento. Per quello a pagamento c’è anche la possibilità di lavorare con schede prodotto localizzate nelle principali lingue.
La soluzione proposta è Icecat con sottoscrizione di abbonamento a pagamento. Il presente articolo non sarà esaustivo probabilmente ometterò alcune strategie perché magari nel frattempo IceCat le ha introdotte, il punto di forza di quanto scrivo è nel fatto che corrisponde ad un caso concreto con analisi di dettagli della soluzione implementata. Descriverò sia l’acquisizione di schede prodotto che son stati appena introdotti nell’e-commerce e sia l’aggiornamento di schede relative a prodotti già pubblicati.
Indice
Acquisizione di schede per nuovi prodotti
IceCat oltre a mettere a disposizione, dal proprio portale, la possibilità di interrogare subito il proprio database offre il servizio di scaricare il proprio file indice o gestire le richieste di interrogazione prodotti. Quindi le modalità sono due: elaborazione offline dopo aver scaricato il file indice schede prodotto (index) oppure attraverso interrogazioni via HTTP. I contenuti esposti da IceCat mediante queste interrogazioni è principalmente in formato XML. Menzione speciale è la disponibilità delle schede prodotto localizzate, infatti sottoscrivendo il relativo abbonamento potremmo disporre oltre della scheda nella lingua pilota anche di tutte le altre necessarie, a tal scopo consiglierei di attrezzare da subito la propria base dati di campi appositi per gestire la localizzazione delle schede prodotto.
Interrogazioni via HTTP
Trattasi di chiamate puntuali, ovvero riguardanti uno ed un solo prodotto, ed i cui parametri sono forniti via query string dell’URL, il risultato ottenuto sarà la scheda in formato XML o un codice d’errore esposto sempre in formato XML.
Le chiamate sono sostanzialmente tre tipi: fornendo l’EAN, fornendo lo sku e brand infine fornendo il Product_id (identificativo prodotto secondo IceCat, utile soprattutto per gestire le modifiche disponibili alle schede prodotto già importate). Altro parametro condiviso a tutte le modalità è il codice lingua (ISO 639-1 codes) con cui si richiede la scheda.
Elaborazione offline mediante indice
Dato il nostro insieme di prodotti, di cui recuperare la scheda tecnica, potremmo procedere eseguendo una ricerca iterata via HTTP sino ad aver scandito l’intero nostro archivio e gestendo di volta in volta il fatto che si sia trovata o meno la scheda oppure potremmo scaricare il file indice di tutti i prodotti gestiti da IceCat, cercare i prodotti e solo successivamente procedere al download della scheda trovata. Mediante quest’ultima tecnica, per ciascun prodotto, potremmo usufruire anche degli alias sugli EAN e sugli SKU, si intuisce che questa è la via migliore almeno la prima volta che cerchiamo una scheda. La ricerca sul file di index dovrà esser fatta precedere dalla ricerca del brand su un diverso file chiamato “supplier“. La ricerca nel file dei supplier sarà fatta per ottenere il corrispondente supplier_id, trovato, ci servirà qualora ricercheremo per sku. Il supplier_id con lo SKU ci darà la certezza d’aver trovato il prodotto\scheda tecnica corretta. La ricerca nel file di index ci darà il product_id che è il codice prodotto per IceCat. Ottenuto il product_id otterremo la scheda prodotto in formato XML adottando la tecnica spiegata prima ovvero via HTTP indicando il product_id nell’URL.
Usufruire degli alias di identificazione dei prodotti
Usufruire degli alias vuol dire che IceCat, nelle ricerche, ci mette a disposizione TUTTE le chiavi utili all’identificazione di uno stesso prodotto. Infatti, a stesso prodotto potrebbero corrispondere più EAN e più codifiche dello sku. Nel file index queste informazioni le troveremmo tutte elencate nell’elemento all’interno dell’XML associato al singolo prodotto. IceCat mette a disposizione anche gli alias del Brand, queste info sono però in un file a parte chiamato “supplier“; come già spiegato prima questa ricerca è propedeutica a quella sul file index.
Quando IceCat o il nostro fornitore sbaglia il nome brand
Per esperienza sul campo, consiglierei di adottare una tabella di decodifica tra brand fornitore (come ottenuto dal nostro file catalogo prodotti) e nome brand corrispondente su IceCat, questo per correggere tutti quei casi in cui la scheda non si trova poiché usiamo un nome diverso rispetto a quello\quelli previsti da IceCat (includendo anche gli alias).
Alternativa al file indice completo
Attualmente il file di indice ha raggiunto dimensione di 90 MByte, l’aggiornamento delle schede prodotto si può prevedere che abbia una frequenza giornaliera (ovviamente ciò in funzione al volume degli articoli ed alla quantità di quelli di cui non s’è trovata la scheda). IceCat dà la possibilità di usufruire, al posto del file Index completo, di un file “indice giornaliero” (Daily) che si basa sul presupposto che la sua interrogazione ed elaborazione sia giornaliera. In questo file Daily ci saranno, pertanto, solo le modifiche intervenute al catalogo completo rispetto al file elaborato il giorno precedente. Questa strategia ci consentirà di ridurre notevolmente i tempi di download e di elaborazione escludendo tutti i prodotti che non hanno subito modifiche migliorative, integrative o correttive.
XML della scheda prodotto
Rimandando alla documentazione ufficiale la descrizione esatta e completa del file XML, qui possiamo dire che sostanzialmente essa contiene:
- nome del prodotto;
- descrizione sintetica;
- descrizione tecnica;
- infine, cosa non da poco, tutte le features del prodotto.
Le features sono omogenee tra tutti i prodotti in modo da consentire comparazioni o eventuali operazioni di ricerca\filtraggio. Esempi di features sono: colore, peso, dimensioni, e per categorie prodotto ad esempio Notebook delle feature potrebbero essere, famiglia CPU, MHz, capacità HardDisk, etc.
Occorrerà gestire l’importazione di queste informazioni conservando le relazioni suggerite dagli stessi identificativi presenti nel XML, consiglio di riportare sempre nella base dati del nostro e-commerce tali identificativi a partire dal product_id (chiave prodotto per IceCat) che sarà FONDAMENTALE nel processo di aggiornamento descritto più avanti.
Aggiornamento di schede prodotti già pubblicati
Un ruolo importante in questo processo lo svolge ancora il file index che, se già disponibile ed aggiornato, non è necessario scaricare nuovamente per questa parte di aggiornamento. Per capire se per un determinato prodotto occorre effettuare un aggiornamento andrà verificato un campo apposito che è nello stesso file index. Il prodotto da verificare dovrà esser ricercato innanzitutto col product_id di Icecat ed in secondo luogo con lo stesso criterio adottato per la ricerca nel momento in cui il prodotto era nuovo. Trovato il prodotto, si otterrà la data di aggiornamento secondo IceCat e la si confronterà con quella che abbiamo memorizzato sulla tabella in cui è avvenuto il primo passaggio (quello di ottenimento della scheda prodotto), se sarà necessario un aggiornamento questo lo si effettuerà e andrà aggiornata la stessa data del confronto precedente.
Per l’aggiornamento delle informazioni riuseremo gli stessi metodi usati per il primo caricamento della scheda prodotto.
Attenzione, potrà esser richiesto l’aggiornamento dei parametri chiave per la ricerca, fatta eccezione per il brand che non necessariamente deve coincidere con quello indicato da IceCat. Quindi potrà esser cambiato l’EAN e lo sku questo potrà avvenire grazie al fatto che la ricerca avverrà attraverso il product_id come primo ma non ultimo criterio.
(alternativa) Per ottimizzare automaticamente ma solo quando…
Quando il nostro fornitore ha una vetrina dei prodotti con relative schede tecniche potrebbe esser possibile introdurre una automazione non proprio canonica ma che avvalendosi di alcune precondizioni consente di fare quel che un operatore farebbe manualmente. Le precondizioni sono: uso dello stesso codice produttore \ EAN e codice fornitore passabile via query string nell’URL, standard nella produzione delle schede prodotto visualizzate a seguito di ricerca.
Date le precondizioni potremmo simulare o provare l’attività del browser mediante adeguato processo\software questa attività può esser chiamata WEB spoofing o Cross-Site Request Forgery.
Consigli di implementazione
La soluzione da me adottata è stata implementata sotto Microsoft Visual Studio Framework 3.5 C# ma penso che quanto segue possa andar bene con qualsiasi altra piattaforma, linguaggio o framework.
Il file di index attualmente ha raggiunto la dimensione di circa 90 MByte (compattato) ma nonostante le dimensioni siano rilevanti, come descriverò in seguito, io ho deciso di adottare la soluzione con questo file scartando quella del file daily o quello dell’indagine HTTP che invece ho adottato per la localizzazione. Ho scelto la soluzione “index” perché questo file è completo ed utilizzabile anche per l’aggiornamento delle schede, le connessioni non sono attendibili ed ho necessità di non perdere passaggi quindi in una sola parola: “non mi fido”.
La tecnologia adottata per eseguire le ricerche è stata XPath che ha dato buoni risultati; purtroppo però il file scompattato raggiunge il massimo rappresentabile in memoria del server pertanto un primo passo è stato quello di spezzettare l’Index in n files dove n è il numero di lettere iniziali previste sui nomi brand dei prodotti da ricercare. Le ricerche pertanto le ho eseguite usando l’elenco dei prodotti ordinato per brand e per ciascuna lettera ho caricato in memoria solo la porzione di prodotti il cui brand ha lettera iniziale corrispondente al file, le ricerche le ho eseguite sempre usando XPath.
La ricerca all’interno del file XML l’ho eseguita partendo prima dalla corrispondenza dello sku, quindi:
- cerco per sku [codice produttore]. Se corrisponde, verifico anche al brand, se quest’ultimo non corrisponde loggo l’info in quanto probabilmente ho fatto una ricerca col nome brand leggermente diverso occorrerà verificare ed eventualmente aggiornare la tabella di mapping per le eccezioni sul nostro database;
- se questa fallisce la precedente proseguo cercando solo l’EAN. Se corrisponde, verifico anche al brand, se quest’ultimo non corrisponde loggo l’info in quanto probabilmente ho fatto una ricerca col nome brand leggermente diverso occorrerà verificare ed eventualmente aggiornare la tabella di mapping per le eccezioni sul nostro database;
- se questa fallisce la precedente proseguo cercando solo l’UPC. Se corrisponde, verifico anche al brand, se quest’ultimo non corrisponde loggo l’info in quanto probabilmente ho fatto una ricerca col nome brand leggermente diverso occorrerà verificare ed eventualmente aggiornare la tabella di mapping per le eccezioni sul nostro database.
Sul database ho memorizzato le seguenti informazioni in più tabelle relazionate:
- info dei prodotti non trovati con traccia dell’errore \ causa del mancato matching;
- scheda prodotto trovata, memorizzando anche il codice della lingua il product_id (ID di IceCat); memorizzo anche la data di aggiornamento delle info secondo IceCat (questo sarà importante per il processo di aggiornamento delle schede prodotto già ottimizzate);
- Features (con indicazioni se è una caratteristica\proprietà primaria o secondaria [eventuali filtri riguarderanno solo le features primarie]), Features group, Categoria del prodotto; si memorizzerà anche il codice lingua in cui tali info sono;
- Informazioni di cui ai due punti precedenti ma localizzate (se previsto da abbonamento, etc).
Anche nell’implementazione di questo processo occorre effettuare logging mediante uno strumento per monitorare l’attività svolta onde evitare che le schede non si aggiornino o i prodotti non vengano pubblicati.
Conclusioni
Adottare i servizi di IceCat è una buona soluzione ampiamente diffusa e documentata, con numerosi plug-in o moduli, gratuiti e non, fornisce anche una soluzione localizzata. Oltre alle schede tecniche dei prodotti, IceCat ci fornisce anche le features e l’alberatura delle categorie prodotto, tutto localizzabile. Certo ad un livello sempre più altro si dovrà intervenire con delle personalizzazioni o correzioni ma non sono indispensabili in una prima fase iniziale; le modifiche possono esser apportate anche per soluzioni di e-commerce, faccio riferimento a piattaforme come Magento o PrestaShop.
La soluzione che consiglio è quella di usare IceCat nella versione indice completo per ottenere l’elenco dei prodotti su cui ricercare le schede e la tecnica dell’interrogazione HTTP con product_id di IceCat per ottenere la scheda, quest’ultima soluzione sarà anche adottata per il check di aggiornamenti.
Licenza con diritto di citazione (L’art. 70, Legge 22 aprile 1941 n. 633)
Prego chiunque usufruirà di questo articolo di citarmi o inserire un link al sito.
Grazie.