Hola a todos!!!
Necesito personalizar el envío de mensajes. Dónde se encuentra el código de ./guarani enviar_emails_notificador?
Gracias.
Hola Ana,
El código del comando está en la clase ‘guarani_modelo’ (<path proyecto Guaraní>/php/extension_toba/guarani_modelo.php). Qué necesitan modificar?
Saludos, Florencia.
Florencia:
Estamos teniendo problemas, porque bajo algunas condiciones, como “consultas a finales” de materias transversales a las Unidades Aacadémicas, estan mandando a TODOS los alumnos, y eso nos satura el servidor de mails.
Voy a ver un poco el código, y tratar de buscar alguna solución viable, porque por el momento tuvimos que suspender la notificación por mail.
Saludos.
ANA
Florencia:
Necesito saber dónde se configura el parámetro de la cantidad de mails a desencolar y cómo vacío la cola existente?
Gracias.
ANA
Ana,
El comando “enviar_emails_notificador” tiene un parámetro “-c” que indica la cantidad de mails a desencolar.
Saludos, Florencia.
Gracias. Y cómo borro esa cola? Porque está mandando mails muy viejos, o es un problema de fecha de vigencia?
Hola Ana, te explico un poco el código del comando enviar_emails_notificador:
function enviar_emails_notificador($parametros)
{
$cantidad_emails_desencolar = 0;
if(isset($parametros['-c'])) $cantidad_emails_desencolar = $parametros['-c'];
if(isset($parametros['--cantidad'])) $cantidad_emails_desencolar = $parametros['--cantidad'];
if(!preg_match('/^[0-9]+$/', $cantidad_emails_desencolar)) {
$this->manejador_interface->mensaje($this->get_mensaje_color("El argumento '-c' o '--cantidad' debe ser un valor entero", 'E'), true);
return false;
}
DJJobSIU::setConnection(toba::db()->get_pdo());
DJJobSIU::setJobsTable(mail_job::jobs_tabla);
$worker = new DJWorkerSIU(array(
'queue' => mail_job::cola_notificador,
"run_forever" => false,
"count" => $cantidad_emails_desencolar
));
$worker->start();
}
DJJobSIU::setConnection(toba::db()->get_pdo()): Le dice al proceso que desencola los emails que use la conexión PDO a la base de datos de Guaraní.
DJJobSIU::setJobsTable(mail_job::jobs_tabla): Le dice que los procesos a desencolar están en la tabla “jobs”.
‘queue’ => mail_job::cola_notificador: Solo desencola procesos del “notificador” (columna “queue” de la tabla “jobs”), ya que también se puede usar para otro tipo de procesos, no solamente emails.
“count” => $cantidad_emails_desencolar: Es la cantidad de emails a desencolar, se la podes pasar con las opciones “–cantidad” o “-c”, si no le pasas esta opción enviara todos los emails encolados.
Ahora bien, la librería DJJob no da la opción de dar un rango de fechas de los emails a enviar para que no envié emails viejos. Lo que podes hacer es ir a la tabla jobs, y basándote en la columna created_at podes borrar emails viejos que ya no queres que se envíen con el comando, o sino pasarlos a otra cola (le cambias el valor de la columna queue a cualquier otra cosa distinta a “notificador”).
saludos.
Muchas Gracias. Pregunto una obviedad, pero el desencolar, borra de la tabla jobs? Porque tengo 53.000 registros.
Hola Ana,
Exactamente, cuando corres el comando bin/guarani enviar_emails_notificador lo que pasa por detrás es que se desencolan tareas de la tabla jobs, una vez terminada de ejecutar la tarea se borra de dicha tabla. Si falla en ejecutarse no se borra, sino que se modifica en las columnas attempts (intentos), locked_at, locked_by, failed_at y error (si ocurrió algún error).
Lo mas importante aquí es la columna handler, la cual contiene un objeto serializado de la clase mail_job. Al ejecutarse un job lo que hace es rearmar el objeto de la clase mail_job, y luego llamar el método perform (lo hereda de mail_job_nucleo), esto hace que se envié el email.
Clases de referencia:
personalizacion/php/nucleo/_lib/mensajes/mail_job.php
php/nucleo/_lib/mensajes/mail_job_nucleo.php
saludos.
Muchas Garcias. Excelente la explicación, vamos a ver como resolvemos esto de que estan enviando mails a todos los alumnos de la Universidad, para las materias del Departamento de Básicas que son transversales, en el caso de clases de consulta, porque además cómo no hay filtro por responsable académica, les manda a los alumnos de postgrado, que tenemos en la misma base.
Saludos.
ANA