Skip to main content
ESPBoards

Enviar mensajes en WhatsApp usando la API de WhatsApp con ESP32

Descubre cómo enviar mensajes en WhatsApp usando la API de WhatsApp con ESP32. Aprende a enviar mensajes, alertas y notificaciones de WhatsApp. Tutorial y ejemplos de código.


Cuando trabajas con un ESP32, una característica increíblemente útil es la capacidad de enviar mensajes en WhatsApp cada vez que ocurren ciertos eventos en tus proyectos. Ya sea que estés monitoreando sensores, rastreando datos o automatizando alertas, poder enviar un mensaje en WhatsApp directamente desde el ESP32 puede llevar tu proyecto al siguiente nivel.

En este post, vamos a recorrer cómo usar la API de WhatsApp para enviar mensajes desde tu ESP32. Desde configurar la API hasta codificar tu ESP32 para enviar mensajes de WhatsApp desde la API, aprenderemos todo lo que necesitas saber sobre el uso de la API de WhatsApp. Ya sea que estés enviando notificaciones, alertas o actualizaciones personalizadas, pronto podrás enviar mensajes con WhatsApp desde tu dispositivo ESP32 con facilidad.

Requisitos #

Para comenzar a usar la API de WhatsApp para enviar mensajes desde tu ESP32, hay un par de pasos importantes que deberás seguir:

  • Cuenta de Negocios de Meta: Primero, deberás configurar una cuenta de negocios de Meta, que es crucial para acceder a la API de WhatsApp para enviar mensajes. Dirígete al Portal de Negocios de Meta para crear tu cuenta. Aquí es donde gestionarás todos los elementos esenciales, incluida la capacidad de enviar mensajes en WhatsApp desde tus proyectos. Para una guía detallada sobre cómo registrar tu cuenta, consulta este recurso.

  • Aplicación de Negocios de Meta: Una vez que tu cuenta esté lista, deberás crear una Aplicación de Negocios de Meta. Esta aplicación conecta tu ESP32 con la API de WhatsApp, permitiéndote enviar un mensaje en WhatsApp directamente desde tus dispositivos. Esto es clave para enviar mensajes de WhatsApp desde la API y manejar cosas como mensajes de alerta de WhatsApp. Puedes crear tu aplicación siguiendo los pasos aquí.

Crear una Cuenta de Negocios de Meta #

Si aún no tienes una Cuenta de Negocios de Meta, no te preocupes, es fácil de configurar. Simplemente dirígete a Meta para Desarrolladores y sigue los pasos para crear tu cuenta. Esta cuenta es necesaria para acceder a la API de WhatsApp para enviar mensajes desde tu ESP32.

Instrucciones detalladas sobre cómo registrar tu Cuenta de Negocios de Meta, puedes encontrarlas aquí.

Crear una Aplicación de Negocios de Meta #

Una vez que hayas creado tu Cuenta de Negocios de Meta, el siguiente paso es crear una Aplicación de Negocios de Meta, que te permitirá conectar tu ESP32 con la API de WhatsApp para enviar mensajes. Aquí te explicamos cómo hacerlo:

  1. Inicia sesión en developers.facebook.com usando las credenciales de tu Cuenta de Negocios de Meta.

  2. En la esquina superior derecha de la página, haz clic en “Mis Aplicaciones”.

  3. Selecciona “Crear Aplicación” para comenzar el proceso.

Negocios #

Si ya tienes un perfil de negocios en Facebook, puedes elegir a qué portafolio de negocios conectar la aplicación. Esto es especialmente útil para organizar aplicaciones bajo un negocio específico.

Si no tienes un perfil de negocios, ¡no te preocupes! Simplemente selecciona “No quiero conectar un portafolio de negocios todavía.”

Después de crear tu aplicación, estarás listo para configurarla para enviar mensajes de WhatsApp desde la API.

Casos de Uso #

Cuando se te pregunte "¿Qué quieres que haga tu aplicación?", selecciona “Otro” de la lista de opciones.

Esta opción es necesaria para proyectos donde estás integrando la API de WhatsApp para enviar mensajes desde dispositivos como el ESP32.

¿Qué quieres que haga tu aplicación? #

Bajo Tipo de Aplicación, selecciona “Negocios”.

Esto es esencial porque elegir el tipo Negocios te da acceso a la API de WhatsApp, permitiéndote enviar mensajes en WhatsApp desde tu ESP32.

