L'email è l'unica integrazione già disponibile in ogni organizzazione. I fornitori vi inviano le fatture, i moduli vi consegnano le risposte e le macchine vi spediscono gli avvisi. L'acquisizione tramite email trasforma tutto questo in un'interfaccia anziché in un compito manuale: uno script si collega a una casella, legge ciò che è arrivato ed esegue un'azione.
È un modello antico ma sottovalutato, perché l'alternativa, chiedere a ogni controparte di adottare la tua API, di solito non è praticabile. Questa guida spiega quando è utile, come implementarlo in modo che non si rompa e in quali situazioni un webhook rappresenta davvero la scelta migliore.
A cosa serve l'acquisizione di email tramite IMAP
L'acquisizione tramite email è utile ogni volta che il mittente non vuole o non può integrarsi direttamente con il tuo sistema.
Documenti inviati dalle controparti. Fatture, ordini di acquisto, documenti di trasporto ed estratti conto arrivano come allegati da organizzazioni che non svilupperanno mai un'integrazione con il tuo sistema. Spesso l'intera integrazione consiste in uno script che li archivia per mittente e riferimento.
Avvisi provenienti dalle apparecchiature. Molti dispositivi sanno soltanto inviare email, tra cui sistemi di backup, strumenti di monitoraggio e vecchi macchinari industriali. L'acquisizione tramite IMAP offre a tutti un unico punto di raccolta.
Invii di moduli e risposte. Rientra in questa categoria qualsiasi sistema che trasmetta un messaggio strutturato via email, comprese le notifiche di mancato recapito e le risposte automatiche di assenza sulle quali vuoi intervenire.
Approvazioni tramite risposta. La risposta "sì" a un messaggio può rappresentare un passaggio del flusso di lavoro. Leggerla in modo automatico è spesso più semplice che creare un'interfaccia alla quale nessuno vuole accedere.
Configurare un sistema che non si rompa
Il funzionamento di base dell'acquisizione tramite email non ha nulla di straordinario. La sua affidabilità dipende da alcune decisioni fondamentali.
Dedicale una casella. Non una cartella nella casella di qualcuno e non uno spazio condiviso con una persona che legge gli stessi messaggi. Un indirizzo dedicato impedisce che qualcuno, facendo ordine, violi le ipotesi su cui si basa lo script. Qui non costa nulla, perché le caselle non sono fatturate per utente.
Usa credenziali limitate a questo compito. Non utilizzare l'accesso personale di qualcuno. Se le credenziali dello script vengono divulgate o devono essere sostituite, la modifica deve riguardare lo script e nient'altro.
Sposta i messaggi elaborati, non eliminarli. Una cartella "elaborati" crea una traccia per gli audit e consente di ripetere l'elaborazione dopo aver corretto un errore. La cancellazione rende permanente ogni sbaglio, e gli sbagli si verificheranno.
Gestisci l'arrivo dello stesso messaggio più di una volta. Nuovi tentativi, riconnessioni e rielaborazioni sono inevitabili. Usare il Message-ID come chiave e ignorare ciò che è già stato visto trasforma l'elaborazione duplicata da un problema per i dati a un'operazione senza effetti.
Rendi evidenti i guasti. Uno script che smette di leggere una casella rimane invisibile finché qualcuno non chiede dove siano finite le fatture. Deve segnalare anche quando non è stato eseguito, non soltanto quando incontra un errore.
Perché IMAP è adatto
L'acquisizione di email funziona tramite IMAP perché IMAP è un vero filesystem remoto per la posta, non un semplice protocollo di download.
Puoi effettuare ricerche sul server, recuperare soltanto le intestazioni prima di decidere se scaricare il corpo, spostare i messaggi tra cartelle e impostare contrassegni, senza dover scaricare un'intera casella. Lo script può così lavorare in modo selettivo ed efficiente, una caratteristica importante quando la casella contiene anni di storico.
È anche supportato universalmente, e questo è il vero punto di forza. Ogni linguaggio dispone di una libreria, il protocollo non è cambiato in modi che abbiano compromesso le implementazioni e uno script scritto oggi continuerà a funzionare tra dieci anni. È una garanzia più solida di quella offerta dalla maggior parte delle API proprietarie.
È utile sapere che il piano gratuito include IMAP. Una casella di acquisizione usata soltanto per ricevere non costa quindi nulla. Non può però inviare messaggi, perciò qualsiasi processo che risponda automaticamente richiede un piano a pagamento o un profilo SMTP dedicato.
Il costo operativo
Il costo è spesso l'aspetto più sorprendente, perché è inferiore a quanto molti immaginano.
Una casella di acquisizione è una normale casella email, e il numero di caselle è limitato dal livello del piano anziché essere fatturato singolarmente. Il costo marginale del dodicesimo indirizzo di acquisizione è quindi pari a zero. È questo che rende una casella per sorgente una soluzione pratica anziché eccessiva. Le vere risorse consumate sono lo spazio condiviso e il tempo necessario quando qualcosa smette di funzionare.
Rispetto alle piattaforme che applicano un prezzo per utente, questo cambia le scelte architetturali. Su quei servizi, l'acquisizione viene spesso concentrata in un unico indirizzo sovraccarico perché ogni indirizzo aggiuntivo costa denaro. Lo script deve quindi separare diversi flussi privi di relazione tra loro. Qui, invece, la soluzione meno costosa è anche la più ordinata.
Quando è meglio un webhook
Chiarire questo punto evita di costruire la soluzione sbagliata.
Se la controparte offre un webhook, usalo. L'invio attivo supera il polling per latenza, affidabilità e chiarezza: ricevi dati strutturati nel momento esatto in cui accade qualcosa, invece di scoprirlo alla verifica successiva e dover interpretare del testo. L'acquisizione tramite email è la soluzione di ripiego quando questa possibilità non esiste.
Anche il polling ha una frequenza minima ragionevole. Controllare ogni minuto va bene; farlo ogni secondo è un abuso e porterà all'applicazione di limiti. Se il requisito è davvero il tempo reale, l'email è il mezzo sbagliato, indipendentemente dal modo in cui viene letta.
Anche tentare di interpretare email scritte da persone è una strategia destinata a fallire. Estrarre il numero di un ordine di acquisto da un messaggio generato da una macchina è affidabile; dedurre l'intenzione da un paragrafo scritto da una persona non lo è. Un flusso di lavoro che ne dipende produrrà una serie costante di errori che nessuno può eliminare.
Scalare oltre una singola casella
L'acquisizione tramite email si adatta bene alla crescita, e la sua struttura dipende dal numero di flussi da gestire.
Per poche sorgenti, una casella per sorgente è la soluzione più chiara. Ogni script legge il proprio indirizzo e una modifica a un flusso non può influire sugli altri. Poiché le caselle sono limitate in base al piano anziché fatturate singolarmente, venti indirizzi di acquisizione costano quanto uno.
Per molte sorgenti dello stesso tipo, funziona meglio una sola casella preceduta da un catch-all: invoice-acme@ e invoice-globex@ arrivano nello stesso punto, mentre l'indirizzo stesso contiene le informazioni di instradamento necessarie allo script. È la stessa tecnica di un alias per ogni registrazione, applicata alle macchine anziché ai fornitori.
Quando il volume diventa davvero elevato, ricorda che lo spazio di archiviazione è condiviso. Una casella di acquisizione che accumula allegati lo consumerà, quindi una quota e una politica di conservazione devono far parte del progetto fin dall'inizio anziché essere scoperte in seguito. Ne parliamo nella guida alle quote di archiviazione delle caselle.