Estructura del eventos de asistencia - inData Workflow

Estructura del eventos de asistencia - inData Workflow

Cuando configuras una automatización para Asistencia (por ejemplo “Hora entrada tardía”, “Marcación de asistencia programada”, etc.), el flujo recibe información del evento y, si el evento está asociado a un registro concreto (reporte de horas o novedad), todos los datos de esa marcación o novedad. En este artículo se explica qué información llega para que puedas usarla en el diseño del flujo sin necesidad de conocer detalles técnicos.


Visión general

El flujo recibe un único objeto llamado my_info, con esta estructura:

{
"my_info": {
"meta": { ... },
"data": {
"subject": { ... },
"novelty": { ... }
}
}
}
  • meta: Metadatos del evento: identificador único del evento, fecha y hora, cuenta, módulo, acción, identificador del puesto cuando el evento está asociado a un puesto concreto (entity_id), e identificador del flujo.
  • data.subject: Tipo de registro (en asistencia será "novelty") e identificadores: record_id es el ID de la novedad o del reporte de horas cuando el evento está asociado a un registro concreto.
  • data.novelty: Datos de la marcación o novedad: empleado, puesto, cliente, sede, zona, horarios, resumen del día, estado del puesto, detalle de la marcación y, si aplica, análisis de fraude. Solo se rellena cuando el evento está asociado a un reporte de horas o a una novedad concreta; si no, data.novelty se envía con muchos campos en null.

Estructura general (qué verás en el diseñador)

En el diseñador del flujo verás esta misma jerarquía: el objeto principal my_info, dentro de él meta y data, y dentro de data los bloques subject y novelty. Los mismos nombres de campo que se listan abajo son los que usarás al conectar los datos entrantes en un paso del flujo.


Cuándo llegan los datos completos

Si la automatización se dispara a partir de un reporte de horas o de una novedad concreta (por ejemplo porque en la regla indicaste un puesto o porque el evento viene asociado a ese registro), data.novelty vendrá rellenado con la información de ese registro (empleado, puesto, sede, horarios, resumen del día, estado del puesto, detalle de la marcación, etc.). Si no, data.novelty tendrá solo los datos básicos del evento y el resto de campos en null.

Todas las fechas y horas que recibe el flujo están en la zona horaria configurada para tu cuenta en inData.


Contenido de meta

En todos los casos meta incluye:

  • event_id: identificador único de esta ejecución del evento (para trazabilidad).
  • occurred_at: fecha y hora del evento (en la zona horaria de la cuenta; si la aplicación no la envía, se usa la hora de la novedad o marcación).
  • id_account: identificador de tu cuenta (tenant).
  • module: módulo que disparó la automatización (asistencia).
  • action: acción concreta (por ejemplo hora_entrada_tardia, marcacion_asistencia_programada, etc.).
  • entity_id: identificador del puesto cuando el evento está asociado a un puesto concreto; si no, puede ser null.
  • flow_id: identificador del flujo que se está ejecutando.

Contenido de data.subject

data.subject incluye:

  • type: tipo de registro; para asistencia será "novelty".
  • form_id: identificador del formulario si aplica (opcional).
  • local_id: identificador local del registro si aplica (opcional).
  • record_id: identificador de la novedad (id_account_novelty) o del reporte de horas (id_check_in_check_out) cuando el evento está asociado a un registro concreto.

Contenido de data.novelty

Cuando el evento está asociado a un reporte de horas o a una novedad, data.novelty contiene la información de ese registro. Los campos que no existan o no apliquen pueden llegar vacíos o nulos. Puedes usar estos nombres exactos en el diseñador del flujo.

Sobre la novedad o el evento

  • id_account_novelty: identificador de la novedad (cuando el registro es una novedad).
  • novelty_datetime: fecha y hora de la novedad o de la marcación (zona de la cuenta).
  • novelty_type / novelty_name: tipo y nombre de la novedad en texto legible (por ejemplo "Hora entrada tardía", "Marcación de asistencia programada").
  • novelty_description: descripción de la novedad (si existe).
  • novelty_alert_at: fecha/hora de alerta si aplica.
  • id_account_novelty_status: identificador del estado de la novedad.
  • novelty_status_name: nombre del estado (por ejemplo Verificado).
  • novelty_status_color: color del estado (si existe).
  • novelty_status_is_closed: si el estado se considera cerrado.
  • novelty_data_jornada_tipo: nombre de la jornada (por ejemplo Diurna).
  • novelty_data_jornada_horario: horario de la jornada (por ejemplo 08:00 - 17:00).
  • novelty_data_programacion_status: estado de la programación (por ejemplo Verificado).
  • novelty_data_marcacion_datetime: fecha y hora de la marcación asociada.

Empleado involucrado

  • id_account_customer_employee: identificador del empleado.
  • employee_first_name: nombre del empleado.
  • employee_last_name: apellido del empleado.
  • employee_code: código del empleado.
  • employee_phone: teléfono (si está registrado).
  • employee_identification: número de identificación del empleado.

Puesto y ubicación

  • id_sitio_operativo_puesto: identificador del puesto (sitio operativo).
  • puesto_name: nombre del puesto (el que ves en inData).
  • puesto_code: código del puesto (cuando existe).
  • id_account_customer_point: identificador de la sede (punto).
  • customer_point_name: nombre de la sede.
  • customer_point_address: dirección de la sede.
  • id_account_customer: identificador del cliente.
  • customer_name: nombre del cliente.
  • customer_code: código del cliente.
  • customer_business_name: razón social.
  • customer_alias: alias del cliente.
  • customer_identification: identificación del cliente (NIT o documento).

