Conectividad de Moodle 2.0 con sistemas externos. Web Services

Moodle nos provee de una serie de funcionalidades (gestión de alumnos y cursos, manejo de roles, subida y descarga de archivos, foros, etc) que son interesantes poderlas utilizar en otros entornos, combinadas con ERPs, sistemas de RRHH, portales, desde aplicaciones en dispositivos móviles
Ésta es la principal funcionalidad de los servicios web que Moodle proporciona en su versión 2.0 y que, supongo, se irán añadiendo y actualizando en posteriores versiones. Además de ésta, tienen otras funciones, por ejemplo para la integración de aplicaciones externas dentro de Moodle a través de IMS LTI, pero esto daría para otro post.

Ya que había pensado en este artículo como algo práctico, finalizo la presentación y «nos metemos en el ajo«. Para comenzar a usar los servicios web primero hay que configurar varios parámetros en Moodle, que explico en el siguiente vídeo:

Podremos usar cualquiera de los protocolos que admite Moodle: XML-RPC, SOAP, REST y AMF, para la comunicación.

En éste ejemplo trabajaremos con XML-RPC.

1º Necesitamos de las librerías Zend XML-RPC y las importamos:

require_once ‘Zend/XmlRpc/Client.php’;

2º Creamos dos cursos y la variable params, que será un array, para enviarla en la llamada al cliente XML-RPC:

$course1 = new stdClass();
$course1->fullname = ‘curso de prueba 1’;
$course1->shortname = ‘curso1’;
$course1->categoryid = 1; //Miscelanea

$course2 = new stdClass();
$course2->fullname = ‘curso de prueba 2’;
$course2->shortname = ‘curso2’;
$course2->categoryid = 1; //Miscelanea

$courses = array($course1, $course2);
$params = array(‘courses’ => $courses);

3º Montamos la URL de llamada (usando el token generado):

$moodleurl = «http://localhost/moodle202»;
$token = «xxxxxxxxxxxxxxxxxxxxxxxx»;

$serverurl = $moodleurl . «/webservice/xmlrpc/server.php» . ‘?wstoken=’ . $token;

4º Instanciamos el cliente enviando la URL como parámetro

$xmlrpcclient = new Zend_XmlRpc_Client($serverurl);

5º Ejecutamos el método call pasando la función que vamos a utilizar y que configuramos previamente en el vídeo, y los parámetros:

$function = ‘moodle_course_create_courses’;

try {
$createdcourses = $xmlrpcclient->call($function, $params);
} catch (Exception $e) {
var_dump($e);
}

Ya solo queda comprobar que se han creado los cursos correctamente.

15 comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *