Índice
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"
.envImplementando 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
yBASE_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: