
Compartir:
Antiguo desarrollador .NET Advocate @Vonage, ingeniero de software poliglota full-stack, AI/ML
Gestión de mensajes entrantes no admitidos con la Messages API
Tiempo de lectura: 2 minutos
El sitio Messages API le permite conectar con sus clientes a través de muchos canales de mensajería social como WhatsApp, Facebook Messenger y Viber.
La conexión es bidireccional: puedes enviar y recibir mensajes. Pero en el mundo de los canales de mensajería social, en rápida evolución, se plantea un problema singular. Qué ocurre si un cliente envía a tu empresa un tipo de mensaje que aún no es compatible?
Por ejemplo, ¿qué ocurre cuando tu cliente te envía un sticker por WhatsApp? Esta pregunta es recurrente para los usuarios que se integran con la Messages API.
La respuesta está en el cuerpo de la solicitud del mensaje entrante. El JSON del mensaje entrante contiene un campo type dentro del objeto de contenido del mensaje.
Si el tipo no es compatible, el campo type es unsupportedEsto es válido para WhatsApp, Viber, Facebook Messenger y MMS. El cuerpo del mensaje de un mensaje entrante con una carga útil no admitida tendrá este aspecto:
{
"message_uuid": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"timestamp": "2020-01-01T14:00:00.000Z",
"to": {
"type": "whatsapp",
"number": "447700900000"
},
"from": {
"type": "whatsapp",
"number": "447700900001"
},
"message": {
"content": {
"type": "unsupported"
}
}
}Observa cómo te proporciona el número de WhatsApp de tu cliente. Armado con esta información, puedes decidir cómo lo gestionará tu aplicación. Puede que quieras anotar que tu cliente te ha respondido, y puede que quieras responderle, indicando que te ha enviado un mensaje que no eres capaz de entender.
Detección de un mensaje no admitido en el código
Normalmente me gustan los ejemplos de código para ilustrar conceptos como estos, así que veamos un ejemplo usando Node JS. Crea un nuevo directorio y en su ejecución npm install express body-parser
Ahora cree un nuevo archivo llamado server.js. Aquí, añadiremos el siguiente código.
const app = require('express')()
const bodyParser = require('body-parser')
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.post('/webhooks/inbound-message', (req, res) => {
if(req.body['message']['content']['type'] == 'unsupported'){
console.log("Received an unsupported message from "
+ req.body['from']['number']);
// add the rest of your unsupported logic here.
}
else{
console.log(req.body['message']['content'])
}
res.status(200).end();
});
app.listen(5000)
Inicie nuestro servidor ejecutando node server.js. Con nuestro servidor en funcionamiento, lo último que tenemos que hacer es conectarle los mensajes de WhatsApp.
Yo recomendaría utilizar ngrok para recibir mensajes entrantes de WhatsApp localmente desde la API de Messages API de Vonage. Puedes iniciarlo ejecutando ngrok http 5000 - que producirá una URL base para ti. Tu aplicación recibirá mensajes en BASE_URL/webhooks/inbound-messagesasí que utiliza esa URL cuando configures el Mensajes API Sandbox.
Con todo eso conectado, ya puedes enviarte mensajes a ti mismo. Así que, si yo fuera a WhatsApp y enviara al Sandbox de Mensajes un Sticker de Café:

Mi aplicación lo recibirá e imprimirá el mensaje: Received an unsupported message from WHATSAPP_NUMBER.
En caso contrario, imprimirá el contenido del mensaje.

Recursos
Si quieres aprender a enviar un mensaje de WhatsApp, hay un magnífico explicador de Garann Means
Si está interesado en utilizar la Messages API en general, nuestra docs tiene un montón de contenido y explicaciones sobre cómo ponerlo en marcha.
Puede encontrar el código de esta entrada de blog en GitHub