Webhooks
Los Webhooks son una forma eficaz de obtener información y actualizaciones en tiempo real sobre los cambios de estado de los mensajes. Con los webhooks, se enviará una solicitud HTTP POST a la URL de webhook que hayas proporcionado cada vez que ocurra un evento relevante.
Configuración Desde Panel
Dirígete al panel de la referencia y busca el cuadro
Nuevo WebHook
.Ingresa la URL a la que deseas enviar los mensajes.
Agrega las cabeceras que necesites que se envíen para, por ejemplo, autenticar e identificar el mensaje entrante.
Haz clic en
Guardar Configuración
y acepta.
Puedes ver y eliminar las URL configuradas desde el listado WebHooks
.
Configuración Desde API
Para agregar y actualizar una configuración de webhook desde la API, realiza la siguiente solicitud:
curl --location --request POST 'https://apirest.whatsuy.com/references/hookconf'
--header 'Authorization: Bearer <token>'
--header 'Content-Type: application/json'
--data-raw '{
"id": "11111111",
"webhook": "https://ocex2.whatsuy.com/admin/index.php?route=whatsapp/common/webhook",
"headers": [
{
"key": "auth",
"value": "973827394"
},
{
"key": "reference",
"value": "11111111"
}
]
}'
La respuesta será la siguiente si la configuración se actualiza correctamente:
{
"success": true,
"message": "Configuracion actualizada correctamente",
"data": {}
}
Formato De Mensaje Recibido
Cuando la cuenta de WhatsApp reciba o envíe un mensaje, se realizará una solicitud a la URL de webhook con las cabeceras configuradas y un cuerpo con un formato específico dependiendo del tipo de mensaje.
Si se requiere descargar un adjunto (imagen, video, documento o audio), puedes descargarlo desde la URL https://apirest.whatsuy.com/{fileUrl}
.
Los diferentes tipos de mensajes pueden ser: Texto
, Imagen
, Video
, Documento
o Audio
. Cada uno tendrá un formato específico con información relevante para ese tipo de contenido.
Texto
Es un mensaje de texto simple. Incluye detalles como la referencia, el remitente, el estado y el texto del mensaje.
{
"reference": 11111111,
"remoteJid": "59891111111::single",
"mine": false,
"id": "BAE57F357C73558A",
"pushName": "Whats UY Test Contact",
"verifiedBizName": "Whats UY Test",
"messageTimestamp": 1663172439,
"type": "text",
"text": "Prueba Mensaje",
"status": "PENDING"
}
Imagen
Es un mensaje de tipo imagen. Incluye la información de la imagen, como su mimetype, tamaño, dimensiones y una miniatura.
{
"reference": 11111111,
"remoteJid": "59891111111::single",
"mine": false,
"id": "BAE57F357C73558A",
"pushName": "Whats UY Test Contact",
"verifiedBizName": "Whats UY Test",
"messageTimestamp": 1663172439,
"type": "image",
"mimetype": "image/jpeg",
"fileLength": 169584,
"height": 1640,
"width": 922,
"jpegThumbnail": "/9j/QABRAD...",
"caption": "Prueba Mensaje IMG",
"fileUrl": "medias/11111111/F8186F2E",
"status": "PENDING"
}
Video
Es un mensaje de tipo video. Incluye la información del video, como su mimetype, tamaño, duración, dimensiones y una miniatura.
{
"reference": 11111111,
"remoteJid": "59891111111::single",
"mine": false,
"id": "BAE57F357C73558A",
"pushName": "Whats UY Test Contact",
"verifiedBizName": "Whats UY Test",
"messageTimestamp": 1663172439,
"type": "video",
"mimetype": "video/mp4",
"fileLength": "907068",
"seconds": 3,
"height": 640,
"width": 352,
"jpegThumbnail": "/9j/QABAAD...",
"caption": "Prueba Mensaje Video",
"fileUrl": "medias/11111111/Fr186F2E",
"status": "PENDING"
}
Documento
Es un mensaje de tipo documento. Incluye la información del documento, como su mimetype, tamaño, título, número de páginas y una miniatura. Además, proporciona una URL para acceder al archivo del documento.
{
"reference": 11111111,
"remoteJid": "59891111111::single",
"mine": false,
"id": "BAE57F357C73558A",
"pushName": "Whats UY Test Contact",
"verifiedBizName": "Whats UY Test",
"messageTimestamp": 1663172439,
"type": "document",
"mimetype": "application/pdf",
"title": "docname.pdf",
"fileLength": "238627",
"pageCount": 3,
"jpegThumbnail": "/9j/QABAAD...",
"fileName": "docname.pdf",
"caption": "Prueba Mensaje Docs",
"fileUrl": "medias/11111111/Fr186F2E",
"status": "PENDING"
}
Audio
Es un mensaje de tipo audio. Incluye la información del audio, como su mimetype, tamaño y duración. También proporciona una representación de la forma de onda del audio y una URL para acceder al archivo de audio.
{
"reference": 11111111,
"remoteJid": "59891111111::single",
"mine": false,
"id": "BAE57F357C73558A",
"pushName": "Whats UY Test Contact",
"verifiedBizName": "Whats UY Test",
"messageTimestamp": 1663172439,
"type": "audio",
"mimetype": "audio/ogg; codecs=opus",
"fileLength": "11971",
"seconds": 5,
"waveform": "AAABDTs6Iw4AAAAADRkYERcUFRgaEgQfEQcDFyUcGB4VGhEBAAAAAw4hKyQXAAAAAAAAAAAAAAAAAQMCBQAAAA==",
"fileUrl": "medias/11111111/Fr186F2E",
"status": "PENDING"
}
En todos estos formatos de mensaje, reference
es el identificador de la conversación, remoteJid
es el identificador del contacto, mine
indica si el mensaje fue enviado por nosotros, pushName
y verifiedBizName
son nombres asociados al contacto, messageTimestamp
es el sello de tiempo del mensaje, type
es el tipo de mensaje y status
es el estado actual del mensaje.
Formato De Cambio De Estado Recibido
Además de los mensajes, los cambios de estado también se enviarán a la URL de webhook configurada. Los posibles estados son: FAIL
, PENDING
, SENDING
, DELIVERED
, READ
y PLAYED
.
El formato de cambio de estado será similar a este:
{
"reference": 11111111,
"remoteJid": "59891111111::single",
"mine": false,
"id": "BAE57F357C73558A",
"pushName": "Whats UY Test Contact",
"verifiedBizName": "Whats UY Test",
"messageTimestamp": 1663172439,
"status": "DELIVERED"
}
De esta manera, puedes realizar un seguimiento del estado de los mensajes y actuar en consecuencia según tus necesidades.