monday.com permite enviar un webhook a través de nuestras integraciones o incluso crearlos a través de la API. Puedes enviar un webhook cada vez que ocurra un evento elegido dentro de un tablero. Sigue leyendo para obtener más información.
¿Qué es un webhook?
Un webhook (también llamado web callback o push API de HTTP) permite que una aplicación brinde información a otras aplicaciones en tiempo real. Un webhook entrega datos a otras aplicaciones ni bien ocurre un cambio, lo que significa que obtienes datos de inmediato, a diferencia de las API típicas en las que debes realizar solicitudes para obtener datos de manera frecuente y verlos en tiempo real. Esto hace que los webhooks sean mucho más eficientes para el proveedor y el consumidor.
Siempre que intentes crear un webhook nuevo en monday.com, enviaremos un desafío JSON a la URL que proporciones para verificar que tienes control sobre el extremo. ¡Sigue leyendo para descubrir cómo debería responder tu aplicación!
Cómo crear un nuevo Webhook
Primer Paso
En tu tablero, haz clic en el icono de integraciones y busca la aplicación “Webhooks” en el Centro de integraciones.
Una vez en el Centro de integraciones, busca y haz clic en Webhooks como se muestra a continuación:
Paso 2
Elige la acción sobre la que quieres obtener cargas útiles instantáneas:
Paso 3
Después de elegir la acción que necesitas, deberás especificar la URL. Debería ser una URL que pueda resolver el desafío JSON, y será la receptora de las cargas útiles en el futuro:
¡Y eso es todo! Cuando ocurra este cambio (por ejemplo, que se agregue un elemento nuevo a tu tablero), tu extremo recibirá una carga útil sobre el cambio. Puedes encontrar algunas cargas útiles más abajo.
Paso 4
Agrega una descripción para detallar cómo se utiliza tu integración de Webhook en tu flujo de trabajo. Esto permitirá que cualquier usuario que utilice esta integración comprenda mejor cuál es el propósito de esta integración y cómo se conecta al flujo de trabajo.
Cómo verificar una URL de webhook
La URL que especifiques debe ser controlada por tu aplicación, por supuesto. Nuestra plataforma envía un desafío JSON al extremo para verificar esto, y tu aplicación debería responder con el mismo desafío.
Enviaremos un cuerpo JSON POST, que contiene un campo de “desafío”. Es un token generado aleatoriamente que esperamos que devuelvas como campo de “desafío” del cuerpo JSON de tu respuesta a esa solicitud.
Así es como se verá el "Desafío":
{
challenge: “3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P”
}
El cuerpo de la respuesta debe ser un cuerpo JSON POST idéntico:
{
challenge: “3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P”
}
Aquí hay un ejemplo simple de un receptor de webhook que mostrará la respuesta de salida del webhook y responderá correctamente al desafío:
app.post("/", function(req, res) { console.log(JSON.stringify(req.body, 0, 2)); res.status(200).send(req.body);})
¿Cómo se verán los datos del evento?
Cada webhook enviado al extremo tendrá un campo de evento en su cuerpo. Este campo contendrá la carga útil con los datos del evento.
{
"event": {
"userId": 9603417,
"originalTriggerUuid": null,
"boardId": 1771812698,
"pulseId": 1772099344,
"pulseName": "Create_item webhook",
"groupId": "topics",
"groupName": "Group Title",
"groupColor": "#579bfc",
"isTopGroup": true,
"columnValues": {},
"app": "monday",
"type": "create_pulse",
"triggerTime": "2021-10-11T09:07:28.210Z",
"subscriptionId": 73759690,
"triggerUuid": "b5ed2e17c530f43668de130142445cba"
}
Cambio en valor de columna (específico o cualquiera). Ejemplo de carga útil:
Esto incluirá el valor anterior, la ID de columna y el valor actual.
"event": {
"userId": 9603417,
"originalTriggerUuid": null,
"boardId": 1771812698,
"groupId": "topics",
"pulseId": 1771812728,
"pulseName": "Crate_item webhook",
"columnId": "date4",
"columnType": "date",
"columnTitle": "Date",
"value": {
"date": "2021-10-11",
"icon": null,
"time": null
},
"previousValue": null,
"changedAt": 1633943701.9457765,
"isTopGroup": true,
"app": "monday",
"type": "update_column_value",
"triggerTime": "2021-10-11T09:15:03.429Z",
"subscriptionId": 73760484,
"triggerUuid": "645fc8d8709d35718f1ae00ceded91e9"
}
Create_update. Ejemplo de carga útil:
"event": {
"userId": 9603417,
"originalTriggerUuid": null,
"boardId": 1771812698,
"pulseId": 1771812728,
"body": "<p>create_update webhook</p>",
"textBody": "create_update webhook",
"updateId": 1190616585,
"replyId": null,
"app": "monday",
"type": "create_update",
"triggerTime": "2021-10-11T09:18:57.368Z",
"subscriptionId": 73760983,
"triggerUuid": "6119292e27abcc571f90ea4177e94973"
}
Cambio de estado. Ejemplo de carga útil:
"event": {
"userId": 9603417,
"originalTriggerUuid": null,
"boardId": 1771812698,
"groupId": "topics",
"pulseId": 1772099344,
"pulseName": "Create_item webhook",
"columnId": "status",
"columnType": "color",
"columnTitle": "Status",
"value": {
"label": {
"index": 3,
"text": "Status change wbhook",
"style": {
"color": "#0086c0",
"border": "#3DB0DF",
"var_name": "blue-links"
}
},
"post_id": null
},
"previousValue": null,
"changedAt": 1633944017.473193,
"isTopGroup": true,
"app": "monday",
"type": "update_column_value",
"triggerTime": "2021-10-11T09:20:18.022Z",
"subscriptionId": 73761176,
"triggerUuid": "504b2eb76c80f672a18f892c0f700e41"
}
Los webhooks de subelementos son casi idénticos, pero también incluyen el parent_item_id en su carga útil. Aquí puedes ver algunos ejemplos:
create_subitem. Ejemplo de carga útil:
"event": {
"userId": 9603417,
"originalTriggerUuid": null,
"boardId": 1772135370,
"pulseId": 1772139123,
"pulseName": "sub-item",
"groupId": "topics",
"groupName": "Subitems",
"groupColor": "#579bfc",
"isTopGroup": true,
"columnValues": {},
"app": "monday",
"type": "create_pulse",
"triggerTime": "2021-10-11T09:24:51.835Z",
"subscriptionId": 73761697,
"triggerUuid": "5c28578c66653a87b00a80aa4f7a6ce3",
"parentItemId": "1771812716",
"parentItemBoardId": "1771812698"
}
Más asistencia
Si necesitas ayuda para crear integraciones personalizadas, contamos con una opción de asistencia paga a través de nuestra red de socios certificados de monday.com. Si te interesa, completa este formulario y ¡alguien se pondrá en contacto contigo en breve!
Si tienes preguntas, comunícate con nuestro equipo aquí. Estamos disponibles las 24 horas, los 7 días de la semana, y será un gusto ayudarte.
Comentarios