Terminar de Crear la Aplicación #

En la siguiente página, deberás proporcionar algunos detalles básicos para tu aplicación:

  • Nombre de la Aplicación: Ingresa un nombre único para tu aplicación que refleje su propósito. Este nombre te ayudará a identificar fácilmente la aplicación más adelante.

  • Correo Electrónico de Contacto de la Aplicación: Proporciona una dirección de correo electrónico donde puedas ser contactado para cualquier problema relacionado con la aplicación.

  • Portafolio de Negocios: Si tienes un portafolio de negocios que deseas conectar, asegúrate de seleccionarlo aquí. Si no estás seguro, puedes omitir este paso por ahora.

Configurar la Integración de WhatsApp #

Después de hacer clic en “Crear Aplicación,” serás dirigido al panel de tu aplicación.

Busca la opción “WhatsApp” en el menú de la izquierda. A su lado, verás un botón “Configurar”. Haz clic en “Configurar” para comenzar a configurar la API de WhatsApp para tu aplicación.

Empezar a Usar la API #

Una vez que hayas hecho clic en “Configurar” para WhatsApp, verás la opción de “Comenzar a usar la API.” Aquí está lo que debes hacer a continuación:

Haz clic en “Comenzar a usar la API” para acceder a tus funciones de prueba. Recibirás un Número de Negocios de Prueba que te permitirá comenzar a experimentar con la API de WhatsApp.

Ten en cuenta que este número de prueba se puede usar para enviar mensajes en WhatsApp a un máximo de 5 destinatarios. Además, tiene un límite de 250 nuevas conversaciones por día.

Este número de prueba es perfecto para comenzar con la funcionalidad básica, y para la mayoría de los escenarios de prueba, será suficiente. Sin embargo, si necesitas aumentar estos límites, puedes conectar un número de teléfono real a tu cuenta de negocios más adelante. Por ahora, disfruta explorando cómo enviar mensajes en WhatsApp usando tu número de prueba.

Generar Token de Acceso #

Para interactuar con la API de WhatsApp desde tu ESP32, el siguiente paso es generar tu token de acceso.

Haz clic en “Generar Token de Acceso” para crear un token que permita a tu aplicación autenticarse y enviar mensajes.

Este token de acceso es crucial para enviar mensajes en WhatsApp usando la API de WhatsApp para enviar mensajes. Mantenlo seguro, ya que otorga a tu ESP32 permiso para enviar mensajes desde WhatsApp.

Después de hacer clic en “Generar Token de Acceso”, aparecerá una ventana emergente que te pedirá iniciar sesión en tu cuenta de Facebook.

Inicia sesión usando tus credenciales de Facebook asociadas con tu Cuenta de Negocios de Meta.

En la ventana emergente, verás una opción que dice “Optar por las cuentas actuales de WhatsApp únicamente.” Recomiendo seleccionar esta opción para asegurarte de que estás trabajando con tu número de prueba.

Preparación para Enviar el Mensaje #

Una vez que tengas tu token de acceso, es hora de configurar el número de teléfono para enviar mensajes:

  • De: Selecciona tu Número de Negocios de Prueba de la lista.
  • Para: Haz clic en “Administrar lista de números de teléfono”. Aquí, puedes agregar tu número de teléfono personal para recibir mensajes de prueba.

Después de agregar tu número de teléfono, recibirás un mensaje en WhatsApp con un código de verificación. Asegúrate de revisar tu WhatsApp para este código e ingresarlo en el sitio web.

Después de la verificación, selecciona tu número de teléfono en el campo Para.

Enviando el Mensaje de Prueba de WhatsApp #

Una vez que tu número de teléfono esté verificado, verás una solicitud cURL generada a continuación.

Puedes copiar la solicitud cURL proporcionada y ejecutarla en tu terminal para enviar el mensaje directamente.

Alternativamente, puedes simplemente hacer clic en el botón “Enviar Mensaje” para probar el envío de tu primer mensaje de WhatsApp.

Si tiene éxito, deberías recibir el mensaje de prueba en breve en el número de WhatsApp seleccionado. ¡Este es un momento emocionante, ya que confirma que tu integración con la API de WhatsApp está funcionando como se espera!

Personalizando el Mensaje de WhatsApp #

