Comprensión y prueba de notificaciones programadas
  • 09 Feb 2024
  • 8 Minutos para leer

Comprensión y prueba de notificaciones programadas


Article Summary

Cómo funcionan las notificaciones programadas

Al configurar una notificación, debe configurar el programa, lo que significa cuándo se enviará la notificación. Siempre podrás seleccionar la opción On event , y según el tipo de evento de activación, también podrás seleccionar Before y/o After . La mayoría de las notificaciones de eventos On se procesan en el sistema de notificaciones tan pronto como ocurre el evento, y en realidad se enviarán en la próxima ejecución cron por la \totara_notification\task\process_event_queue_task scheduled task. Los usuarios deben recibirlos en un minuto aproximadamente después de que ocurra el evento, suponiendo que cron se ejecuta cada minuto y la tarea se ejecuta en el programa predeterminado (cada minuto). Algunas notificaciones de eventos On y todas las notificaciones programadas Antes y Después se procesan de manera diferente.

Las notificaciones programadas son procesadas por la tarea programada \totara_notification\task\process_scheduled_event_task. Esta tarea calcula el período desde la última vez que se ejecutó, aplica los correctores de las notificaciones programadas y pide a cada notificación que calcule todos los eventos que ocurrieron durante estos períodos de compensación.

La última fecha/hora en que se procesaron las notificaciones programadas se registra en la config_plugins variable totara_notification/last_scheduled_event_task_run_time. No se calcula en función del tiempo de última ejecución de la tarea programada que se ve al configurar las tareas programadas, aunque es probable que sea similar, siempre que la tarea y la configuración se dejen en funcionamiento normal. Ten en cuenta que cambiar manualmente este tiempo en la base de datos daría como resultado que se envíen notificaciones duplicadas (si se movió hacia atrás) o que las notificaciones nunca se envíen (si se avanza), por lo que esto no debe cambiarse en un sitio de producción.

Por ejemplo, tomemos una notificación que está programada para enviarse tres días antes de que ocurra un evento, como una fecha límite. La tarea programada está configurada para ejecutarse una vez al día de forma predeterminada, a las 11 p. m. Cuando se ejecuta a las 11 p. m., para la notificación dada, el período que calcula será de 'última ejecución cron + 3 días' a 'ahora + 3 días'. Se le pedirá al sistema de resolución de notificaciones (la pieza de código que define cómo funciona una notificación individual, qué datos están involucrados, etc.) que encuentre todos los eventos que ocurren durante este período. Para que se envíe una notificación, la fecha del evento debe estar dentro de este período.

Si la tarea se ejecuta con más frecuencia, el período de búsqueda será menor, pero durante todo un día se procesarán dos veces los eventos de un día entero y nunca se procesará el mismo evento. Por ejemplo, si se configuró para ejecutarse cada hora, cada hora encontraría todas las notificaciones programadas para ser enviadas dentro del período de una hora anterior. Por lo tanto, es posible modificar el programa de tareas, pero tiene el costo de tener que repetir la búsqueda de notificaciones que se enviarán con mayor frecuencia. Dependiendo del sitio, esto podría requerir mucho procesamiento, por lo que el valor por defecto se establece para ejecutarse solo una vez al día.

En el mismo escenario anterior, digamos que si estuviera configurado para ejecutarse cada minuto, a las 3:45 p. m. buscaría (y enviaría notificaciones para) todos los eventos que se produzcan entre las 3:44 p. m. y las 3:45 p. m. en tres días. Para observar que la notificación sale, la fecha límite tendría que estar exactamente dentro de ese minuto ese día. Al probar, si ejecutas la tarea programada manualmente, debes tener en cuenta que solo se enviarán notificaciones programadas para ser enviadas con precisión en el período desde que se ejecutó la tarea por última vez. Al configurar el evento que debería activar una notificación, el usuario a menudo no tiene control sobre el minuto exacto del evento, por lo que es poco probable que el evento deba enviarse exactamente dentro del período calculado. Esto suele ser la causa de confusión al intentar forzar el envío de notificaciones programadas en un servidor de prueba.

En Totara 16 e inferiores, cuando se ejecuta la tarea, toma todos los eventos que ocurren en el período dado y los agrega a la cola de notificaciones. Cuando la \totara_notification\tarea\process_notification_queue_task siguiente se ejecute, que por defecto es cada ejecución cron, se recogerán las notificaciones en cola y se enviarán inmediatamente. En Totara 17 y superiores, cuando se ejecuta la tarea, se necesitan todos los eventos que ocurren en el período dado y los procesa inmediatamente, enviando las notificaciones de inmediato. Se ha omitido la cola intermedia que se produjo en Totara 16 e inferior.

Probando notificaciones programadas

Probar las notificaciones programadas puede ser difícil, principalmente debido a la forma en que la tarea programada elige el período de eventos de notificación para buscar.

En las siguientes instrucciones, al manipular fechas, a veces necesita usar sellos de hora Unix. Utilice Epoch Converter para convertir entre sellos de hora Unix y fechas legibles por humanos. Cada vez que se menciona una “fecha” o una “hora”, esto significa “fecha y hora”; siempre trabajamos con una fecha y hora completas, y si ignoras las horas, los minutos y los segundos de cualquier cálculo, las cosas no funcionarán como se esperaba. 'Fecha actual' significa 'ahora, con horas, minutos y segundos'.

