This article is also available in:
En Flokzu puedes compartir la información contenida en tus formularios con sistemas externos a través de webhooks.
Los webhooks proporcionan un mecanismo para notificar a tu aplicación cuando se produzca un determinado evento y así poder tomar acciones. En Flokzu los eventos pueden ser de dos tipos:

Guardar
Tarea completada

Las acciones dependerán de tu sistema externo y deberás configurar la URL para ejecutarla.

Webhook de tipo guardar
Un webhook configurado para el evento guardar será ejecutado al momento de que se realice alguna de las siguientes acciones:

Crear una nueva instancia (ya sea ejecutada por un usuario logueado o desde un formulario público),
Al ejecutarse el auto guardado y el guardado explícito siempre que se hayan realizado cambios en el formulario.

WebHook de tipo tarea completada
Un webhook configurado para el evento tarea completada será ejecutado al momento de completar una tarea.

¿Cuándo NO se ejecuta un webhook? No se ejecutarán webhooks en caso de instancias creadas o actualizadas mediante la API de Flokzu, ni en tareas completadas por temporizador, ni por evento condicional.

Configurar webhooks

Los webhooks podrán ser habilitados y configurados para cada proceso. Para ello dirígete a la pestaña Configuración del proceso en cuestión y en la sección Webhooks podrás habilitarlo.

Webhooks en configuracion de proceso

Allí podrás configurar las URLs que serán invocadas al ocurrir los diferentes tipo de eventos así como generar un token para agregar seguridad.

Formato general del mensaje enviado a los webhooks.

json
{
"Timestamp": "Fecha de realizado el evento en formato UTC",
"Type": "save o task_complete",
"Payload": "JSON de acuerdo al evento"
}


Formato del mensaje para un webhook de tipo guardar

En la propiedad Payload del json se enviará el documento completo que fue modificado.

El formato será el siguiente:

json
{
"tenantName": "nombre del tenant",
"reference": "referencia del doc",
"documentCreator": "creador del doc",
"dateCreated": "fecha creacion del documento",
"info": " resumen del documento",
"tags": ["tags del documento separados por coma"],
"downloadKey": "id documento",
"fields": [
{"campo 1": "valor 1"},
{"campo 2": "valor 2"}
]
}


El json contiene el nombre del tenant al que pertenece el documento, su referencia, el creador del mismo y la fecha en que fue creado en formato ISO 8601.
También se encontraran el de los campos especiales resumen (en la propiedad info ) y tags (en la propiedad tags), asi como el ID de documento (propiedad downloadKey).

En la propiedad fields estarán todos los campos definidos por el usuario y los valores de estos se verán de la siguiente manera:

- Email, texto una línea, texto multilínea, link, entero, decimal, auto-calculado, fecha y hora: muestran el valor tal cual el documento.
- Combo y radio button: muestran el valor de la opción seleccionada
- Combo multiselección y checklist: muestran un array con las opciones seleccionadas con las comillas escapadas
- Tabla: muestra un json con el nombre de la columna y su respectivo valor
- Adjunto: muestra información del mismo, nombre, attachment id, fecha de creación y más.
- Si/No: muestran true si la opción seleccionada es SI, en otro caso muestra false
- Rich text: muestra el contenido del campo con los tags que corresponda para generar el mismo contenido que se ve en el documento en Flokzu.
- Firma: la firma no es compatible, no tomar en cuenta

Ejemplo:

A continuación se muestra el ejemplo del json enviado para un formulario con los siguientes campos y valores:

Nombre del campo | Tipo de dato | Valor |
Email | email | nombre@mail.com |
Nombre | Texto una línea | Juan Pérez |
Descripción | Texto multi línea | Solicitud de insumos de papelería para oficinas|
Cantidad de artículos | Número entero | 2 |
Monto total | Número decimal | 3505.5 |
Fecha | Fecha | 06/08/2019 |
Hora | Hora | 15:30:00 |
Ciudad| Combo de opciones | Madrid |
Forma de pago | Radio Button | Contado |
Proveedores | Combo Multiselección | Bolimax, Rollerpen, TodoUSB |
Categorías | Checklist | Papelería, Informática |
Pedido | Tabla |Producto: Bolígrafo, Cantidad:150, Precio:750; Producto: Pendrive, Cantidad:11, Precio:2755.5|
Detalle del pedido | Archivo adjunto | |
Cuenta activa | Si/No | Si |
Web | Link | www.flokzu.com |
Cantidad de ítems | Autocalculado | 3 |
Observaciones | Texto Rico | Realizar envío a Calle 1234 de 08 a 18 hs.|

json enviado:

json
{
"tenantName": "Flokzu",
"reference": "PED-14",
"documentCreator": "leandro@flokzu.com",
"dateCreated": "2019-08-06T17:17:10.223Z",
"info": "",
"tags": [""],
"downloadKey": "b45602d6467856c5b2a45973c49a99e2",
"fields": [
{"Email": "nombre@gmail.com"},
{"Nombre": "Juan Pérez"},
{"Descripción": "Solicitud de insumos de papelería para oficinas"},
{"Cantidad de artículos": "2"},
{"Monto total": "3505.5"},
{"Fecha": "06/08/2019"},
{"Hora": "15:30:00"},
{"Departamento": "Madrid"},
{"Forma de pago": "Contado"},
{"Proveedores": "[\"Bolimax\",\"Rollerpen\",\"TodoUSB\"]"},
{"Categoría": "[\"Papelería\",\"Informática\"]"},
{"Pedido": [
{"Producto": "Bolígrafo",
"Cantidad": "150"
"Precio": "750"},
{"Producto": "Pendrive",
"Cantidad": "11"
"Precio": "2755.5"}
]},
{"Detalle del pedido": {
"attachmentId": "badbf0e134604c54907ac960a5f862c9",
"name": "detalle.pdf",
"mimeType": 50,
"superType": 0,
"creationTime": "2019-08-06T17:16:08.479Z",
"size": 47939,
"lastEditedUtc": "",
"url": ""
}},
{"Cuenta activa": "true"},
{"Web": "www.flokzu.com"},
{"Cantidad de items": "161"},
{"Observaciones": "<p style=\"text-align: center;\"><strong>Observaciones:</strong></p>\r\n<p style=\"text-align: center;\">&nbsp;</p>\r\n<p style=\"text-align: left;\">Realizar envío a Calle 1234 de 08 a 18 hs..</p>"}
]
}


Formato del mensaje para un webHook de tipo tarea completada

En la propiedad Payload del json se enviará la tarea y el usuario que la realizó.
A su vez se informará que acción fue llevada a cabo para completar la tarea y la fecha/hora correspondiente.
También se tendrá la información de la fecha en que fue creada la tarea (formato UTC).
El formato será el siguiente:

json
{
"task_name": "nombre de la tarea completada",
"last_participant": "usuario que completó la tarea",
"last_action": "decisión tomada para que la tarea se complete",
"reference": "referencia del doc",
"start_date": "fecha en que se creó la tarea",
"end_date": "fecha en que se completó la tarea"
}


La versión actual no prevee una política de reintentos. Para garantizar la integridad de los datos en tu implementación debes controlar que una llamada anterior en el tiempo no sobre-escriba un dato posterior de la misma instancia, controlando el timestamp del evento.
¿Este artículo te resultó útil?
Cancelar
¡Gracias!