
Compartir:
Software Developer who loves building awesome tools and products. I currently work with Laravel, PHP and Vue.
Reenvío de SMS de Nexmo a Slack mediante Express y Node
Introducción
Los Numbers virtuales de Nexmo le permiten enviar o recibir mensajes de texto y llamadas telefónicas, lo que puede servirle como medio para comunicarse eficazmente con sus usuarios o clientes.
En este tutorial usando Node y Express, veremos cómo podemos notificar automáticamente a un canal de Slack cada vez que un número virtual de Nexmo reciba un mensaje de texto. La notificación contendrá el contenido del mensaje de texto recibido. Esto puede ser muy útil ya que significa que siempre seremos notificados cuando recibamos un mensaje de texto, y el canal de Slack puede funcionar como un lugar central para el seguimiento de los mensajes de texto entrantes.
Requisitos previos
ngrok que te permite exponer tu servidor web local a Internet. Para obtener más información sobre cómo configurar su entorno local con ngrok, puede consultar la documentación aquí.
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.
Instalar dependencias de Node
En la raíz del directorio de su proyecto, ejecute el siguiente comando para crear un archivo package.json archivo.
Esto le pedirá con una serie de preguntas para que usted responda; el valor predeterminado funciona bien para este tutorial. Para instalar todas las dependencias de nuestro proyecto, ejecute el siguiente comando:
express es un framework de aplicaciones web Node.
analizador de cuerpos es un middleware express para analizar los cuerpos de las peticiones entrantes.
slack-notify es una envoltura de Node alrededor de la Slack Webhook API que facilita el envío de notificaciones a Slack desde tu aplicación.
A continuación, ejecute el siguiente comando para crear un archivo index.js en la raíz del directorio del proyecto:
Añade el siguiente código al archivo que acabamos de crear:
const express = require('express');
const app = express();
const bodyParser = require('body-parser')
const port = 3000;
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.listen(port, () => {
console.log(`Listening on ${port}`);
})
Esto crea una aplicación express con un servidor web que escucha en el puerto 3000. También hemos ordenado a la aplicación que utilice el analizador JSON del paquete body-parser que instalamos anteriormente y hemos puesto la opción urlencoded a true. Vamos a añadir un comando para ejecutar este servidor.
En el archivo package.json añada el siguiente código a la sección scripts sección
"scripts": {
"start": "node index.js"
},Ahora podemos ejecutar la aplicación utilizando el siguiente comando
Creación de Webhooks entrantes en Slack
Para poder enviar mensajes a Slack, necesitamos crear una URL de webhook entrante. Para empezar, dirígete a Slack y crea una aplicación si aún no tienes una.

Selecciona un nombre para tu aplicación y asóciala al área de trabajo a la que deseas enviar notificaciones. Una vez creada la aplicación, aparecerá una pantalla similar a la siguiente:

Seleccione la pestaña de webhooks entrantes y haga clic en el botón Activate incoming webhooks para activarlo. A continuación, pulse el botón Add New Webhook to Workspace botón . Seleccione el canal en el que desea publicar las notificaciones y, a continuación, haga clic en allow para autorizar la aplicación. Se te redirigirá de nuevo a la página de configuración con una nueva URL de Webhook creada para ti.

Toma nota de la URL del Webhook ya que la necesitaremos en breve.
Crear Webhook para mensajes entrantes
Necesitamos definir un route en nuestra aplicación donde Nexmo hará una petición POST cada vez que nuestro número virtual reciba un mensaje de texto. Este route será responsable de activar las notificaciones de Slack. Antes de crear el routenecesitamos require el paquete slack-notify que instalamos anteriormente.
Añada el siguiente código al archivo index.js en la sección require sección :
const webhookUrl = 'https://hooks.slack.com/services/xxxx/xxx';
const slack = require('slack-notify')(webhookUrl)Sustituya webhookUrl con la URL del Webhook que Slack generó para usted en la sección anterior.

Cada vez que recibamos un mensaje entrante, Nexmo enviará una carga útil parecida a la captura de pantalla anterior. El text contiene el contenido del mensaje recibido.
Añadamos ahora la ruta. Edite el archivo index.js con el siguiente código:
app.post("/webhooks/inbound-message", (req, res) => {
const { text } = req.body
slack.alert({
text: 'New SMS message',
fields: {
'Message' : text
}
});
res.status(200).end();
})
La clave text del cuerpo de la petición contendrá el contenido del mensaje recibido. Mediante la desestructuración, asignamos la text a una text const y, a su vez, activamos el envío de la notificación a Slack mediante el método alert() de Slack. Puedes encontrar los diferentes métodos slack-notify que soporta aquí.
La estructura final del archivo index.js debería ser la siguiente:
const express = require('express');
const app = express();
const bodyParser = require('body-parser')
const port = 3000;
const webhookUrl = 'https://hooks.slack.com/services/xxxx/xxx';
const slack = require('slack-notify')(webhookUrl)
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.post("/webhooks/inbound-message", (req, res) => {
const { text } = req.body
slack.alert({
text: 'New SMS message',
fields: {
'Message' : text
}
});
res.status(200).end();
})
app.listen(port, () => {
console.log(`Listening on ${port}`);
})
Configuración de ngrok
Para que nuestra aplicación sea accesible públicamente a través de la web, necesitaremos configurar ngrok. Usted puede aprender cómo configurar ngrok aquí. Dado que nuestra aplicación se está ejecutando actualmente en el puerto 3000, todo lo que tenemos que hacer es ejecutar el siguiente comando:
Debería ver una pantalla similar a la siguiente:

Copie la primera URL de reenvío, ya que la utilizaremos en breve en nuestra Account de Nexmo.
Añadir URL de entrada Webhook a Nexmo
En la sección Numbers del Panel de control de Nexmo, haz clic en el icono del engranaje del número que deseas que reciba notificaciones de Slack. Si no tienes ningún número virtual, tendrás que comprar uno.

Aparecerá un modal similar al que se muestra a continuación:

Configure la URL del Webhook de entrada con la ngrok que hemos indicado anteriormente. (http://1e389185.ngrok.io/webhooks/inbound-message)
Pruebas
Para probar que nuestra aplicación funciona como se espera, reinicie su servidor de nodos y envíe un mensaje desde su teléfono a su número Nexmo.

Comprueba tu canal de Slack y deberías ver la notificación.

Conclusión
En este tutorial, hemos visto como podemos recibir Notificaciones de Slack usando Nexmo. Este tutorial puede servir como una gran guía de inicio para la construcción de aplicaciones con Nexmo y Slack. Puedes encontrar el repo de este tutorial aquí.
