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

  1. Jandro dice:

    Buenas!…muchas gracias por la info. Mi problema es que he creado un servicio web en SOAP pero no se como explotarlo…alguna idea???…Gracias por adelantado

    • Ariza dice:

      Hola Jandro, mírate los archivos /webservice/soap/locallib.php y /webservice/soap/lib.php. Ahí podrás encontrar código de testing que te podrá servir de ejemplo.

  2. Silvia Bastos dice:

    Muchas gracias por este aporte, de gran ayuda!
    Mi duda es la siguiente:
    Cómo sabes cuáles son los parámetros que tienes que enviar en la llamada al web services? Es decir, cómo sabes la información y formato que debe llevar $params?
    Por otro lado, estoy interesada en realizar algo similar pero con cursos SCORM, alguna idea de por dónde empezar?
    Dónde podría encontrar información útil sobre Web Services en Moodle 2?
    Un saludo y enhorabuena por el blog!

  3. marcos dice:

    Muy bueno el aporte, pero tengo una inquietud, quisiera saber si es posible loguearme en moodle a travez de servicios web, o si se puede hacer un servicio para tal fin.

    • Jorge dice:

      Cordial saludo, tengo la misma inquietud y observo que la realizaste en el 2011, pudiste resolver el problema. Yo he seguido todos los pasos y no he podido loguearme. Me puede colaborar al respecto

      • Jesus dice:

        Hola Jorge. Tengo esa misma duda, no se si ya no estas por aqui, pero tengo que hacer eso mismo, bueno, un registro desde un servicio web a moodle. ¿Tienes por ahi los pasos que has seguido? Te lo agradecería eternamente. Gracias de antemano.

  4. Andrea Katherine Muñoz dice:

    Muchas gracias por este post, me ayudó mucho para hacer mi aplicacion web. Funciona muy bien, aunque hay que indagar en la forma de usar las otras funciones, como sacar la información que por ahí se recupera. Pero fue de mucha ayuda.

    de nuevo gracias.

  5. Gilbert dice:

    Como inserto users en moodle con webservices rest? Ya Configuré ws en moodle, ahora como hago la prueba? Ypara luego implementarlo en codeigniter. Gracias

  6. juan carlos dice:

    esto que explican lo ago y no funciona que puedo hacer necesito consumir los servicios de moodle para mi tesis y ahun no lo logra. pudieran alludarme con ese problemita

Deja un comentario

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