Zum Hauptinhalt springen

SendGrid in eine Anwendung integrieren

Unsere Beispielanwendung ist eine Online-Lernplattform, die mit dem Python-Webframework Django entwickelt wurde. Kürzlich wurde ein PR eröffnet, um die SendGrid-E-Mail-API in die Anwendung zu integrieren. In diesem Tutorial werden wir Devin eine eigene SendGrid-Implementierung ausprobieren lassen, um zu demonstrieren, wie es mit Drittanbieter-APIs zusammenarbeiten kann.

Erste Prompt-Eingabe

In unserem Prompt geben wir einige konkrete Anweisungen dazu, wie und wo Devin unsere SendGrid-Hooks integrieren soll, und wir lassen Devin zu einem früheren Commit-Hash zurückkehren, bevor der oben genannte PR gemergt wurde, um einen sauberen Ausgangspunkt für unsere Integration zu erhalten. Folge der Live-Devin-Session hier.
Devin
Devin untersucht die Codebasis und stellt sicher, dass es keine kollidierende E-Mail-Implementierung gibt, die bereits in der Anwendung vorhanden ist.
Devin

Implementierung von SendGrid

Anschließend fährt Devin mit der Implementierung der SendGrid-API fort und fordert uns zur Eingabe unserer API-Zugangsdaten auf, die wir als Secrets in Devins Umgebung einrichten können, sodass es zukünftig als ENV-Variablen darauf zugreifen kann.
Devin
Jetzt, da es gültige API-Zugangsdaten hat, schließt Devin die Implementierung von SendGrid ab.
Devin
Wenn ich Devins SendGrid-Implementierung mit dem tatsächlich gemergten PR vergleiche, den wir am Anfang verlinkt haben, fallen mir einige bemerkenswerte Verbesserungen auf:
  • Devin hat SendGrid in einem neuen Modul email.py konfiguriert, anstatt in derselben Datei wie die View selbst. Außerdem gibt es True oder False zurück, um anhand des SendGrid-Response-Codes anzuzeigen, ob das Versenden der E-Mail erfolgreich war.
  • Devin verwendet Pythons integriertes logging-Modul anstelle von print (was ein Muster war, zu dem der PR-Reviewer ausdrücklich Feedback gegeben hatte).
  • Devin macht außerdem die From-E-Mail-Adresse konfigurierbar, anstatt sie hardcodet im Code zu hinterlegen, fügt aber einen Standardwert hinzu, falls die ENV-Variable nicht existiert.
  • Devin fügt seiner mailInstructor-Methode Exception-Handling hinzu.
Nachdem die Kernimplementierung abgeschlossen ist, kann ich Devin bitten, die Anwendung zu testen, indem es ein Instructor-Konto unter meiner E-Mail-Adresse hinzufügt. Um die Anwendung zu testen, muss es außerdem alle Abhängigkeiten wie einen PostgreSQL-Server und die relevanten Python-Bibliotheken installieren und konfigurieren.
Devin

Debugging

Devin stößt schnell auf einen Fehler, weil ich ihm nie eine FROM-Adresse für mein SendGrid-Konto angegeben habe. Devin verwendet seinen Browser, um zu den API-Dokumenten zu navigieren, herauszufinden, was hier vor sich geht, und die Fehlermeldungen sowie Best Practices für die Implementierung zu verstehen:
Devin
Ich kann zum Secrets-Dialog zurückkehren und eine SENDGRID_FROM_EMAIL-Variable hinzufügen, auf die Devin zugreifen kann.
Devin
Außerdem weise ich Devin an, den Standard-SendGrid-Benutzernamen „apikey“ zu verwenden, da ich kein Unterkonto für die API eingerichtet habe:
Devin

Knowledge hinzufügen

Devin stellt fest, dass meine Anfragen und Implementierungsanforderungen allgemeingültig sein könnten, und fordert mich auf, Knowledge hinzuzufügen, das es in Zukunft nutzen kann:
Devin
Wenn Sie möchten, können Sie das Knowledge außerdem bearbeiten und weitere Details ergänzen, wenn diese Taktiken in zukünftigen Sessions Ihres Teams nützlich sein könnten.

Testen

Devin
Nach ein paar Minuten für Konfiguration und Einrichtung der Umgebung beendet Devin seine erfolgreiche Session und ich sehe die E-Mail in meinem Posteingang. Ich habe die SendGrid-Vorlage nicht mit echtem Inhalt befüllt, aber die API-Anfrage funktioniert – und damit ist Devins Arbeit erledigt!
Devin
Wenn ich mich entscheide, einen PR zu erstellen, hat Devin die Nachricht bereits für mich vorbereitet – inklusive Details zu allen Änderungen in der Anwendung und dazu, wie sie funktionieren:
Devin
Melde dich noch heute an, um Devin auszuprobieren und eine API-Integration anzugehen, die eurem Team schon lange auf den Nägeln brennt.