Saltar al contenido principal

Descripción General

AVISO LEGAL

Este es un proyecto independiente de código abierto y NO está afiliado, respaldado o soportado por Moodle HQ o Moodle Pty Ltd. Moodle™ es una marca registrada de Moodle Pty Ltd.

Integration Hub for Moodle (MIH) es un plugin independiente para la plataforma Moodle™ que proporciona una capa de integración centralizada y lista para producción entre tu sitio Moodle™ y cualquier servicio externo: APIs REST, brokers de mensajería (RabbitMQ) o servicios web SOAP.


El Problema

Los despliegues modernos de Moodle™ rara vez son sistemas aislados. Se conectan a sistemas externos: motores de gamificación, plataformas de analítica, servicios de notificaciones, sistemas ERP, integraciones con SIS, y más. Sin una solución centralizada, esto crea un patrón de código duplicado y frágil:

  • Cada plugin que necesita llamar a un servicio externo implementa su propia lógica HTTP
  • Los tokens de autenticación están dispersos en múltiples archivos settings.php
  • La lógica de reintentos y manejo de timeouts es inconsistente o directamente inexistente
  • No hay un lugar central para monitorear qué está pasando en todas las integraciones
  • Cuando un servicio externo cae, no hay protección — las peticiones se acumulan y fallan silenciosamente
  • Agregar una nueva integración requiere escribir código PHP, incluso para mapeos simples de evento-a-webhook

Este es el problema de la dispersión de integraciones. MIH lo resuelve.


La Solución

MIH proporciona dos sistemas complementarios:

1. API MIH (Facade)

Una clase PHP (mih) con interfaz fluida que cualquier plugin puede llamar para hacer peticiones HTTP o AMQP a servicios externos registrados. La API MIH se encarga de:

  • Resolución de servicios — busca la configuración del servicio en la base de datos por nombre
  • Autenticación — aplica automáticamente tokens Bearer o API keys
  • Circuit breaking — rechaza llamadas a servicios que se sabe que están caídos
  • Reintentos con backoff — reintenta peticiones fallidas con delays exponenciales
  • Logging — registra cada petición, respuesta y error en una tabla de log centralizada
  • Encapsulación de respuestas — devuelve un objeto mih_response consistente independientemente del transporte

2. Event Bridge

Un sistema de integración sin código para mapear eventos a llamadas de servicios externos. Los administradores configuran reglas en el dashboard — sin necesidad de PHP. El Event Bridge se encarga de:

  • Escucha universal de eventos — un único observer captura todos los eventos (core y de terceros)
  • Matching de reglas — verifica qué reglas aplican a cada evento
  • Deduplicación — previene que el mismo evento se procese dos veces
  • Despacho asíncrono — encola el trabajo como tareas adhoc para que las acciones del usuario nunca se bloqueen
  • Interpolación de templates — construye payloads JSON a partir de datos del evento usando sintaxis {{variable}}
  • Dead Letter Queue — almacena eventos que fallaron permanentemente para revisión y reenvío manual

Capacidades Principales

CapacidadDescripción
API MIHAPI PHP reutilizable para llamadas HTTP/AMQP desde cualquier plugin
Event BridgeReacciona automáticamente a cualquier evento de Moodle sin escribir PHP
Circuit BreakerPreviene fallos en cascada cuando los servicios externos caen
Reintentos con Backoff ExponencialReintentos automáticos con delays configurables
Dead Letter Queue (DLQ)Eventos fallidos almacenados para revisión y reenvío
Dashboard de MonitoreoGráficas en tiempo real de tasas de éxito y tendencias de latencia
Multi-transporteSoporte para REST/HTTP, AMQP (RabbitMQ) y SOAP
UI MultiidiomaSoporte completo en inglés y español
Auto-purga de LogsLa tabla de logs se poda automáticamente para evitar crecimiento descontrolado

Filosofía de Diseño

MIH fue construido con los siguientes principios:

  • Centralización sobre duplicación — un solo lugar para configurar, monitorear y depurar todas las integraciones
  • Resiliencia por defecto — los circuit breakers y reintentos siempre están activos, no son opt-in
  • No bloqueante — el Event Bridge usa tareas asíncronas para que las acciones del usuario nunca se retrasen por fallos de integración
  • Integraciones sin código — los patrones comunes de evento-a-webhook no requieren PHP
  • Nativo de Moodle™ — usa la capa DB, sistema de tareas, API de caché y renderizador de la plataforma; sin frameworks externos

Lo que MIH NO es

  • MIH no es un reemplazo de los web services de Moodle™ (API REST/SOAP para que sistemas externos llamen)
  • MIH no es un ESB (Enterprise Service Bus) completo — está enfocado en integraciones salientes
  • MIH no consume mensajes por defecto — el transporte AMQP publica mensajes; el consumo de respuestas lo maneja una tarea programada separada

Próximos Pasos