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.

Comentarios

15 respuestas a «Conectividad de Moodle 2.0 con sistemas externos. Web Services»

  1. Avatar de Jorge Lopez
    Jorge Lopez

    Muy buen post Juan Carlos, ¿Para cuando el SIS móvil?. :-). Animo

    1. Avatar de juan carlos
      juan carlos

      esto que explican no me funciona y lo necesito para mi trabajo de diploma me podrian alludar

  2. Avatar de Fran Cruz
    Fran Cruz

    oleeeeeeeeeeeeee, parece que por fin habéis pagado las facturas al hosting 😉

  3. Avatar de Jandro

    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

    1. Avatar de Ariza

      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.

  4. Avatar de Silvia Bastos
    Silvia Bastos

    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!

  5. Avatar de marcos
    marcos

    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.

    1. Avatar de Jorge
      Jorge

      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

      1. Avatar de Jesus
        Jesus

        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.

  6. Avatar de rsilva
    rsilva

    Este ejemplo no funciona, Zend arroja error ‘Failed to parse response’

  7. Avatar de Andrea Katherine Muñoz
    Andrea Katherine Muñoz

    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.

  8. Avatar de Germán

    Soy nuevo en esto y me gustaría que me ayudarán saber si puedo usar los web services de moodle en aplicaciones de .net?

  9. Avatar de Gilbert
    Gilbert

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

  10. Avatar de juan carlos
    juan carlos

    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 una respuesta

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