Si deseas personalizar el mensaje de prueba que estás enviando, necesitarás crear una nueva plantilla de mensaje en la plataforma de Negocios de Meta.

  1. Ve al Administrador de Negocios de Meta y navega a la sección del Administrador de WhatsApp.
  2. Haz clic en “Crear Plantilla” para comenzar el proceso de agregar una nueva plantilla de mensaje.
  3. Cuando se te pida, ingresa un nombre para tu plantilla. Por ejemplo, usamos “statement_available_2”.

Crear una nueva plantilla te permite personalizar el contenido de tus mensajes de WhatsApp y asegura que tus comunicaciones estén adaptadas a tus necesidades específicas. Una vez que tu plantilla esté creada, puedes usarla para enviar mensajes a WhatsApp.

Ahora que has creado tu plantilla de mensaje, necesitarás actualizar la solicitud cURL para usar tu nueva plantilla.

En la solicitud cURL, cambia template.name al nombre de tu plantilla, por ejemplo, “statement_available_2”.

curl -i -X POST \
https://graph.facebook.com/v20.0/431609330040853/messages \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"messaging_product": "whatsapp",
"to": "xxx",
"type": "template",
"template": {
"name": "statement_available_2",
"language": { "code": "en_US" }
}
}'

Pega esta solicitud cURL actualizada en tu terminal, o actualiza la solicitud cURL en tu aplicación de Meta y haz clic en “Enviar Mensaje” nuevamente para probar tu nueva plantilla.

Deberías recibir el mensaje en breve en tu WhatsApp.

Generar Token Permanente #

¡El token de acceso que usamos antes es temporal y caducará en unas pocas horas! Por lo tanto, necesitamos generar un token permanente.

Abrir la Configuración de Tu Aplicación #

  1. Ve a Meta Business Suite.
  2. En el menú desplegable superior izquierdo, localiza tu cuenta de negocios.
  3. Haz clic en el icono de Configuración (engranaje) en la barra lateral.
  4. En "Usuarios", selecciona "Usuarios del sistema".

Crear Usuario del Sistema #

  1. Haz clic en el botón Agregar.
  2. Ingresa el nombre del usuario.
  3. Elige entre Admin o Empleado según el nivel de acceso que desees otorgar. Empleado es suficiente.
  4. Haz clic en Crear Usuario.

Asignar Activos al Usuario #

  1. Selecciona el usuario recién creado.
  2. Haz clic en Asignar Activos.
  3. Selecciona tu aplicación y asigna Control total.

Generar Token #

  1. Haz clic en Generar Token.
  2. Selecciona la aplicación para la cual deseas generar el token.
  3. Establece el tiempo de expiración del token según sea necesario.
  4. Selecciona los permisos necesarios, incluido whatsapp_business_messaging.
  5. Haz clic en Generar Token.

Copiar el Token #

  1. Una vez que se haya generado el token, cópialo inmediatamente.
  2. Anótalo en un lugar seguro, ya que lo necesitarás para hacer llamadas a la API.

¡Asegúrate de mantener tu token de acceso seguro y nunca lo compartas públicamente!

Usando la API de WhatsApp para Enviar Mensajes desde ESP32 #

Puedes encontrar un ejemplo completo de código en el Repositorio de GitHub.

Crea una carpeta llamada whatsapp_message. Esta será la directorio principal del proyecto Arduino.

Secrets #

Crea el archivo secrets.h en el directorio raíz del proyecto. Copia el siguiente código:

#define WIFI_SSID "<REPLACE_WITH_YOUR_WIFI_SSID>"
#define WIFI_PASS "<REPLACE_WITH_YOUR_WIFI_PASSWORD>"
#define WHATSAPP_ACCESS_TOKEN "<REPLACE_WITH_WHATSAPP_ACCESS_TOKEN>"
#define TARGET_PHONE_NUMBER "<REPLACAE_WITH_TARGET_WHATSAPP_NUMBER>"
  1. Rellena tus credenciales de WiFi en WIFI_SSID y WIFI_PASS
  2. Pega el Token de Acceso de la Aplicación Meta que copiaste anteriormente en REPLACE_WITH_WHATSAPP_ACCESS_TOKEN. Debería verse algo así: AAB2J0Qzxt29kBOxRsqSXysJJQZBkxEb9qiSGy5zOZArtmUVL2dv9abP8z32p7mHZA4bgOofN7g8zyoZBCCJpuG8Pkwnk3NyQ2zfLvJqUs9eKUGKWazWag9eRz6C8b37BVW6L5UVRVIJpeRhfxE2KQhM1kYTKDmHNudxFtl4QZBfHuAtDxRPzaHorse99y7PZAxyNVBKbsNot7JEBkQ4NUiXEPZAnsVMZD

