Cómo recibir SMS en Slack (usando las funciones Twilio)

Enviar un SMS a Slack a través de las funciones Twilio

Una de las excelentes características de Slack es que se integra con casi todos los productos SaaS que existen. Me encanta conectar notificaciones a Slack para casi todo, pero una integración notablemente ausente que he encontrado es recibir SMS. Hay algunos ejemplos de envío de SMS a través de comandos de barra inclinada, pero no pude encontrar uno que vaya en la otra dirección.

¿Por qué?

¿Por qué quieres recibir SMS en Slack? Hay algunas razones por las que lo he querido:

  • Cuando tiene una aplicación que usa SMS como uno de sus canales de notificación, puede ser útil conectar algunos números para que su equipo de control de calidad pueda validar que la aplicación envíe SMS correctamente sin usar teléfonos físicos.
  • Lamentablemente, hay algunos proveedores de SaaS que ofrecen 2FA, pero solo a través de SMS y no permiten que los usuarios tengan inicios de sesión diferentes para acceder a la misma cuenta de facturación. Los equipos no solo tienen que compartir una contraseña, sino que también se ven obligados a deshabilitar 2FA o compartir un dispositivo. Al configurar un puente de SMS a Slack, puede usarlo como su número 2FA. (Aquí hay muchos problemas de seguridad, pero a veces puede ser una solución útil).
  • Un producto SaaS o un sistema heredado para el que se haya registrado aún no está integrado con Slack, pero envía notificaciones por SMS y desea recibirlas en Slack.

Ingrese funciones sin servidor

Este problema sonaba como una aplicación perfecta para funciones sin servidor: configure una función sin servidor para recibir un SMS a través de un webhook, luego en esa función, formatee y reenvíe el mensaje a Slack.

Ahora he hecho esto con Twilio y Plivo como servicios de SMS y AWS Lambda y Google Functions para funciones sin servidor. Había planeado escribir primero cómo hacer Twilio con Google Functions, pero luego descubrí Twilio Functions, anunciado a principios de este año. Como resultado, esta es una solución perfecta para este problema, ya que evita un salto de red y la necesidad de escribir código para verificar las solicitudes de webhook ya que está integrado.

Configurar el puente de SMS

En primer lugar, necesitará:

  1. Un equipo de Slack y un canal en el que desea recibir SMS
  2. Una cuenta y número de Twilio donde recibirá el SMS

Ambos tienen planes de prueba gratuitos (pero ninguno parece tener programas de referencia, por lo que no tengo enlaces especiales para usted ... ).

Configuración floja

En Slack, configure una "Integración personalizada" (un webhook entrante). Seleccione el canal en el que desea recibir el SMS (o simplemente envíelo directamente a su usuario mientras lo prueba y cámbielo más tarde). Asegúrese de copiar el enlace al webhook.

Configuración Twilio

  1. Vaya a la página Configurar funciones de Twilio y agregue una variable de entorno SLACK_WEBHOOK_PATH y pegue el enlace de su webhook entrante arriba, excepto elimine todo lo anterior / servicios en la URL. (En otras palabras, simplemente pegue el camino).
  2. Cree una nueva función Twilio aquí. Simplemente elija la plantilla "En blanco".
  3. Copie lo siguiente en la función:

Guarde esta función (denominé la mía "Relay SMS to Slack"), luego vaya a la configuración de uno de sus números entrantes. En la sección "Mensajería", configure Twilio para que llame a su función cuando reciba un SMS entrante de esta manera:

Configurar SMS entrantes para ir a su función

¡Ahora debería poder enviar un SMS y recibirlo en Slack! Tiene el siguiente estilo:

Cómo la función anterior formatea los mensajes SMS enviados a Slack

¡Personalicé el avatar para el webhook y configuré el nombre en SMS, pero puedes configurar el tuyo como quieras!

Reflexiones sobre la integración.

Esta aplicación es perfecta para Twilio Functions, así que me alegré de descubrirlas en este proceso. Algunas de las ventajas de Twilio Functions que encontré fueron:

  • Manejan la autenticación de solicitud por usted automáticamente (si lo desea).
  • A un precio bastante razonable.
  • Actualización y despliegue muy rápidos.
  • Proporcionaron una forma de administrar secretos para sus funciones a través de su configuración muy bien, ¡sin secretos en los scripts! (Me sorprendió que esto no fuera tan fácil en Google Cloud Functions, por ejemplo ).

Sin embargo, también tenían algunos inconvenientes:

  • Parece que la única forma de crear una función es a través de su editor. Por supuesto, puede copiar y pegar, pero esto significa que solo puede tener un único "archivo" y solo confiar en las bibliotecas Node.JS incorporadas (y, por supuesto, Twilio ). Por lo tanto, tuve que usar el módulo https incorporado arriba en lugar de algo más sofisticado como solicitar o buscar y me preocuparía enviarle funciones más grandes.
  • Esto también significa que la administración de código, el control de versiones y la implementación no son realmente automatizables en este momento.
  • Sin embargo, otro proveedor al que debe enviar el código.
  • Solo Node.JS es compatible en este momento (aunque es mi entorno preferido, así que ... )

Sin embargo, considerando todas las cosas, ¡terminé prefiriendo utilizar Twilio Functions para este caso de uso! Si alguien está interesado (o posiblemente incluso si usted no lo está), también planearé publicar cómo logré lo mismo con Google Cloud Functions. La gestión de la implementación y el manejo de secretos terminan siendo puntos de comparación fascinantes.

Si te gustó esta publicación y crees que podría ayudar a otras personas, presiona el botón para que otras personas puedan encontrarla más fácilmente. Escribo sobre temas como este de vez en cuando, así que sígueme también si deseas leer más.