La flexibilidad de Moodle se extiende más allá de su plataforma web, llegando a la palma de tu mano a través de su potente aplicación móvil. Pero, ¿qué pasa si quieres que tu aplicación móvil de Moodle muestre datos personalizados generados por un plugin que has desarrollado? ¡La clave está en la consulta de APIs!
En este artículo, exploraremos cómo puedes hacer que tu aplicación móvil de Moodle se comunique con una API para consumir datos generados por un plugin personalizado, abriendo un mundo de posibilidades para la interactividad y la personalización.
El Escenario: Tu Plugin y la App Móvil
Imagina que has desarrollado un plugin en Moodle que recopila información específica, por ejemplo, el progreso detallado de los estudiantes en una actividad no estándar, o datos de un sistema externo que integraste. Ahora, quieres que esta información sea accesible y visualizable directamente desde la aplicación móvil de Moodle, brindando una experiencia más fluida a tus usuarios.
Para lograr esto, tu plugin deberá exponer una API (o un conjunto de funciones web) que la aplicación móvil pueda consultar.
Pasos Clave para Consultar una API desde la App Móvil de Moodle
La comunicación entre la app móvil de Moodle y tu plugin se basa en la exposición de servicios web y la autenticación adecuada. Aquí te detallo los pasos esenciales:
1. Desarrolla un Servicio Web en tu Plugin de Moodle
Este es el primer y más crucial paso. Tu plugin necesita ser capaz de "hablar" con el exterior. Moodle facilita la creación de servicios web que pueden ser consumidos por aplicaciones externas, incluyendo su propia app móvil.
Define tus funciones API: Dentro de tu plugin, necesitarás definir las funciones que devolverán los datos que deseas mostrar en la aplicación móvil. Estas funciones deben seguir la estructura y las convenciones de los servicios web de Moodle.
Registra tu servicio web: Debes registrar tu servicio web en Moodle para que sea reconocido y accesible. Esto generalmente implica modificar el archivo db/services.php de tu plugin y asegurarte de que las capacidades de Moodle estén correctamente configuradas.
Manejo de la autenticación: Los servicios web de Moodle requieren autenticación. La aplicación móvil de Moodle ya maneja la autenticación de usuarios. Tu servicio web deberá estar configurado para aceptar tokens de usuario válidos.
Aquí un ejemplo simplificado de cómo podrías definir una función en tu plugin (dentro de un archivo de servicios web):
2. Asegura los Permisos y la Configuración del Servicio Web en Moodle
Una vez que tu servicio web está definido en el código, debes habilitarlo y configurarlo en la interfaz de administración de Moodle:
Habilitar servicios web: Ve a Administración del sitio > Servidor > Servicios web > Visión general y asegúrate de que los servicios web estén habilitados.
Habilitar un protocolo: Normalmente usarás el protocolo REST.
Crear un servicio personalizado: En Administración del sitio > Servidor > Servicios web > Servicios externos, crea un nuevo servicio y añade las funciones API que definiste en tu plugin.
Asignar usuarios y tokens (para pruebas o escenarios específicos): Aunque la app móvil usa el token de sesión del usuario, para pruebas directas o integraciones específicas, podrías necesitar generar tokens para usuarios.
3. Realiza la Consulta desde la Aplicación Móvil de Moodle
La aplicación móvil de Moodle está diseñada para interactuar con los servicios web de Moodle. Utiliza sus propias capacidades internas para hacer estas llamadas.
La clave aquí es que la aplicación móvil ya tiene la URL de tu sitio Moodle y el token de sesión del usuario autenticado. No necesitas manejar explícitamente la autenticación o construir URLs complejas si utilizas la forma recomendada.
Desde el código de tu componente o página dentro de la aplicación móvil (si estás desarrollando una característica personalizada para la app):
Puntos importantes sobre la consulta desde la app:
CoreWS.call(): Esta es la función principal que utilizarás en el framework de la aplicación móvil de Moodle para llamar a servicios web.
Nombre de la función: El primer parámetro es el nombre de la función de servicio web que definiste en tu plugin (ej. local_myplugin_get_custom_data).
Parámetros: El segundo parámetro es un objeto con los argumentos que espera tu función API.
Contexto y sitio: Es crucial especificar el site.id para que la llamada se realice en el contexto del sitio Moodle correcto.
4. Desarrolla la Interfaz de Usuario en la App Móvil
Una vez que puedes obtener los datos, el siguiente paso es diseñar cómo se presentarán en la aplicación móvil. Esto implica desarrollar la interfaz de usuario (UI) dentro de la arquitectura de la aplicación móvil de Moodle, utilizando los componentes y patrones existentes.
Integración en la navegación: Decide dónde encajará esta nueva funcionalidad dentro de la estructura de navegación de la app (una nueva pestaña, una opción en un curso, etc.).
Componentes UI: Utiliza los componentes de UI proporcionados por el framework de la app móvil de Moodle (o Ionic/Angular si estás trabajando a ese nivel) para mostrar los datos de manera clara y eficiente.
Consideraciones Adicionales
Seguridad: Siempre valida y sanea los datos tanto en el lado del servidor (tu plugin) como en el lado del cliente (la app móvil). Asegúrate de que las capacidades de Moodle restrinjan el acceso a tus datos solo a los usuarios autorizados.
Rendimiento: Optimiza tus consultas a la base de datos en el plugin para que sean rápidas. La latencia en la red es un factor importante en las aplicaciones móviles.
Manejo de errores: Implementa un manejo robusto de errores tanto en tu plugin como en la aplicación móvil para proporcionar una experiencia de usuario fluida incluso cuando algo sale mal.
Caché: Considera implementar un mecanismo de caché en la aplicación móvil para los datos que no cambian con frecuencia, reduciendo las llamadas a la API y mejorando el rendimiento percibido.
Actualizaciones del plugin y la app: Si modificas la API de tu plugin, asegúrate de que la aplicación móvil sea compatible o planea las actualizaciones correspondientes para evitar interrupciones.