Certificado SSL/TLS de Facebook Graph (API de WhatsApp) #

Crea el archivo facebookGraphCert.h en el directorio raíz del proyecto y copia el siguiente código:

/*
* Get current graph.facebook.com certificate:
* openssl s_client -showcerts -connect graph.facebook.com:443
*/

const char* FACEBOOK_GRAPH_CERT = R"(
-----BEGIN CERTIFICATE-----
MIIEsTCCA5mgAwIBAgIQBOHnpNxc8vNtwCtCuF0VnzANBgkqhkiG9w0BAQsFADBs
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
ZSBFViBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowcDEL
MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
LmRpZ2ljZXJ0LmNvbTEvMC0GA1UEAxMmRGlnaUNlcnQgU0hBMiBIaWdoIEFzc3Vy
YW5jZSBTZXJ2ZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2
4C/CJAbIbQRf1+8KZAayfSImZRauQkCbztyfn3YHPsMwVYcZuU+UDlqUH1VWtMIC
Kq/QmO4LQNfE0DtyyBSe75CxEamu0si4QzrZCwvV1ZX1QK/IHe1NnF9Xt4ZQaJn1
itrSxwUfqJfJ3KSxgoQtxq2lnMcZgqaFD15EWCo3j/018QsIJzJa9buLnqS9UdAn
4t07QjOjBSjEuyjMmqwrIw14xnvmXnG3Sj4I+4G3FhahnSMSTeXXkgisdaScus0X
sh5ENWV/UyU50RwKmmMbGZJ0aAo3wsJSSMs5WqK24V3B3aAguCGikyZvFEohQcft
bZvySC/zA/WiaJJTL17jAgMBAAGjggFJMIIBRTASBgNVHRMBAf8ECDAGAQH/AgEA
MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy
dC5jb20wSwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNlcnQuY29t
L0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDA9BgNVHSAENjA0MDIG
BFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQ
UzAdBgNVHQ4EFgQUUWj/kK8CB3U8zNllZGKiErhZcjswHwYDVR0jBBgwFoAUsT7D
aQP4v0cB1JgmGggC72NkK8MwDQYJKoZIhvcNAQELBQADggEBABiKlYkD5m3fXPwd
aOpKj4PWUS+Na0QWnqxj9dJubISZi6qBcYRb7TROsLd5kinMLYBq8I4g4Xmk/gNH
E+r1hspZcX30BJZr01lYPf7TMSVcGDiEo+afgv2MW5gxTs14nhr9hctJqvIni5ly
/D6q1UEL2tU2ob8cbkdJf17ZSHwD2f2LSaCYJkJA69aSEaRkCldUxPUd1gJea6zu
xICaEnL6VpPX/78whQYwvwt/Tv9XBZ0k7YXDK/umdaisLRbvfXknsuvCnQsH6qqF
0wGjIChBWUMo0oHjqvbsezt3tkBigAVBRQHvFwY+3sAzm2fTYS5yh+Rp/BIAV0Ae
cPUeybQ=
-----END CERTIFICATE-----
)";

Tenga en cuenta que este es el certificado de graph.facebook.com en el momento de escribir esta publicación. Si el certificado cambia en el futuro, puedes obtener un nuevo certificado con el siguiente comando:

openssl s_client -showcerts -connect graph.facebook.com:443

Ejemplo de Código ESP32 para Enviar un Mensaje de WhatsApp #

Crea un archivo whatsapp.h en el directorio raíz de tu proyecto. Copia el siguiente código:

#include <WiFi.h>
#include <WiFiMulti.h>
#include <HTTPClient.h>
#include <WiFiClientSecure.h>
#include "facebookGraphCert.h"

const char ssid[] = WIFI_SSID;
const char pass[] = WIFI_PASS;
const String whatsapp_access_token = WHATSAPP_ACCESS_TOKEN;
const String target_phone_number = TARGET_PHONE_NUMBER;
const String fb_graph_messages_url = "https://graph.facebook.com/v20.0/431609330040853/messages";

