domingo, 23 de febrero de 2014

Moodle con web services

Vamos a configurar web services con moodle, para esto necesitamos 2 instalaciones de moodle, en mi caso tendré en mi propio local 2 proyectos moodle con diferentes virtual host tendré en mi ejemplo a local.moodle.com y local.moodle2.com.

Si tienes problemas para  levantar proyectos locales visiten mi post anterior de  como instalar moodle en ubuntu: http://johnny1402.blogspot.com/2014/02/instalar-moodle-261-en-ubuntu-1310.html




Tengo 2 moodle instalado, ahora la idea es que moodle2 se comunique a moodle1 

Paso1: creamos un rol especial para más adelante crear un usuario webservice.


En mi caso le daré  todos los permisos a este  rol, pero es necesario x lo menos dar al protocolo por el cual necesitaremos.


Listo, ahora ya tenemos nuestro rol para nuestro servicio web en moodle.

Paso 2: creamos a un usuario y le asignamos al rol que creamos en la parte de arriba.



verificamos que el usuario se aya creado
Asignamos al usuario al rol web service



Hasta aquí solo tenemos a un usuario "Usuario Web Service" asignado al rol "Servicio Web"

Ahora procederemos a activar y crear el web service, podemos apoyarnos de los links en la documentación de moodle: http://docs.moodle.org/26/en/How_to_create_and_enable_a_web_service

1. Página Principal ► Administración del sitio ► Características avanzadas
2. Habilitar servicios web haciendo check y despues hacemos click en guardar cambios.


Nos dirigimos a Página Principal ► Administración del sitio ► Extensiones ► Identificación ► Gestionar identificación y activamos la Identificación de Servicios Web ('Web Services')


Habilitamos los protocolos a usar por nuestro web service. En nuestro caso solo habilitaremos SOAP, para esto vamos a la ruta Página Principal ► Administración del sitio ► Extensiones ► Servicio Web ► Administrar protocolos


La idea de este post es desarrollar un servicio a través de un plugin que se debería desarrollar en la carpeta local y usar ese servicio, me parece que esa es la idea correcta.
Para esto leeremos el siguiente link, que nos enseña hacer y es la cual seguiremos.
http://docs.moodle.org/dev/Adding_a_web_service_to_a_plugin

Descargamos el plugin modelo de la url https://github.com/moodlehq/moodle-local_wstemplate lo pegamos en la carpeta local de moodle y procedemos a instalar el plugin



regresamos a la pagina de inicio de nuestro moodle1 y nos cargara una vista comunicándonos que se encontró en la carpeta local un plugin de tipo webservice y procedemos a la instalación.



Pero, antes de instalar esto es importante, este plugin permite crear métodos para consumir a través del servicio y tiene reglas y y patrón de desarrollo, lo que haremos será utilizar los métodos existentes para solamente llamarlos, pero por que antes de instalar, se hace esto porque al instalar lee el archivo services.php y registrar en la base de datos las funciones del plugin.

nos ubicamos en el archivo services.php


Aquí agregamos algunas funciones de web service que ya existen.



En la imagen anterior estamos registrando un método de web service que ya existe en el modulo de cursos.
Pero en este ejemplo probaremos su método de saludo, pero podemos crear nuestras propias funciones y usar los métodos de otras librerías de llamado externos solo hay que registrar en su configuración los métodos.


Creamos un token para nuestro acceso a traves del servicio web, nos dirigimos a la ruta Página Principal ► Administración del sitio ► Extensiones ► Servicio Web ► Administrar tokens y ahí hacemos click en agregar.



en el formulario siguiente agregamos el usuario que creamos para el Web Service y también seleccionamos el nombre del plugin que pusimos en nuestro local.



Vemos el resultado nuestro token que lo utilizaremos cuando nos conectemos desde otro sistema.



Nos dirigimos al otro moodle2 y creamos una carpeta en la raíz, en mi caso creare una llamada moodle1 y dentro creare un php llamado service.php


dentro de este archivo pondremos el siguiente código, es básicamente llamar al método de saludo del plugin que instalamos en moodle1.




Probamos en la URL http://local.moodle2.com/moodle1/service.php en la cual debería mostrarme un mensaje que le envio a moodle 1 y este me retorna el mismo mensaje y adjunta el usuario que le pertenece al servicio.



Ahora podemos crear todas las funciones que queramos para leer y/o escribir en moodle 1 usando sus apis sin ninguna problema.




2 comentarios: