Integrar las notificaciones de WhatsApp con los canales de Slack puede mejorar significativamente la comunicación del equipo al permitir actualizaciones en tiempo real de WhatsApp directamente en tu espacio de trabajo de Slack. Si bien servicios de terceros como Zapier, Onlizer o ChatArchitect ofrecen integraciones fluidas, algunas empresas prefieren evitar dependencias externas por razones como la privacidad de los datos, el coste o la personalización. Esta guía ofrece un enfoque detallado y experto para configurar las notificaciones de eventos de WhatsApp en los canales de Slack sin servicios de terceros, aprovechando la API de WhatsApp Business y la API de Slack. El objetivo es lograr una integración segura, escalable y personalizable, adaptada a las necesidades de tu negocio.
¿Por qué integrar WhatsApp con Slack?
Antes de profundizar en la configuración técnica, exploremos por qué esta integración es valiosa:
- Comunicación centralizada : consolide las consultas de los clientes, las actualizaciones del equipo o las alertas críticas de WhatsApp en un único canal de Slack para una mejor colaboración.
- Notificaciones en tiempo real : recibe instantáneamente mensajes de WhatsApp o activadores de eventos (por ejemplo, mensajes nuevos, actualizaciones de estado) en Slack, lo que reduce los tiempos de respuesta.
- Sin dependencia de terceros : evite costos recurrentes, preocupaciones sobre la privacidad de los datos o limitaciones impuestas por plataformas externas.
- Personalización : cree una solución adaptada a sus flujos de trabajo específicos, como filtrar mensajes de alta prioridad o enrutarlos a canales específicos.
Esta guía asume que tienes acceso administrativo a una cuenta de la API de WhatsApp Business, un espacio de trabajo de Slack y conocimientos básicos de programación (p. ej., Node.js o Python). La solución utiliza webhooks, API y un servidor ligero para gestionar la integración.
Requisitos previos
Para configurar las notificaciones de WhatsApp en Slack sin servicios de terceros, necesitarás:
- Cuenta API de WhatsApp Business:
- Una cuenta registrada de WhatsApp Business con acceso API.
- Un número de teléfono comercial verificado.
- Credenciales de API (clave de API, ID de número de teléfono y token de acceso).
- Espacio de trabajo de Slack:
- Permisos administrativos o de propietario para crear y administrar aplicaciones de Slack.
- Un canal de Slack designado para notificaciones.
- Entorno de desarrollo:
- Un servidor o una plataforma en la nube (por ejemplo, AWS, Heroku o un servidor Node.js/Python local) para alojar la lógica de integración.
- Familiaridad con API REST, webhooks y scripts básicos del lado del servidor.
- Herramientas:
- Node.js o Python para scripts.
- Ngrok (para pruebas locales de webhooks).
- cURL o Postman para pruebas de API.
Guía de integración paso a paso
Paso 1: Configurar el webhook de la API de WhatsApp Business
La API de WhatsApp Business usa webhooks para notificar a tu servidor sobre mensajes o eventos entrantes. Necesitarás configurar un punto final de webhook para recibir estos eventos.
- Crear un punto final de webhook:
Configura un servidor simple con Node.js o Python. Por ejemplo, usa Express.js (Node.js) para crear un punto final:
const express = require ( 'express' ); const app = express(); app.use(express.json());
app.post( '/webhook' , ( req, res ) => { console.log ( 'Webhook de WhatsApp recibido:' , req.body); res.status( 200 ).send( 'Webhook recibido' ); });
app.listen( 3000 , () => console.log ( 'Servidor ejecutándose en el puerto 3000' ));
- Implemente este servidor en una URL pública (por ejemplo, usando Heroku) o use Ngrok para pruebas locales para exponer su host local a Internet.
- Configurar el webhook de WhatsApp:
- Inicie sesión en el portal Meta para desarrolladores (o en el panel de control de su proveedor de API de WhatsApp Business).
- Navegue a la configuración de la API de WhatsApp Business.
- Agregue la URL de su webhook (por ejemplo, https://your-server.com/webhook).
- Configure el webhook para escuchar eventos como mensajes (para mensajes entrantes) o estados (para actualizaciones de entrega de mensajes).
Verifique el webhook implementando el punto final de verificación (Meta requiere un punto final GET para confirmar la URL del webhook).
app.get( '/webhook' , ( req, res ) => { const verifyToken = 'SU_TOKEN_DE_VERIFICACIÓN' ; if (req.query[ 'hub.mode' ] === 'subscribe' && req.query[ 'hub.verify_token' ] === verifyToken) { res.status( 200 ).send(req.query[ 'hub.challenge' ]); } else { res.status( 403 ).send( 'Error de verificación' ); } });
- Probar el webhook:
Envía un mensaje de prueba a tu número de WhatsApp Business y verifica que tu servidor reciba la carga útil. La carga útil será similar a esta:
{ "object" : "whatsapp_business_account" , "entry" : [{ "changes : [{ "value" : { "messages" : [{ "from" : "1234567890" , "text" : { "body" : "¡Hola, esto es una prueba!" } }] } }] }] }
Paso 2: Crea una aplicación de Slack para publicar notificaciones
Para enviar eventos de WhatsApp a un canal de Slack, necesitará una aplicación de Slack con permisos para publicar mensajes.
- Crear una aplicación de Slack:
- Vaya a api.slack.com/apps y haga clic en “Crear nueva aplicación”.
- Ponle un nombre a tu aplicación (por ejemplo, “WhatsAppNotifier”) y selecciona tu espacio de trabajo de Slack.
- En “Permisos”, agregue el ámbito chat:write para permitir que la aplicación publique mensajes.
- Obtener un token de bot:
- En la configuración de la aplicación Slack, navega a “OAuth y permisos”.
- Instala la aplicación en tu espacio de trabajo y copia el “Bot User OAuth Token” (comienza con xoxb-).
- Publicación de prueba en Slack:
Usa el punto final chat.postMessage de la API de Slack para probar la publicación de un mensaje. Por ejemplo, en Node.js, usando el paquete @slack/web-api:
const { WebClient } = require ( '@slack/web-api' ); const slack = new WebClient( 'YOUR_SLACK_BOT_TOKEN' );
async function postToSlack ( canal, mensaje ) { await slack.chat.postMessage({ canal : canal, texto : mensaje }); }
postToSlack( '#whatsapp-notifications' , '¡Mensaje de prueba de WhatsApp!' );
- Asegúrese de que el bot esté invitado al canal Slack de destino (por ejemplo, /invite @WhatsAppNotifier).
Paso 3: Conecta los webhooks de WhatsApp con Slack
Ahora, combine el webhook de WhatsApp con la API de Slack para reenviar notificaciones.
- Analizar la carga útil del webhook de WhatsApp:
Modifique el punto final de su webhook para extraer información relevante (por ejemplo, número de teléfono del remitente, texto del mensaje):
app.post( '/webhook' , async (req, res) => { const payload = req.body; if (payload.object === 'whatsapp_business_account' ) { const messages = payload.entry[ 0 ].changes[ 0 ].value.messages; if (messages && messages.length > 0 ) { const message = messages[ 0 ]; const sender = message.from; const text = message.text?.body || 'Mensaje que no es de texto recibido' ; const slackMessage = `Nuevo mensaje de WhatsApp de ${sender} : ${text} ` ; await postToSlack( '#whatsapp-notifications' , slackMessage); } } res.status( 200 ).send( 'Webhook recibido' ); });
- Gestionar mensajes de medios:
Si el mensaje de WhatsApp contiene contenido multimedia (por ejemplo, imágenes, videos), recupere la URL del contenido multimedia mediante la API de WhatsApp y cárguela en Slack:
const axios = require ( 'axios' );
async function handleMediaMessage ( mensaje, slackChannel ) { const mediaId = mensaje.imagen?.id || mensaje.video?.id; if (mediaId) { const mediaUrl = await getMediaUrl(mediaId); const mediaResponse = await axios.get(mediaUrl, { headers : { Autorización : `Bearer YOUR_WHATSAPP_ACCESS_TOKEN` }, responseType : 'stream'
}); await slack.files.upload({ canales : slackChannel, archivo : mediaResponse.data, nombre de archivo : `whatsapp_media_ ${mediaId} `
}); } }
función asíncrona getMediaUrl ( mediaId ) { const respuesta = await axios.get( `https://graph.facebook.com/v17.0/ ${mediaId} ` , { encabezados : { Autorización : `Portador YOUR_WHATSAPP_ACCESS_TOKEN` } }); devolver respuesta.data.url; }
- Implementar y probar:
- Implemente su servidor en una plataforma en la nube (por ejemplo, AWS EC2, Heroku).
- Envía mensajes de prueba a tu número de WhatsApp Business y verifica que aparezcan en el canal de Slack designado.
Paso 4: Mejorar la integración
Para que la integración sea más sólida, considere estas características avanzadas:
- Filtrado de mensajes : Añade lógica para filtrar mensajes según palabras clave, remitente o prioridad. Por ejemplo, reenvía solo los mensajes que contengan "urgente" a un canal específico de Slack.
- Comunicación bidireccional : permite a los usuarios de Slack responder a los mensajes de WhatsApp enviando mensajes al bot de Slack, que los reenvía a través de la API de WhatsApp.
- Manejo de errores : implemente mecanismos de reintento para llamadas API fallidas y registre los errores en un canal de Slack dedicado.
- Seguridad : proteja su punto final de webhook con autenticación (por ejemplo, verifique la firma del webhook de WhatsApp) y use variables de entorno para datos confidenciales como tokens de API.
Paso 5: Monitorear y mantener
- Monitoreo del estado del webhook : Verifique periódicamente que el punto final de su webhook reciba eventos. Utilice herramientas como AWS CloudWatch o un mecanismo de registro sencillo.
- Actualizar versiones de la API : Tanto las API de WhatsApp como las de Slack pueden actualizarse. Consulta Meta para desarrolladores y la documentación de la API de Slack para estar al tanto de los cambios más importantes.
- Escala según sea necesario : si el volumen de mensajes aumenta, considere equilibrar la carga u optimizar su servidor para mejorar el rendimiento.
Desafíos y consideraciones
- Restricciones de la API de WhatsApp : La API de WhatsApp Business tiene políticas estrictas, como la aprobación de plantillas de mensajes y los límites de frecuencia. Asegúrate de cumplirlas para evitar la suspensión de tu cuenta.
- Límites de velocidad de Slack : La API de Slack tiene límites de velocidad (p. ej., un mensaje por segundo por canal). Implemente colas para notificaciones de alto volumen.
- Privacidad de datos : dado que maneja datos de clientes, asegúrese de cumplir con el RGPD o la CCPA protegiendo los datos en tránsito y en reposo.
- Gastos generales de mantenimiento : sin servicios de terceros, usted es responsable del tiempo de actividad del servidor, las actualizaciones y la depuración.
Conclusión
Integrar las notificaciones de WhatsApp con los canales de Slack sin servicios de terceros es una forma eficaz de optimizar la comunicación y mantener el control total sobre tus datos y flujos de trabajo. Al aprovechar la API de WhatsApp Business y la API de Slack, puedes crear una solución personalizada que se adapte a las necesidades de tu equipo. Si bien este enfoque requiere experiencia técnica y mantenimiento continuo, ofrece una flexibilidad y un ahorro de costes inigualables en comparación con las plataformas de terceros.