WiFiMulti WiFiMulti;

void connectWIFI() {
WiFi.disconnect(true);
WiFiMulti.addAP(ssid, pass);
WiFi.mode(WIFI_STA);
while ((WiFiMulti.run() != WL_CONNECTED)) {
Serial.print(".");
}
Serial.println("WiFi Connected");
}

void sendWhatsapp() {
Serial.print("Send whatsapp");
WiFiClientSecure *client = new WiFiClientSecure;
if (client) {
client -> setCACert(FACEBOOK_GRAPH_CERT);
{
HTTPClient https;

if (https.begin(*client, fb_graph_messages_url)) {
https.addHeader("Content-Type", "application/json");
https.addHeader("Authorization", "Bearer " + String(WHATSAPP_ACCESS_TOKEN));

String jsonPayload = "{\"messaging_product\":\"whatsapp\",\"to\":\"" + target_phone_number + "\",\"type\":\"template\",\"template\":{\"name\":\"statement_available_2\",\"language\":{\"code\":\"en_US\"}}}";
int httpCode = https.POST(jsonPayload);

if (httpCode > 0) {
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
String payload = https.getString();
Serial.print("HTTP Response: ");
Serial.println(payload);
}
} else {
Serial.print("HTTP Post failed: ");
Serial.println(https.errorToString(httpCode).c_str());
}

https.end();
}
}

delete client;
}
}

Este código proporciona una función para enviar un mensaje de WhatsApp utilizando la API.

La función principal sendWhatsapp() establece un certificado de Facebook Graph en WiFiClientSecure, configura el contenido del mensaje de WhatsApp y finalmente envía el mensaje a la API de WhatsApp.

Enviar el Mensaje desde ESP32 a tu Canal de Discord #

Crea un archivo whatsapp_message.ino en el directorio raíz de tu proyecto. Agrega el siguiente código:

#include "secrets.h"
#include "whatsapp.h"

void setup() {
Serial.begin(9600);
connectWIFI();
sendWhatsapp();
}

void loop() {
}

Este fragmento de código es un programa simple para ESP32 diseñado para conectarse a una red WiFi y enviar un mensaje de WhatsApp utilizando la API de WhatsApp. A continuación, se detalla una descripción de sus componentes clave:

Bibliotecas:

  • #include "secrets.h": Este archivo probablemente contiene información sensible, como las credenciales WiFi y el token de acceso de WhatsApp, necesarios para la conexión y las solicitudes a la API.
  • #include "whatsapp.h": Este archivo puede contener definiciones o declaraciones de funciones relacionadas con el envío de mensajes de WhatsApp.

Función de Configuración (Setup):

  • Serial.begin(9600): Inicializa la comunicación serial a una velocidad de baudios de 9600, lo que permite que el ESP32 envíe y reciba datos a través del monitor serial.

  • connectWIFI(): Llama a una función para establecer una conexión con la red WiFi especificada utilizando las credenciales de secrets.h.

  • sendWhatsapp(): Llama a una función que envía un mensaje de WhatsApp a través de la API de WhatsApp.

Función Loop:

La función loop() está vacía, lo que significa que el programa no realiza tareas repetitivas después de la configuración inicial. En este contexto, podría utilizarse para más funcionalidades si es necesario.

En general, si subes este programa a tu placa ESP32, enviará un mensaje al número de WhatsApp proporcionado.

Enviar WhatsApp a Múltiples Números con la API de Graph #

La API de WhatsApp Business Cloud no ofrece la opción de enviar mensajes a varios números de teléfono a la vez. Si deseas enviar el mismo mensaje a múltiples contactos, debes hacerlo uno por uno o en un bucle.

Conclusión #

En esta publicación de blog, exploramos cómo aprovechar la API de WhatsApp para enviar mensajes directamente desde un ESP32. Recorrimos los pasos para configurar tu entorno, crear las configuraciones necesarias y elaborar la carga útil JSON adecuada para enviar un mensaje de WhatsApp.

Al integrar esta funcionalidad, puedes automatizar notificaciones, alertas u otros mensajes basados en activadores específicos dentro de tus proyectos. Con la capacidad de personalizar el contenido del mensaje y los números de teléfono de los destinatarios de manera dinámica, las posibilidades son vastas.