Enviar mensajes de WhatsApp utilizando la API de Infobip en Node.js

Para utilizar la API de Infobip para enviar mensajes de WhatsApp desde Node.js, puedes seguir los siguientes pasos:

Registrarte en Infobip

Para poder utilizar la API de Infobip, necesitarás registrarte en su sitio web y obtener una clave de API https://portal.infobip.com/homepage/ Dentro del panel de infobip podemos encontrar la API_KEY, API_BASE_URL y SENDER_PHONE que necesitaremos más adelante.

Antes de continuar es necesario activar el Sandbox de Infobip, para eso, dentro del panel de infobip, podrás encontrar la sección “Activate Infobip sandbox to start testing”, la cual te pedirá que escanees un código QR y envíes un mensaje en Whatsapp. Hecho esto podemos continuar.

Clonar Proyecto

Vamos a clonar este proyecto base de Express + TypeScript ejecutando el siguiente comando en una terminal.

git clone https://github.com/gzimbron/typescript-express-template.git infobip-demo

Abrir Proyecto

Abrimos el proyecto en nuestro editor de código, en este caso usaré visual studio code con el siguiente comando:

code infobip-demo

Instalar dependencias necesarias

Instala el paquete @infobip-api/sdk en tu proyecto utilizando el siguiente comando:

Este comando además, nos instala las dependencias originales que tenía el proyecto base.

npm install @infobip-api/sdk

Configurando variables de entorno

Vamos a crear un archivo .env en la raíz de tu proyecto y agregamos las siguientes variables, que podemos obtener en el panel de Infobip

INFOBIP_API_KEY="TU_API_KEY"
INFOBIP_BASE_URL="TU_API_BASE_URL"
INFOBIP_SENDER_PHONE="TU_SENDER_PHONE"
.env

Implementando el código

En el fichero src/index.ts, vamos a importar lo siguiente:

import { AuthType, Infobip } from '@infobip-api/sdk';

Agregamos un nuevo endpoint de tipo POST, donde recibiremos los datos “phone” y “message” para enviar el whatsapp:

 app.post('/whatsapp', async (req, res) => {
	const { phone, message } = req.body;

	const client = new Infobip({
		baseUrl: process.env.INFOBIP_BASE_URL!,
		apiKey: process.env.INFOBIP_API_KEY!,
		authType: AuthType.ApiKey
	});

	const messageConfig = {
		type: 'text',
		from: process.env.INFOBIP_SENDER_PHONE!,
		to: phone,
		content: {
			text: message
		}
	};

	try {
		const result = await client.channels.whatsapp.send(messageConfig);

		console.log(result);
		res.json({ sucess: true, data: result.data });
	} catch (error) {
		console.error(error);

		res.status(500).json({ sucess: false, error });
	}
});

Este código funciona de la siguiente manera:

  • Se crea una instancia de la clase Infobip, la cual configuramos con nuestra API_KEY y BASE_URL proporcionadas por Infobip.
  • Creamos un objeto que contiene la configuración del mensaje a enviar messageConfig, este objeto tiene los parametros:
    • type: que es el tipo del mensaje.
    • from: que es el número que aparecerá como remitente.
    • to: que es el número destino
    • content: un objeto que contiene una propiedad text que contiene el mensaje que se enviará.
  • Haciendo uso del método channel.whatsapp.send en el objeto de cliente de Infobip se procede a intentar enviar el mensaje; De otra manera captura el error.

Prueba

Ya tenemos listo nuestro endpoint, así que procedemos a correr nuestra aplicación con el siguiente comando:

npm run dev

Con estos pasos, deberías poder enviar mensajes de WhatsApp utilizando la API de Infobip en tu proyecto de NodeJS haciendo un POST a la ruta http://localhost:3000/whatsapp con un JSON como el siguiente:

{ 
	"phone": "447123456789",
	"message": "Hello World!"
}

Es importante resaltar que se debe de incluir el código telefónico del país, sin el simbolo +, por ejemplo para México sería: 521234567890 donde 52 es el código del país y 1234567890 es el número telefónico de destino.

Capturas de Pantalla

Llamada al endpoint:

Mensaje recibido:

Sobre Gustavo Zimbrón 188 artículos
Apasionado por la programación y la tecnología, me gustan los retos y aprender siempre cosas nuevas.
Subscribe
Notify of
guest

0 Comentarios
Oldest
Newest Most Voted
Inline Feedbacks
View all comments