Saltar al contenido principal
Estás viendo la documentación para desarrolladores
Esta documentación es para desarrolladores que trabajan con la plataforma para desarrolladores de Base44. Para información sobre automatizaciones en el editor de apps, consulta Crear automatizaciones para tu app.
Las automatizaciones permiten que las funciones de backend se ejecuten automáticamente según un calendario, en respuesta a eventos de la base de datos o cuando una integración conectada envía un evento webhook. Usa automatizaciones para procesar datos a intervalos regulares, gestionar cambios en entidades, reaccionar a eventos de servicios externos o ejecutar tareas únicas en momentos específicos. Cada función de backend puede tener varias automatizaciones asociadas, configuradas en el archivo function.jsonc de la función. Si solo tienes un archivo entry.ts o entry.js, deberás añadir este archivo de configuración para usar automatizaciones. Las automatizaciones se despliegan atómicamente con el código de la función cuando ejecutas deploy o functions deploy.

Tipos de automatización

Base44 admite 4 tipos de automatizaciones:

Campos comunes

Campos comunes para todas las automatizaciones

Todos los tipos de automatización comparten los siguientes campos:
CampoTipoObligatorioDescripción
typestringEl tipo de automatización. Valores posibles: "scheduled", "entity" o "connector".
namestringIdentificador único de la automatización.
descriptionstringNoDescripción legible para humanos.
function_argsobjectNoArgumentos que se pasan a la función cuando se activa. Consulta Argumentos de función.
is_activebooleanNoSi la automatización está habilitada. Por defecto es true.

Campos comunes para automatizaciones programadas

Tanto las automatizaciones programadas con cron como las simples comparten estos campos adicionales:
CampoTipoObligatorioDescripción
schedule_modestringSi el horario se repite. Valores posibles: "recurring" o "one-time".
schedule_typestringMétodo de programación a usar. Valores posibles: "cron" o "simple".
ends_typestringNoCuándo debe detenerse el horario recurrente. Valores posibles: "never", "on" o "after". Por defecto es "never".
ends_on_datestringCondicionalFecha en la que termina el horario recurrente, inclusive, en UTC. Obligatorio cuando ends_type es "on". Formato: YYYY-MM-DDTHH:MM:SSZ. Por ejemplo, "2026-12-31T23:59:59Z".
ends_after_countnumberCondicionalNúmero de ejecuciones después de las cuales se detiene el horario recurrente. Obligatorio cuando ends_type es "after".

Configuración de automatizaciones

Configura las automatizaciones en tu archivo function.jsonc usando uno de los siguientes enfoques. Todas las automatizaciones usan los campos comunes para todas las automatizaciones listados arriba, además de los campos específicos de cada tipo.

Cron

Usa los campos comunes para todas las automatizaciones y los campos comunes para automatizaciones programadas junto con los campos específicos de cron listados aquí. Establece type en "scheduled" y schedule_type en "cron" para usar expresiones cron y obtener un control preciso de la programación. Las automatizaciones cron usan la sintaxis estándar de 5 campos: minute hour day-of-month month day-of-week. Consulta crontab.guru para un editor interactivo de expresiones cron y referencia de sintaxis.
CampoTipoObligatorioDescripción
cron_expressionstringExpresión cron de 5 campos.

Ejemplo de cron

Este ejemplo ejecuta una función todos los días a medianoche UTC:
{
  "name": "sendDailyReport",
  "entry": "entry.ts",
  "automations": [
    {
      "type": "scheduled",
      "name": "daily_midnight_report",
      "description": "Runs every day at midnight UTC",
      "function_args": { "mode": "full_sync" },
      "is_active": true,

      "schedule_mode": "recurring",
      "schedule_type": "cron",
      "cron_expression": "0 0 * * ?"
    }
  ]
}

Horario simple

