¿Cómo podemos ayudar?

Integración con webhook

 

Screen_Shot_2020-03-08_at_17.47.27.png

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.

Group_93.png

Una vez en el Centro de integraciones, busca y haz clic en Webhooks como se muestra a continuación: 

Group_94.png

 

Paso 2

Elige la acción sobre la que quieres obtener cargas útiles instantáneas:

image_5__5_.png

 

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:

image_5__6_.png

¡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.

 

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.

 
A continuación, puedes ver algunos ejemplos de cómo se verán:
create_item. Ejemplo de carga útil:
{
 "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.