Vai al contenuto principale

Integrazione di SendGrid in un’applicazione

La nostra applicazione di esempio è una piattaforma educativa online sviluppata con il framework web Python Django. Di recente è stata aperta una PR per integrare l’API email di SendGrid nell’applicazione e, in questo tutorial, faremo provare a Devin a creare una propria implementazione di SendGrid per mostrare come può interagire con API di terze parti.

Prompt iniziale

Nel nostro prompt forniamo alcune istruzioni specifiche su come e dove vogliamo che Devin integri i nostri hook SendGrid e facciamo sì che Devin torni a un commit hash precedente, prima che la PR sopra fosse stata unita, per avere un punto di partenza pulito per la nostra integrazione. Segui la sessione live di Devin qui.
Devin
Devin analizza la codebase e verifica che non ci sia già nell’applicazione un’implementazione della funzionalità email che vada in conflitto.
Devin

Implementazione di SendGrid

Passa quindi all’implementazione dell’API di SendGrid e ci chiede le credenziali dell’API, che possiamo configurare come Secrets nell’ambiente di Devin, così che possa accedervi in futuro come variabili ENV.
Devin
Ora che dispone di credenziali API corrette, Devin completa l’implementazione di SendGrid.
Devin
Quando confronto l’implementazione di SendGrid di Devin con la PR effettivamente mergeata che abbiamo collegato all’inizio, noto alcuni miglioramenti significativi:
  • Devin ha configurato SendGrid in un nuovo modulo email.py invece che nello stesso file della view. Inoltre, restituisce True o False per indicare se l’invio dell’email è andato a buon fine in base al codice di risposta di SendGrid.
  • Devin utilizza il modulo di logging integrato di Python anziché print (che era un pattern su cui il revisore della PR aveva lasciato un commento specifico).
  • Devin rende inoltre configurabile l’indirizzo email From invece di lasciarlo hardcoded, ma aggiunge anche un valore predefinito se la variabile ENV non esiste.
  • Devin aggiunge la gestione delle eccezioni al suo metodo mailInstructor.
Una volta terminata l’implementazione principale, posso chiedere a Devin di testare l’applicazione aggiungendo un account istruttore con il mio indirizzo email. Per testare l’applicazione, dovrà anche provvedere a installare e configurare tutte le dipendenze, come un server PostgreSQL e le relative librerie Python.
Devin

Debugging

Devin incontra rapidamente un errore, perché non gli ho mai fornito un indirizzo mittente (FROM) per il mio account SendGrid. Devin usa il suo Browser per aprire la documentazione delle API, capire cosa sta succedendo e comprendere i messaggi di errore e le best practice di implementazione:
Devin
Posso tornare nella finestra di dialogo Secrets e aggiungere una variabile SENDGRID_FROM_EMAIL a cui Devin possa accedere.
Devin
Inoltre, indico a Devin di usare il nome utente predefinito di SendGrid “apikey”, dato che non ho configurato un subaccount per le API:
Devin

Aggiunta della Knowledge

Devin rileva che le mie richieste e i requisiti di implementazione possono essere generalizzati e mi invita ad aggiungere della Knowledge che potrà utilizzare in futuro:
Devin
Se lo desideri, puoi anche modificare la Knowledge per aggiungere dettagli ancora più specifici, se ritieni che queste tattiche possano essere utili nelle future sessioni pianificate dal tuo team.

Test

Devin
Dopo alcuni minuti di configurazione e setup dell’ambiente, Devin conclude la sua sessione con successo e vedo l’email nella mia casella di posta. In realtà non ho configurato il template di SendGrid con contenuto reale, ma la richiesta API funziona e quindi il lavoro di Devin è completato!
Devin
Se decido di aprire una PR, Devin ha già redatto il messaggio per me, includendo i dettagli di tutto ciò che ha modificato nell’applicazione e di come funziona:
Devin
Registrati oggi per provare Devin e affrontare un’integrazione API che sta creando problemi nel backlog del tuo team.