Webservices & Scorm tracking

Webservices & Scorm tracking

de Francisco Bodego Franco -
Número de respuestas: 8

¡Buenas a todos y todas!

Soy un desarrollador que tiene un pequeño gran problema en moodle...

Tengo que desarrollar una APP en Android capaz de conectarse a un curso Moodle para poder grabar y coger datos del seguimiento Scorm (Scorm Traking). Sobre todo para poder coger y grabar los datos de la variable suspend_data.

Hasta ahora lo había conseguido utilizando la Data Manipulation API (http://docs.moodle.org/dev/Data_manipulation_API).He desarrollado una serie de PHPs que son capaces de acceder directamente a la BAse de datos para guardar y obtener toda la información que yo quiero, el problema, es que al cliente no le gusta tener que subir una serie de PHPs generados por un tercero a su servidor, y me ha pedido que lo haga a través del plugin Webservices (http://docs.moodle.org/dev/Web_services).

Por lo que he podido investigar, con las webservices, se puede acceder desde una aplicación externa para modificar usuarios, cursos etc. pero no para grabar datos concretos de los avances de usuario en un curso.

¿alguien ha tenido alguna experiencia con Webservices y ha conseguido acceder a la Base de datos?

La version de Moodle es: 2.4.8 (aunque en unos meses se actualizará a 2.5)

un saludo y muchas gracias.

 

FRAN

Promedio de valoraciones: -
En respuesta a Francisco Bodego Franco

Re: Webservices & Scorm tracking

de Juan Barahona Sánchez -

Buen día Francisco, en mi poca experiencia de trabajo con moodle te puedo comentar que la plataforma trae implementado una serie de servicios web listos para utilizarse, pero no siempre esta todo lo que necesitas; por lo tanto tienes que desarrollar tus propias clases y/o funciones y luego exponerlas como servicio web para poder consumirlas de otras aplicaciones externas.

Como tienes que desarrollar una serie de PHPs para lograr esto, igual tu cliente tiene que subir a su servidor lo que tu desarrollas.

En respuesta a Juan Barahona Sánchez

Re: Webservices & Scorm tracking

de Francisco Bodego Franco -

OK! entendido Juan, gracias!

Si tengo que desarrollar nuevos webservices y subirlos al servidor estoy en las mismas...

Sigo salseando, y he leído algo sobre Tin Can API: dice que es el sustituto de SCORM, es algo así como una base de datos en la que se guarda la info de los cursos y datos de los usuarios. Pero por lo visto aún está muy verde y no hay plugin con Moodle...

¿Podría ser una solución la Tin Can API a medio plazo? Entiendo que aún le falta unos años para estar a punto....

 

En respuesta a Juan Barahona Sánchez

Re: Webservices & Scorm tracking

de Francisco Bodego Franco -

Al final parece que el cliente se decanta por los webservices.

Así que me toca empollar cómo crear nuevos, lo bueno es que ya existen buenos tutoriales en Moodle:

http://docs.moodle.org/dev/Adding_a_web_service_to_a_plugin

A ver si puedo desarrollar las funcionalidades que necesito, a priori parece que sí.

Gracias por la ayuda.

En respuesta a Francisco Bodego Franco

Re: Webservices & Scorm tracking

de Juan Barahona Sánchez -

Seguro que si ya que no es cosa de otro mundo.

En respuesta a Juan Barahona Sánchez

Re: Webservices & Scorm tracking

de Francisco Bodego Franco -

Al final, después de una par de días viendo tutoriales y haciendo muchas muchas pruebas he conseguido crear mis webservices, puedo acceder desde mi app Android y hacer un Scorm tacking guiño

Para conseguirlo he utilizado estos manuales de Moodle, con un poquito de paciencia terminas implementado las plantillas que te dan:

http://docs.moodle.org/dev/Adding_a_web_service_to_a_plugin

http://docs.moodle.org/dev/Web_services_API

http://docs.moodle.org/dev/External_functions_API

Pero ahora me surge una duda:

Para mis webservices, utlizo una serie de librerias PHP con funciones, variables y constantes que necesito para implementar las funcionalidades.

Para referenciar estos ficheros PHP, utilizo la siguiente fórmula: require_once $CFG->dirroot.'/local/ws_fks/lib/utils.php'; 

 Utilizo la variable global "$CFG->dirroot" para poder acceder a la carpeta "local", que es donde pongo mi webservice para que se instale en Moodle.

El caso es que, a pesar de que todo funciona correctamente, esta solución no me parece muy elegante, ya que Moodle al instalar el webservice la pone en alguna otra carpeta, y digamos que llamo al webservice a una ruta concreta y utilizo las librerias de otro lado... no sé si me explico... 

¿Hay alguna forma de decirle a Moodle que copie también las librerías junto con mi webservices? (así podría referenciar las librerías de forma relativa (usando el "."): require_once './lib/utils.php'; 

gracias por las respuestas.

En respuesta a Francisco Bodego Franco

Re: Webservices & Scorm tracking

de No name -

Hola Francisco,

Lo primero, enhorabuena si lo has conseguido, sin duda deben ser unos servicios muy interesantes. Sobre tu solución para la ruta, haces algo parecido a lo que suele hacer Moodle en sus servicios. Cuando lo requiere, utiliza un: 

require_once($CFG->libdir . '/libreria.php')

si bien es cierto que así referencia los archivos de /lib, porque

$CFG->libdir 

no es más que 

$CFG->dirroot .'/lib' 

(lo puedes ver en /lib/setup.php, línea 179).

¿Has probado a empaquetar estos webservices como un plugin local? Así podrías incluir las librerías que quieras, junto con los servicios.

Un saludo!

En respuesta a No name

Re: Webservices & Scorm tracking

de Francisco Bodego Franco -

Sí, los he empaquetado (vamos, los he metido dentro de una carpeta) y los he subido dentro de la carta "local" de Moodle.

al iniciar moodle como administrador Moodle me avisa de que hay nuevos servicios y los instala.

Todo funciona correcto.

Y usando la variable que dices funciona correcto: 

$CFG->dirroot