Reglas de automatización
Esta guía muestra cómo crear, administrar y diagnosticar reglas de automatización. Para consultar el modelo conceptual (desencadenantes, condiciones, acciones), consulte Visión general.Creando una regla
- Vaya a
Settings → Automation. - Haga clic en Nueva regla.
- Asígnele un nombre descriptivo (por ejemplo, “Asignar prospectos WhatsApp al equipo comercial”).
- Elija un activador de la lista.
- (Opcional) Agregue condiciones para filtrar cuándo debe activarse la regla.
- Agregue una o más acciones.
- Active la regla.
Consejos para nombrar
- Comienza con el verbo de la acción principal (
Assign...,Move...,Tag...). - Incluir contexto (canal, equipo, escenario) para que otros operadores entiendan sin abrir los detalles.
- Evite nombres genéricos como “Regla 1” o “Auto”: acumulará docenas y necesitará encontrarlos mediante una búsqueda.
Condiciones y plantillas de mensajes
Las condiciones utilizan el sistema variable de plantilla cuando necesitas comparaciones dinámicas. A partir dev1.0.0-rc3 (WTO-1146), las variables obtuvieron campos adicionales:
label,source,example,position,component
label.title resuelto en lugar del UUID sin formato.
attribute_changed Operador con Desde/Hasta
Cuando desee que la regla se active solo en una transición de atributo específica (por ejemplo, “el estado cambió de pending a qualified”), utilice el operador attribute_changed con selectores de valores explícitos antes y después.
Acciones con carga útil dinámica
send_template
Le permite enviar una plantilla de mensaje con variables completadas dinámicamente. El sistema aplica deep_stringify_keys a la carga útil para que la llamada funcione independientemente de la forma de la clave (cadena o símbolo).
send_canned_response
Acceso directo para enviar una respuesta predeterminada almacenada en Settings → Canned Responses. La carga útil acepta variables sustituidas por datos de conversación.
move_to_pipeline (rc3)
Mueve el elemento de la canalización a una canalización diferente conservando el id del elemento. Útil para reglas como “si se agregó la etiqueta qualified en el canal de Clientes potenciales, pase al canal de Ventas”.
La acción omite automáticamente la validaciónsame-pipeline. No confundir conmove_to_stage, que se mueve dentro del mismo oleoducto.
apply_label
A partir de v1.0.0-rc3, la acción muestra un selector de etiquetas en lugar de entrada de texto libre. Los UUID se resuelven en títulos antes de etiquetarlos, con un respaldo en caso de que se haya cambiado el nombre de la etiqueta.
Panel de registros (rc3)
Cada ejecución de regla ahora genera un registro en el panelAutomation → Logs. Ya ves:
- Cuando se activó la regla.
- Qué conversación/elemento lo desencadenó.
- Condiciones evaluadas: cuáles aprobaron y cuáles no.
- Acciones ejecutadas: éxito o error.
- Errores detectados: incluidos errores de macro webhook (que antes eran silenciosos, consulte WTO-1041).
Limpieza automática
Los registros antiguos se eliminan mediante un trabajo de limpieza que se ejecuta periódicamente. No es necesario eliminarlo manualmente.Diagnóstico de reglas que no se activan
Hoja de ruta rápida cuando una regla parece no funcionar:- Compruebe si está activo. Las reglas deshabilitadas no aparecen como errores; simplemente no se ejecutan.
- Confirme el desencadenante.
conversation_updatedcubre varios casos, peroattribute_changedes específico. - Mire el registro de ejecución. En el panel de registros, filtre por regla. Si aparece con “no coincide”, sus condiciones lo están filtrando.
- Condiciones de etiqueta. La condición
labelsutiliza la subconsultaEXISTS(independiente y segura para NULL) y coincide con una etiqueta en conversación O contacto. Si esperaba una coincidencia solo en la conversación, limítela con otra condición. - Dedup. Para
pipeline_stage_updated, hay una ventana de 5 segundos: dos eventos en el mismo(rule, pipeline_item, stage)en una ventana corta se ejecutan solo una vez.
Prevención de bucles
Cuando una reglamove_to_stage desencadena un evento pipeline_stage_updated que podría activar la misma regla de forma recursiva, el sistema marca la ejecución con Current.executed_by = :stage_automation e ignora las reentradas. Esto evita bucles infinitos por diseño.