Zona geográfica

  • id_account_geo_city: identificador de la ciudad.
  • geo_city_name: nombre de la ciudad.
  • geo_city_code: código de la ciudad (si existe).
  • id_account_geo_state: identificador del estado o departamento.
  • geo_state_name: nombre del estado o departamento.
  • geo_state_code: código (si existe).
  • id_account_geo_country: identificador del país.
  • geo_country_name: nombre del país.
  • id_account_geo_zone: identificador de la zona.
  • geo_zone_name: nombre de la zona.
  • geo_zone_code: código de la zona (si existe).

Otras novedades del mismo día

  • related_novelties: lista de otras novedades del mismo empleado o del mismo puesto ese mismo día. Cada elemento puede incluir id_account_noveltynovelty_datetimenamedescriptiontypeid_account_customer_employeeid_sitio_operativo_puestoid_account_customer_point.

Resumen del día (reporte de horas)

  • check_in_check_out: objeto con el resumen del día de esa marcación. Campos útiles: id_check_in_check_outdateid_account_customer_employeeemployee_codeemployee_first_nameemployee_last_nameemployee_identificationid_account_customer_pointaccount_customer_point_nameid_sitio_operativo_puestositio_operativo_puesto_nameid_turno_jornadaturno_jornada_nameturno_jornada_start_timeturno_jornada_end_timecheck_in_timecheck_in_real_timecheck_out_timecheck_out_real_timetime_workedtime_not_workedprogramacion_has_employee_status_checkedis_absenteeismis_manual. Todo en la zona horaria de la cuenta.

Estado del puesto ese día

  • workstation_check: lista de objetos con el estado del puesto en esa fecha. Cada elemento puede incluir id_sitio_operativo_puestocupocount_programacionemployees_programadospendienteverificadovencidoestado_puestofechaid_turno_jornadaid_programacion, y id_programacion_has_employee (lista de empleados programados). Por cada empleado en id_programacion_has_employee pueden llegar, cuando existan: id_account_customer_employeeemployee_codefirst_namelast_nameidentificationjob_title_namejob_title_codemobilephonephone_altpersonal_addressgeo_city_namefecha_nacimientogenerotipo_sangrerhentry_dateextra1 a extra4, y emergency_contacts (lista con name y phone).

Detalle de la marcación (entrada o salida)

  • check_in: objeto con el detalle de la marcación que disparó el evento:
    • employee_check_in_out: tipo de marcación (IN/OUT), typedatetimeid_account_customer_employeeid_sitio_operativo_puestogeolocationcoords_deltacheat_locationdevice_infoid_account.
    • account_customer_check_in: datos de verificación: id_account_customer_check_inlocal_idcheck_in_photolatitudelongitudedate_createdverification_sourceverification_typeis_proof_lifeis_marked_fraud.

Análisis de fraude (cuando existe)

  • check_in_fraud_analysis: si existe un análisis de fraude asociado a esa marcación, este objeto puede incluir idid_account_customer_check_inid_accountid_account_customer_employeestatusscore_fraudeconfidenceumbral_usadoscore_avanzadoindicadores_activosstatus_validadofecha_validacionrazonesmetricasdate_createddate_updated. Así puedes automatizar acciones en función del resultado del análisis.

Resumen rápido

  • Estructura: un objeto my_info con meta (información del evento) y data (con subject y novelty). Esta es la misma jerarquía que verás al configurar el flujo; usa los nombres de campo indicados arriba.
  • Evento con reporte de horas o novedad concreta: data.novelty viene rellenado con empleado, puesto, cliente, sede, zona, horarios, check_in_check_outworkstation_checkcheck_in y, si aplica, check_in_fraud_analysis.
  • Evento sin registro concreto: data.novelty tendrá muchos campos en null; solo tendrás meta y data.subject con información básica.
  • Fechas y horas: siempre en la zona horaria de tu cuenta.
  • Los campos que no existan en tu configuración (por ejemplo contacto de emergencia, tipo de sangre) pueden llegar vacíos o nulos.
    • Related Articles

    • Estructura del eventos de asignaciones - inData Workflow

      Cuando configuras una automatización para Asignaciones (por ejemplo “Al realizar una asignación” o “Al vencimiento de una asignación”), el flujo recibe un conjunto de datos con una estructura fija. Conocer esa estructura te ayuda a configurar los ...
    • Estructura del eventos de registros de formulario - inData Workflow

      Cuando configuras una automatización para Formularios con la acción "Al crear un registro", el flujo se ejecuta cada vez que se crea un nuevo registro (solución) de un formulario —desde la app móvil o desde la web—. En este artículo se explica qué ...
    • Estructura del eventos de rondas internas - inData Workflow

      Cuando configuras una automatización para Rondas Interna (por ejemplo "Al marcar un punto", "Al marcar un punto con fraude de umbral", "Al completar una ronda", "Al vencimiento de una ronda", etc.), el flujo recibe datos de la ronda y, según el tipo ...
    • Cómo usar el Simulador de eventos de workflow

      ¿Para qué sirve el simulador? El simulador sirve para probar un flujo como si hubiera ocurrido un evento real (un registro nuevo de formulario, una marcación de asistencia, una asignación realizada, un punto de ronda marcado, etc.), pero sin que ese ...
    • Ejemplo de automatización para confirmar asistencia

      En este ejemplo se presenta un flujo de referencia para la confirmación de asistencia en puesto del personal operativo. El objetivo es mostrar el funcionamiento de los nodos de inData Workflow aplicados a: Envío de mensajes por WhatsApp Envío de ...