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.
Muy buen post Juan Carlos, ¿Para cuando el SIS móvil?. :-). Animo
esto que explican no me funciona y lo necesito para mi trabajo de diploma me podrian alludar
oleeeeeeeeeeeeee, parece que por fin habéis pagado las facturas al hosting 😉
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
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.
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!
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.
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
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.
Este ejemplo no funciona, Zend arroja error ‘Failed to parse response’
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.
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?
Como inserto users en moodle con webservices rest? Ya Configuré ws en moodle, ahora como hago la prueba? Ypara luego implementarlo en codeigniter. Gracias
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