Configuración de Webhook para API de WhatsApp con Node.js

Clase 9 de 28Curso 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?

  1. 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 y Axios para interactuar con la API de WhatsApp.
    • Configura el archivo server.js y asegúrate de tener dotenv para manejar las variables de entorno necesarias.
  2. 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?

  1. 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”.
  2. 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.
  3. 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.

¿Cómo realizar pruebas locales y públicas?

  1. Prueba local en Visual Studio Code:

    • Corre el servidor en el puerto 3000 y verifica la respuesta en localhost: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.
  2. 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.

¿Cómo probar y depurar la integración?

  1. 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 el API_TOKEN expira.
  2. 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.
  3. 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.