Hemos utilizado la fecha límite del programa como ejemplo aquí; sin embargo, el proceso descrito se puede utilizar para probar la mayoría de las notificaciones programadas. Simplemente adapta los pasos cuando corresponda.

Para probar el envío de una notificación programada, siga estos pasos:

  1. Configura tu notificación con un programa Antes, por ejemplo, “3 días antes”. Ten en cuenta que el medio más confiable de recibir notificaciones para pruebas es enviarlas al canal de entrega de notificaciones del sitio, de modo que la notificación debería aparecer dentro de la ventana emergente de notificaciones del usuario en el sitio. También debes asegurarte de que la notificación tenga algún texto en el asunto que identifique claramente la notificación de la prueba, por ejemplo, “Notificación de la prueba para la fecha límite del programa activada 3 días antes”.
  2. Configurar los datos del evento que deberían dar como resultado el envío de una notificación. En este caso, configuraríamos un usuario en el programa con una fecha límite de asignación establecida en tres días después de hoy.
  3. Encuentra la hora exacta del evento. Dependiendo de la característica que estés usando, puede haber un lugar donde puedas ver exactamente lo que es esta hora. Para los programas, puede utilizar el editor de finalización del programa para encontrar la fecha límite exacta del usuario. De lo contrario, es posible que necesites buscar esta fecha en la base de datos.
  4. Dada la fecha del evento, aplique la compensación de notificación a la fecha. Si tu programa es Antes , restas el offset. Por ejemplo, 3 días antes significa que restas 3 * 24 * 60 * 60 segundos. Si es un evento activado, no lo cambies. Si es Después , agrégalo. Llamaremos a esta fecha calculada la “fecha de envío de la notificación”.
  5. Compruebe el valor totara_notification/last_scheduled_event_task_run_time en la config_plugins tabla de la base de datos. ¡No cambies este valor en un sitio en vivo! Llamaremos a esta fecha el “último tiempo de ejecución”.
  6. Compara el último tiempo de ejecución con la fecha de envío de la notificación que calculaste:
    1. Si la fecha de envío de la notificación es anterior a la última hora de ejecución, la notificación no se enviará, porque la fecha del evento es demasiado temprana.
    2. Si la fecha de envío de la notificación es posterior a la fecha actual (en este momento), tendrás que esperar hasta que se alcance la fecha de envío.
    3. Si la fecha de envío de la notificación es posterior a la última hora de ejecución y anterior a la fecha actual, está lista para ser enviada. Omitir el siguiente paso.
  7. Si la fecha de envío de la notificación no está entre la última hora de ejecución y la fecha actual, la notificación no se enviará hasta que esta situación cambie. Hay algunas opciones posibles aquí:
    1. Si la fecha de envío es en el futuro, simplemente puedes esperar hasta que se alcance ese tiempo.
    2. Si la fecha de envío es en el futuro, podrías cambiar la fecha del evento. En nuestro ejemplo, podrías configurar la fecha límite del programa para que sea una fecha anterior usando el editor de finalización del programa, o podrías cambiar la fecha del evento en la base de datos.
    3. Si la fecha de envío es en el futuro, puedes ajustar el programa de notificaciones. En nuestro ejemplo, podrías reducirlo a “2 días antes”.
    4. Si la fecha de envío es anterior al último tiempo de ejecución, podrías cambiar la fecha del evento. En nuestro ejemplo, podrías configurar la fecha límite del programa para que sea más tarde usando el editor de finalización del programa, o podrías cambiar la fecha del evento en la base de datos.
    5. Si la fecha de envío es anterior al último tiempo de ejecución, puedes ajustar el programa de notificación. En nuestro ejemplo, podrías aumentarlo a “4 días antes”.
    6. Si la fecha de envío es anterior al último tiempo de ejecución, entonces podría ajustar el valor totara_notification/last_scheduled_event_task_run_time en la config_plugins tabla de la base de datos para que sea anterior a la fecha de envío de la notificación.
      No haga esto en un sitio de producción.
  8. Espera o ejecuta la \totara_notification\tarea\process_scheduled_event_task tarea programada. Por defecto, se ejecuta una vez al día, pero se puede ejecutar de forma segura en cualquier momento, siempre que no cause sobrecarga del servidor si se ejecuta en un sitio de producción. No se recomienda cambiar el programa de la tarea para que se ejecute cada minuto, ya que puede tomar más de un minuto procesar todos los registros, pero debería estar bien ejecutarlo de forma única para la prueba.
  9. Si estás en Totara 16 o menos, también necesitas esperar o ejecutar la tarea programada \totara_notification\task\process_notification_queue_task. Al igual que con la tarea anterior, no debes cambiar el programa para que se ejecute cada minuto para uso general.
  10. La notificación debería haber sido enviada. Revisa los registros salientes o inicia sesión como destinatario para verificar que la notificación se haya enviado y recibido.

Si aún tienes problemas, asegúrate de que puedes activar y recibir con éxito una notificación de evento diferente que no esté activada.

© Copyright 2024 Totara Learning Solutions. All rights reserved.


¿Te ha sido útil este artículo?

Changing your password will log you out immediately. Use the new password to log back in.
First name must have atleast 2 characters. Numbers and special characters are not allowed.
Last name must have atleast 1 characters. Numbers and special characters are not allowed.
Enter a valid email
Enter a valid password
Your profile has been successfully updated.