Brevo Sync da Easy Store: differenze tra le versioni
| Riga 24: | Riga 24: | ||
* stabilire da configurazione un'associazione <code>cliente->classe</code> | * stabilire da configurazione un'associazione <code>cliente->classe</code> | ||
* il ciclo principale controlla se esiste una '''custom action''' e nel caso istanzia la giusta classe e chiama la funzione definita | * il ciclo principale controlla se esiste una '''custom action''' e nel caso istanzia la giusta classe e chiama la funzione definita | ||
<sytaxhighlight lang="python"> | |||
import importlib | |||
# Leggi il nome del modulo e della classe dal file di testo | |||
with open('config.txt', 'r') as file: | |||
config = {} | |||
for line in file: | |||
key, value = line.strip().split('=') | |||
config[key] = value | |||
modulo_nome = config.get('modulo_nome') | |||
classe_nome = config.get('classe_nome') | |||
# Importa dinamicamente il modulo | |||
modulo = importlib.import_module(modulo_nome) | |||
# Ottieni la classe dal modulo | |||
Classe = getattr(modulo, classe_nome) | |||
# Crea una nuova istanza della classe | |||
miavariabile = Classe() | |||
</syntaxhighlight> | |||
Versione delle 17:47, 24 lug 2024
Cliente richiedente: Mav Arreda
Programma da console in Python schedulato una volta al giorno che si occupa di sincronizzare i dati cliente delle vendite Easy Store con quelli dell'account Brevo.
Nel caso specifico di Mav Arreda, questo ha un sito in Magento nel quale ha installato un plugin che sincronizza i dati delle vendite con Easy Store.
Il programma si pone l'obiettivo di riportare i dati anagrafici di queste vendite anche sull'account Brevo del cliente (nei custom attributes).
In una riunione si è discusso di poter utilizzare attributi custom multiple-choice per poter selezionare più di una singola preferenza marketing per ogni utente (es. interessato a Kartèll e Magìs).
Brevo mette a disposizione i campi transazionali che permettono di associare ad un singolo contatto N transazioni specificando un ID.
Utilizzeremo questi campi per compilare i campi riguardanti l'acquisto.
Complessità tecniche
Mapping ID Easy in stringa per Brevo
Dobbiamo stabilire un mapping da ID a stringa per i campi idcategoria_anagrafica e idcategoria_anagrafica, che da EasyStore arrivano come interi ma su Brevo devono essere inseriti col valore stringa.
Codice custom a seconda del rivenditore
Il programma deve gestire la possibilità di eseguire un codice custom differente a seconda dell'account che viene sincronizzato.
Ad esempio MAV Arreda dopo aver sincronizzato i campi statici deve effettuare delle chiamate alle EasyAPI per recuperare dettagli della vendita e piazzarli in attributi specifici fatti ad hoc.
Si pensa di
- implementare questi comportamenti ognuno in una diversa classe
- stabilire da configurazione un'associazione
cliente->classe - il ciclo principale controlla se esiste una custom action e nel caso istanzia la giusta classe e chiama la funzione definita
<sytaxhighlight lang="python"> import importlib
- Leggi il nome del modulo e della classe dal file di testo
with open('config.txt', 'r') as file:
config = {}
for line in file:
key, value = line.strip().split('=')
config[key] = value
modulo_nome = config.get('modulo_nome') classe_nome = config.get('classe_nome')
- Importa dinamicamente il modulo
modulo = importlib.import_module(modulo_nome)
- Ottieni la classe dal modulo
Classe = getattr(modulo, classe_nome)
- Crea una nuova istanza della classe
miavariabile = Classe() </syntaxhighlight>