Usa los campos comunes para todas las automatizaciones y los campos comunes para automatizaciones programadas junto con los campos de horario simple listados aquí. Establece type en "scheduled" y schedule_type en "simple" para necesidades de programación sencillas. Configura tareas recurrentes por intervalo, como minutos, horas, días, semanas o meses, sin escribir expresiones cron.
CampoTipoObligatorioDescripción
one_time_datestringCondicionalFecha y hora en que la automatización se ejecuta una vez, en UTC. Obligatorio cuando schedule_mode es "one-time". Formato: YYYY-MM-DDTHH:MM:SSZ. Por ejemplo, "2026-02-15T10:00:00Z".
repeat_unitstringCondicionalUnidad de tiempo para automatizaciones recurrentes. Obligatorio cuando schedule_mode es "recurring". Valores posibles: "minutes", "hours", "days", "weeks" o "months".
repeat_intervalnumberCondicionalIntervalo entre ejecuciones. Obligatorio cuando repeat_unit es "minutes", "hours" o "days".
start_timestringCondicionalHora del día en que se ejecuta la automatización, en UTC. Obligatorio cuando repeat_unit es "days", "weeks" o "months". Formato: HH:MM.
repeat_on_daysnumber[]CondicionalDías de la semana en que se ejecuta la automatización. Obligatorio cuando repeat_unit es "weeks". Array de números de día de la semana, donde 0 es domingo y 6 es sábado.
repeat_on_day_of_monthnumberCondicionalDía del mes en que se ejecuta la automatización. Obligatorio cuando repeat_unit es "months". Valores válidos: 1-31.

Ejemplos de horario simple

Los siguientes ejemplos muestran distintas formas de programar automatizaciones con horarios simples:
{
  "type": "scheduled",
  "name": "every_30_minutes",
  "description": "Runs every 30 minutes.",
  "is_active": true,

  "schedule_mode": "recurring",
  "schedule_type": "simple",
  "repeat_unit": "minutes",
  "repeat_interval": 30
}

Eventos de entidad

Usa los campos comunes para todas las automatizaciones junto con los campos de eventos de entidad listados aquí. Establece type en "entity" para activar funciones automáticamente cuando se crean, actualizan o eliminan registros de la base de datos. Las automatizaciones de entidad pueden escuchar uno o más tipos de evento en una entidad específica.
CampoTipoObligatorioDescripción
entity_namestringNombre de la entidad a monitorizar.
event_typesstring[]Eventos de la base de datos a los que escuchar. Valores posibles: "create", "update", "delete". Al menos uno requerido.

Ejemplos de eventos de entidad

Los siguientes ejemplos muestran cómo activar funciones según eventos de entidad:
{
  "name": "processOrders",
  "entry": "entry.ts",
  "automations": [
    {
      "type": "entity",
      "name": "on_order_changes",
      "description": "Triggered on order create, update, or delete.",
      "function_args": { "notify_slack": true },
      "is_active": true,

      "entity_name": "orders",
      "event_types": ["create", "update", "delete"]
    }
  ]
}

Automatizaciones de conectores

Usa los campos comunes para todas las automatizaciones junto con los campos específicos de conectores listados aquí. Establece type en "connector" para activar funciones cuando una integración conectada envía un evento webhook. Úsalas para reaccionar a la actividad de servicios externos en tiempo real. Por ejemplo, puedes analizar un nuevo email, sincronizar un cambio de calendario o responder a una actualización de archivo en Google Drive. Opcionalmente puedes añadir condiciones de activación para filtrar eventos de modo que tu función solo se ejecute cuando el payload cumpla las reglas que definas. Cuando se activa una automatización de conector, tu función recibe un payload de webhook estructurado que contiene el tipo de evento, los detalles de la integración y los datos sin procesar del servicio externo.
El conector debe estar configurado en tu proyecto y autorizado antes del despliegue. Consulta Conectores compartidos para instrucciones de configuración.
CampoTipoObligatorioDescripción
integration_typestringEl identificador del tipo de conector al que escuchar. Consulta integraciones compatibles para los valores aceptados.
eventsstring[]Uno o más nombres de evento webhook a los que suscribirse. Consulta integraciones compatibles para los eventos disponibles por conector.
resource_idstringCondicionalLimita el alcance de la automatización a un recurso específico. El formato esperado depende del conector. Consulta Formatos de resource ID más abajo. Obligatorio para los eventos a nivel de archivo de Google Drive. Opcional para otros conectores.
trigger_conditionsobjectNoReglas que deben coincidir con el evento entrante antes de que se ejecute tu función. Si el evento no coincide, la ejecución se omite. Consulta Condiciones de activación para la referencia completa.

