Saltar al contenido principal

Integración de SendGrid en una aplicación

Nuestra aplicación de ejemplo es una plataforma educativa en línea desarrollada con el framework web Django de Python. Recientemente se abrió un PR para integrar la API de correo electrónico de SendGrid en la aplicación, y en este tutorial vamos a pedirle a Devin que realice su propia implementación de SendGrid para mostrar cómo puede trabajar con APIs de terceros.

Prompt inicial

En nuestro prompt, proporcionamos instrucciones específicas sobre cómo y dónde queremos que Devin integre nuestros hooks de SendGrid, y hacemos que Devin revierta a un hash de commit anterior, antes de que se fusionara el PR mencionado arriba, para tener un punto de partida limpio para nuestra integración. Puedes seguir la sesión en vivo de Devin aquí.
Devin
Devin analiza el código y se asegura de que no exista ya en la aplicación ninguna implementación de correo electrónico que entre en conflicto.
Devin

Implementación de SendGrid

A continuación pasa a implementar la API de SendGrid y nos pide nuestras credenciales de la API, que podemos configurar como Secrets en el entorno de Devin para que pueda acceder a ellas en el futuro como variables de entorno (ENV).
Devin
Ahora que tiene credenciales de API válidas, Devin termina de implementar SendGrid.
Devin
Cuando comparo la implementación de SendGrid de Devin con el PR que se fusionó y que enlazamos al principio, observo algunas mejoras notables:
  • Devin configuró SendGrid en un nuevo módulo email.py en lugar de en el mismo archivo que la propia vista. También devuelve True o False para indicar si el envío del correo electrónico fue exitoso según el código de respuesta de SendGrid.
  • Devin utiliza el módulo de registro (logging) integrado de Python en lugar de print (que era un patrón sobre el que el revisor del PR comentó específicamente).
  • Devin también hace que la dirección de correo electrónico de remitente (From) sea configurable en lugar de estar codificada, y además agrega un valor predeterminado si la variable de entorno ENV no existe.
  • Devin agrega manejo de excepciones a su método mailInstructor.
Con su implementación principal terminada, puedo pedirle a Devin que pruebe la aplicación añadiendo una cuenta de instructor con mi dirección de correo electrónico. Para probar la aplicación, también tendrá que instalar y configurar todas las dependencias, como un servidor PostgreSQL y las bibliotecas de Python correspondientes.
Devin

Depuración

Devin encuentra rápidamente un error, que se debe a que nunca le proporcioné una dirección de remitente (FROM) para mi cuenta de SendGrid. Devin de hecho usa su Browser para ir a la documentación de la API y averiguar qué está pasando aquí, así como para entender los mensajes de error y las prácticas recomendadas de implementación:
Devin
Puedo volver al cuadro de diálogo Secrets y agregar una variable SENDGRID_FROM_EMAIL a la que Devin pueda acceder.
Devin
También le indico a Devin que use el nombre de usuario predeterminado de SendGrid, “apikey”, ya que no he configurado una subcuenta para la API:
Devin

Añadir Knowledge

Devin observa que mis solicitudes y requisitos de implementación pueden generalizarse y me sugiere que agregue Knowledge que pueda utilizar en el futuro:
Devin
Si lo deseas, también puedes editar el Knowledge para agregar aún más detalles específicos si estas tácticas serán útiles en futuras sesiones que tu equipo planee realizar.

Pruebas

Devin
Tras unos minutos de configuración y preparación del entorno, Devin completa su sesión con éxito y veo el correo en mi bandeja de entrada. En realidad no configuré la plantilla de SendGrid para que tuviera contenido real, pero la petición a la API funciona, así que el trabajo de Devin ya está hecho.
Devin
Si decido enviar un PR, Devin ya ha redactado el mensaje por mí, con detalles de todo lo que cambió en la aplicación y de cómo funciona:
Devin
Regístrate hoy para probar Devin y abordar una integración de API que lleva tiempo atascada en el backlog de tu equipo.