Notificaciones de la actividad reciente en Twitter

Notificaciones de la actividad reciente en Twitter

de David Romero -
Número de respuestas: 6

Hola,

Estoy desarrollando un bloque con la versión 2.2.1 de Moodle.

En este bloque trabajo con Twitter y ahora estoy desarrollando una función que publique un tweet con cada una de las novedades del curso con el enlace a la novedad, tal y como hace el bloque de actividad reciente.

He pensado hacer esto modificando la función print_recent_activity para que envíe un tweet con la información y el formato que yo quiera en vez de imprimirlo en el contenido del bloque.

Pero tengo el problema de que, primero, sólo se enviaría la información al  tener que verse el bloque y, segundo, que se mandaría un tweet cada vez que se muestra el bloque y no sólo cada vez que haya una novedad, por lo que la información se repetiría.

Me gustaría que funcionara más parecido a las notificaciones que se envían por email, y controlar que sólo lo hiciera una vez. ¿Alguien puede darme alguna pista de cómo hacerlo?

Una cosa más, en el bloque de actividad reciente hace uso de la función ob_start() y otras parecidas antes y después de imprimir la información. ¿Para qué sirven y dónde están declaradas?

Muchas gracias,

Un saludo.

Promedio de valoraciones: -
En respuesta a David Romero

Re: Notificaciones de la actividad reciente en Twitter

de José de Jesús -

Paz y Bien.

Estimado David Romero:

En verdad desconozco de esas cosas, pero se me ocurre que los correos de los profesaores deberán tener una cuenta en el Twiter. Bueno, pienso que deberás hecharle un vistazo a Pasos iniciales con Twitter vía SMS

Pensando un poco más las cosas, si el profesor escribe su correo de Twiter en su perfil de la plataforma, no podrán salir los mensajes porque estaría configurado:  https://twitter.com@maestro; situación que automáticamente se desconocerá el correo.

Dinos cómo te fue y cómo lo solucionaste.

Saludos.

José de Jesús.

En respuesta a José de Jesús

Re: Notificaciones de la actividad reciente en Twitter

de David Romero -

Hola José de Jesús,

Muchas gracias por tu respuesta, pero creo que no se me ha entendido bien. No es que quiera enviar los tweets por correo, sino que se publique un tweet con la actividad reciente de Moodle.

¿Cómo sería la cuenta en Twitter? Es fácil. El profesor al comenzar un curso debería de crear una cuenta de Twitter que fuera del curso, y los alumnos seguir a esta cuenta. Luego el profesor la registra como aplicación y pone las claves necesarias en la configuración del bloque de Moodle. Con esto hecho, ya puede enviar tweets a través del bloque de Moodle con un formulario que ya tengo hecho. Lo que quiero ahora es que, a través de una opción booleana en el edit_form.php del bloque, permita enviar un tweet automáticamente cada vez que se ejecuta una acción que queda reflejada en el bloque "Actividad Reciente", con un texto parecido al que se muestra en ésta.

Entonces el problema que tengo es que "Actividad Reciente" recarga todas las novedades cada vez que se actualiza la página donde está el bloque. Pero esto no lo podría hacer mi bloque porque sino se mandarían tweets repetidos con lo mismo. Entonces quiero que funcione como la notificación de novedades a través del correo electrónico, como la suscripción a los foros, que el envío sólo se realiza una vez.

Aún no he conseguido buscar una solución. He pensado asignar a cada notificación en la actividad reciente un identificador, que cuando se envíe el tweet se meta ese identificador en una tabla o lo que sea, y que antes de enviar un tweet se compruebe que el identificador no está en la tabla. Pero conforme vaya pasando el curso tardará cada vez más y es bastante ineficiente.

Muchas gracias,

Un saludo.

En respuesta a David Romero

Re: Notificaciones de la actividad reciente en Twitter

de David Robles -

Hola David!

La mejor opción creo que es usando cron, las notificaciones del foro por mail se hacen de esta manera. http://docs.moodle.org/all/es/Cron

Entra como administador en Moodle -> Administración del sitio -> Notificaciones  Y en el texto de la derecha donde pone "El script de mantenimiento del cron.php no ha sido ejecutado durante las últimas 24 horas." Se pulsas sobre cron.php podras todos los procesos que se realizan. Haz las pruebas en local si puede ser para evitar envios a destiempo.

Por otro lado tambien puedes hacer una nueva tabla donde guardar cual es el ultimo envio y si no hay ninguna notificacion nueva evitar que se reenvie y asi evitas duplicados.

Un saludo!

En respuesta a David Robles

Re: Notificaciones de la actividad reciente en Twitter

de David Romero -

Hola David,

Yo también creo que la mejor manera es a través de cron. ¿Pero tendría que modificar el archivo donde se alojan las funciones de cron para ello? ¿No romperia eso la modularidad? ¿O puedo hacerlo a través de los propios archivos del bloque? ¿Sabes si hay algún bloque que haga uso de ello que me sirva como ejemplo?

Por otro lado, está muy bien pensado lo de guardar el último envío, pero me parece menos limpio y además tendría que comprobar si es posible, porque los envíos no son correlativos creo. Es decir, se refresca la actividad reciente, y si hay 10 cosas nuevas y 3 antiguas. ¿Dónde empieza y termina exactamente? Por la hora, pero no sé cuál es el recorrido que sigue el "foreach" que lo recorre para imprimirlo...

Muchas gracias por todo,

Un saludo.

En respuesta a David Romero

Re: Notificaciones de la actividad reciente en Twitter

de David Robles -

Hola de nuevo!

Creo que la solucion está aquí:

http://docs.moodle.org/dev/Blocks#Responding_to_Cron

$plugin->cron = 300;

public function cron() {
mtrace( "Hey, my cron script is running" );
 
// do something
 
return true;
}

Pero no he tenido tiempo a probarlo.

Un saludo!
En respuesta a David Robles

Re: Notificaciones de la actividad reciente en Twitter

de David Romero -

Hola otra vez,

La verdad es que he tenido un gran fallo, porque ese artículo lo leí mil y una veces cuando empecé y no me acordaba ya de ese apartado. Claro que en su momento no lo entendí muy bien.

Lo estoy probando, pero el caso es que no sé por qué pero no me funciona. Pongo el método público cron en la clase de mi fichero block_nombre.php y la línea del archivo version.php pero no sé por qué al ejecutar el cron.php no me sale el mensajito que debería con el mtrace. Estoy viendo el bloque rss_client porque hace uso de eso y sus mensajes si que salen, y la verdad es que no sé qué estoy haciendo mal. Seguiré haciendo pruebas.

Muchas gracias por tu respuesta,

Un saludo.