Integraciones y eventos compatibles

Conectorintegration_typeValor de eventsDescripción
GmailgmailmailboxCualquier cambio en el buzón, incluidos los nuevos mensajes, actualizaciones de etiquetas y cambios en el estado de lectura.
Google CalendargooglecalendareventsCualquier cambio en un evento del calendario, incluidos los creados, actualizados y eliminados.
Google DrivegoogledrivechangesCualquier cambio en el drive, incluidos los archivos añadidos, modificados o eliminados.
Google DrivegoogledrivefileCualquier cambio en un archivo específico (requiere resource_id).
Google Drivegoogledrivefile.updateEl contenido o las propiedades del archivo han cambiado (requiere resource_id).
Google Drivegoogledrivefile.trashArchivo movido a la papelera (requiere resource_id).
Google Drivegoogledrivefile.untrashArchivo restaurado de la papelera (requiere resource_id).
Google Drivegoogledrivefile.deleteArchivo eliminado permanentemente (requiere resource_id).
Microsoft OneDriveone_driveupdatedCualquier cambio en un archivo o carpeta, incluidos los creados, modificados y eliminados.
Microsoft OutlookoutlookcreatedSe crea un nuevo email, evento de calendario o contacto.
Microsoft OutlookoutlookupdatedSe actualiza un email, evento de calendario o contacto.
Microsoft OutlookoutlookdeletedSe elimina un email, evento de calendario o contacto.
Microsoft SharePointshare_pointupdatedCuando se crea, modifica o elimina un elemento de lista o documento.
Microsoft Teamsmicrosoft_teamscreatedCuando se publica un nuevo mensaje de chat.
Microsoft Teamsmicrosoft_teamsupdatedCuando se actualiza un mensaje de chat.
Microsoft Teamsmicrosoft_teamsdeletedCuando se elimina un mensaje de chat.
SlackslackmessageCuando se publica un mensaje en un canal.
Slackslackmessage.imCuando se publica un mensaje directo.
Slackslackmessage.groupsCuando se publica un mensaje en un canal privado.
Slackslackmessage.channelsCuando se publica un mensaje en un canal público.
Slackslackmessage.mpimCuando se publica un mensaje en un IM de varios participantes.
Slackslackreaction_addedCuando se añade una reacción a un mensaje.
Slackslackreaction_removedCuando se elimina una reacción de un mensaje.
Slackslackmember_joined_channelCuando un usuario se une a un canal.
Slackslackmember_left_channelCuando un usuario abandona un canal.
Slackslackfile_sharedCuando se comparte un archivo.
El evento mailbox de Gmail se dispara con cualquier cambio en el buzón, no solo con los nuevos mensajes. Para que tu función solo se ejecute cuando lleguen nuevos emails, añade una condición de activación: { "field": "has_new_messages", "operator": "equals", "value": true }.
Las automatizaciones de conectores de Slack requieren condiciones de activación. El despliegue fallará si no se establecen condiciones para las automatizaciones de conectores de Slack.

Formatos de resource ID

El valor esperado para resource_id varía según el conector:
  • Google Drive: El ID del archivo. Obligatorio para eventos a nivel de archivo (file, file.update, file.trash, file.untrash, file.delete).
  • Gmail: Una lista separada por comas de IDs de etiqueta a observar. Por defecto es "INBOX" si se omite.
  • Microsoft Teams: {teamId}/{channelId} para observar un canal específico, o {chatId} para observar un chat específico.
  • SharePoint: {siteId}/{listId} para observar una lista específica.

Condiciones de activación