Pasos para Probar tu Servicio Web de Moodle en Postman
Para probar tu servicio web en Postman, necesitarás configurar una solicitud HTTP POST. La API de Moodle generalmente utiliza un endpoint (webservice/rest/server.php) y requiere parámetros específicos.
1. Obtener la URL del Servicio Web de Moodle
La URL base para las llamadas a servicios web de Moodle es:
[URL_DE_TU_MOODLE]/webservice/rest/server.php
Por ejemplo: https://tucurso.moodlecloud.com/webservice/rest/server.php o http://localhost/moodle/webservice/rest/server.php
2. Obtener un Token de Acceso (para pruebas)
Para autenticarte con tu servicio web en Postman, necesitarás un token de acceso. Hay dos formas principales de obtenerlo para pruebas:
Generar un token de servicio web para un usuario específico:
Inicia sesión en Moodle como administrador.
Ve a Administración del sitio > Servidor > Servicios web > Gestionar tokens.
Haz clic en "Añadir".
Selecciona un usuario (puedes crear un usuario de prueba si no quieres usar tu administrador).
Selecciona el "Servicio" que has creado (el que contiene tus funciones API, por ejemplo, "Mi Servicio de Plugin").
Genera el token. Cópialo, ya que lo usarás en Postman.
Usar el token de depuración: En entornos de desarrollo, a veces se puede habilitar un token de depuración, pero esto no es recomendable para entornos de producción. El método anterior es más seguro y realista.
3. Configurar la Solicitud en Postman
Abre Postman y sigue estos pasos:
Tipo de Solicitud: Selecciona POST.
URL de la Solicitud: Pega la URL del servicio web de Moodle: [URL_DE_TU_MOODLE]/webservice/rest/server.php
Encabezados (Headers):
Cuerpo de la Solicitud (Body):
Ejemplo de cómo se vería el Body en Postman: