Configuración de Webhook para API de WhatsApp con Node.js
Clase 9 de 28 • Curso de ChatBot con WhatsApp API
Resumen
Para implementar una integración básica entre WhatsApp API y una aplicación de Node.js, sigue una serie de pasos que van desde configurar el servidor hasta establecer una conexión con la API de Meta para WhatsApp y realizar pruebas locales y públicas. Este proceso permite realizar un eco de los mensajes recibidos y replicarlos en el chat de WhatsApp, utilizando herramientas como Axios, Express y variables de entorno.
¿Cómo configurar el servidor de Node.js para WhatsApp API?
-
Preparar el entorno del servidor:
- Dirígete a la documentación de WhatsApp API de Meta para consultar el código de ejemplo que puedes usar como base.
- Usa
Express
para construir el servidor yAxios
para interactuar con la API de WhatsApp. - Configura el archivo
server.js
y asegúrate de tenerdotenv
para manejar las variables de entorno necesarias.
-
Establecer las variables de entorno:
-
Crea un archivo
.env
que incluya:WEBHOOK_VERIFY_TOKEN
: un token secreto compartido con Meta para validar el webhook.API_TOKEN
: el token de acceso a la API.PORT
: el puerto en el cual se ejecutará el servidor.BUSINESS_PHONE
: el ID del teléfono de negocios registrado en Meta.API_VERSION
: la versión de la API en uso.
-
Excluye el archivo
.env
del control de versiones con.gitignore
y proporciona un.env-example
con las claves esperadas para futuros desarrolladores.
-
¿Cómo implementar el código de conexión y manejo de solicitudes?
-
Configurar el webhook:
- Usa el webhook proporcionado por Meta para recibir y validar los mensajes entrantes.
- Define la lógica para replicar los mensajes recibidos: cuando el bot reciba un mensaje, este debe responder con el mismo texto, emulando un “eco”.
-
Realizar cambios en las peticiones de Axios:
- Personaliza el código de ejemplo para que la versión de la API y el ID de teléfono provengan de las variables de entorno, facilitando el mantenimiento.
- Ajusta la autenticación de Axios para que utilice
API_TOKEN
.
-
Configurar
NodeMon
para un desarrollo continuo:- Crea un archivo
nodemon.json
para monitorear los cambios en el código en las carpetas y extensiones clave del proyecto. - Especifica los directorios y archivos que no deben observarse, como
node_modules
.
- Crea un archivo
¿Cómo realizar pruebas locales y públicas?
-
Prueba local en Visual Studio Code:
- Corre el servidor en el puerto
3000
y verifica la respuesta enlocalhost:3000
. - Para probar la conexión con Meta, expón el puerto de desarrollo con el
Port Forwarding
de Visual Studio Code, lo cual crea una URL pública accesible temporalmente.
- Corre el servidor en el puerto
-
Configurar el webhook en Meta:
- En el panel de desarrolladores de Meta, usa la URL pública y agrega
WEBHOOK_VERIFY_TOKEN
para validar la conexión. - Activa los permisos de “mensajes”, “templates” y “templates de quality update” para que el bot pueda enviar y recibir mensajes.
- En el panel de desarrolladores de Meta, usa la URL pública y agrega
¿Cómo probar y depurar la integración?
-
Envía un mensaje de prueba:
- Envía un mensaje al bot en WhatsApp. Si todo está configurado correctamente, el bot debe replicar el mensaje.
- Si ocurre un error, verifica la consola de Node.js; errores comunes incluyen un
401 Unauthorized
cuando elAPI_TOKEN
expira.
-
Actualizar tokens:
- Dado que los tokens tienen una caducidad, genera uno nuevo desde el panel de Meta, actualiza la variable
API_TOKEN
en.env
y reinicia el servidor.
- Dado que los tokens tienen una caducidad, genera uno nuevo desde el panel de Meta, actualiza la variable
-
Optimizar para producción:
- Aunque el
Port Forwarding
permite exponer el servidor para pruebas, evita usar esta configuración en producción. - Considera implementar una solución de hosting adecuada para el despliegue en producción con tokens de larga duración.
- Aunque el