Usa trigger_conditions para filtrar eventos webhook de modo que tu función solo se ejecute cuando el payload cumpla las reglas que definas. Si no se establecen condiciones, la función se ejecuta para cada evento entrante. Consulta Ejemplos de automatizaciones de conectores para configuraciones completas.
logic
string
Cómo combinar las condiciones. Valores posibles: "and" (todas deben coincidir), "or" (cualquiera debe coincidir). Por defecto es "and".
conditions
array
requerido
Uno o más objetos de condición o grupos de condiciones anidados. Máximo 20 condiciones hoja y 5 niveles de anidación.

Payload del webhook

Cuando una automatización de conector activa tu función, el cuerpo de la solicitud contiene un objeto payload con la siguiente estructura. Consulta Ejemplos de automatizaciones de conectores para una función que lea el payload.
CampoTipoDescripción
payload.automation.idstringID de la automatización que activó esta ejecución.
payload.automation.namestringNombre de la automatización.
payload.automation.typestringSiempre "connector".
payload.event.typestringEl nombre del evento webhook. Por ejemplo, "mailbox", "events" o "changes".
payload.event.integration_typestringEl tipo de conector. Por ejemplo, "gmail" o "googlecalendar".
payload.event.provider_identifierstringEl identificador de cuenta del proveedor usado para el enrutamiento.
payload.dataobjectEl payload sin procesar del webhook del servicio externo. Se establece en null cuando payload_too_large es true.
payload.payload_too_largebooleanEs true cuando el payload del webhook supera ~200 KB y data es null.

Ejemplos de automatizaciones de conectores

// Triggers the function whenever a new email arrives in Gmail.

{
  "name": "processInboundEmails",
  "entry": "entry.ts",
  "automations": [
    {
      "type": "connector",
      "name": "on_new_gmail",
      "description": "Runs when a new email arrives in Gmail.",
      "is_active": true,

      "integration_type": "gmail",
      "events": ["mailbox"]
    }
  ]
}

Argumentos de función

Pasa datos a tu función cuando se active incluyendo el campo function_args en la configuración de tu automatización. Esto es útil cuando una función gestiona varias automatizaciones con comportamientos diferentes, como una función de sincronización que se ejecuta de forma incremental cada 15 minutos pero hace una sincronización completa a diario. Accede a estos argumentos en el código de tu función a través del cuerpo de la solicitud.

Ejemplo de argumentos de función

Este ejemplo muestra una función que gestiona los modos de sincronización incremental y completa según la configuración de la automatización:
Deno.serve(async (req) => {
  const body = await req.json();
  const args = body.args ?? {};

  // Use the arguments from automation config
  const mode = args.mode ?? "incremental";

  // Your function logic
});

Desplegar automatizaciones

Despliega funciones de backend con sus automatizaciones usando el comando del CLI functions deploy o el comando unificado deploy. Puedes desplegar funciones específicas por nombre con functions deploy <names...>. El despliegue es atómico por función. Una función solo se considera desplegada si tanto el despliegue de Deno como todas sus automatizaciones se realizan correctamente. Si alguna automatización falla al desplegarse, se revierte todo el despliegue de la función. Después de desplegar, el CLI muestra el estado por función: deployed, unchanged o error.

Gestionar automatizaciones en el panel

Cualquier cambio realizado en el panel se sobrescribirá la próxima vez que ejecutes functions deploy. No hay sincronización bidireccional entre el panel y tus archivos locales. Las automatizaciones definidas en tus archivos function.jsonc locales son la fuente de verdad.Si quieres realizar cambios en tus automatizaciones, actualiza tus archivos function.jsonc locales y vuelve a desplegar. Usa el panel para monitorizar los logs de ejecución y activar manualmente las automatizaciones cuando sea necesario.
Visualiza y gestiona tus automatizaciones en el panel de Base44 en la pestaña Automations. Desde el panel, puedes:
  • Ver logs e historial de ejecución
  • Ejecutar automatizaciones manualmente para pruebas
  • Monitorizar el estado de las automatizaciones

Ver también

Esta página se tradujo con IA. Para información más precisa y actualizada, consulta la versión en inglés.