Buscar

En este artículo

Probando distintas consultas a la API de Reach 360

Este es un post bastante técnico, pero queríamos hacer estas pruebas para mostrar un poco cómo funciona la API de Reach 360 en lenguaje simple. Si bien no es algo que usen todas las organizaciones, hay lugares en los que es necesario capturar las analíticas del LMS Reach 360 e integrarlas, a través de una serie de procesos y validaciones, en otras aplicaciones.

En otro momento nos preguntábamos para qué sirve una API en elearning y la respuesta era un poco amplia. Hoy podemos decir que hay empresas en las que las certificaciones auditables de ciertas capacitaciones, habilitan o no a algunas personas a acceder a sectores restringidos de una empresa, por poner un ejemplo.

En otro casos, hay reportes de desempeño o scorings que están asociados a las remuneraciones. Es decir, hay razones por las que se puede necesitar que los reportes de capacitaciones de empleados, colaboradores externos, proveedores o socios en un LMS estén conectados a sistemas de Recursos Humanos o de otro tipo, dentro de una misma organización.

Básicos de las consultas a esta API

Como lo dice muy clarito la documentación oficial de Articulate, lo primero que se requiere es generar una API Key dentro de nuestra cuenta de Reach 360. Antes de enviar la consulta, se tiene que enviar una validación con esta API Key.

Nosotros no somos muy finos en el desarrollo porque nuestra aplicación receptora de los datos es este mismo sitio 😉 así que lo hicimos con un simple snippet en PHP:

				
					$baseApiUrl = 'https://api.reach360.com';
$apiKey = '87u9io-54kl-lkm567c-etc';  // Reemplazar con tu API key real
				
			

Después creamos la URL completa para la consulta específica que necesitamos, porque esa URL determina si la consulta es sobre un curso, sobre un grupo de usuarios, sobre un usuario, sobre una ruta de aprendizaje, etc.

				
					// Construir la URL completa de la consulta

// para saber los IDs, títulos, y demás datos de todos los cursos
$apiUrl = "{$baseApiUrl}/courses"; 

// para un reporte completo de un curso del que ya sabemos el ID
$apiUrl = "{$baseApiUrl}/reports/courses/{$courseId}"; 

//etc
				
			

Luego hacemos la consulta específica y recibimos un json, que es un archivo en el que viene toda la información junta en un formato bastante difícil de entender para el humano promedio.

				
					// enviamos el header y hacemos la consulta
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer {$apiKey}"
]);

$response = curl_exec($ch);
curl_close($ch);

// si algo salió mal vamos a leer un error
if (!$response) {
    die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch));
}


				
			

Casi siempe esa respuesta json tiene que ser decodificada y ordenada, poniendo cada dato en algún lugar para que se convierta en algo legible. Vamos a ese paso, pero ahora con una consulta específica.

Quiero ver cómo les fue a los usuarios que tenían asignado un curso determinado

Digamos que quiero el reporte de un curso al que llamamos “Ingreso a la Planta para Proveedores”. Como no conozco el ID de este curso, ya hice la consulta a /courses para ver un listado de IDs y eso es ahora un dato.

Hago entonces la consulta a /reports/courses/{$courseId} y ahora lo que tengo es un json que tiene todo el reporte completo de este curso. Vamos a usar json_decode para que esto se convierta en una matriz, así lo podemos mostrar en forma de tabla.

				
					// para mostrar la respuesta directamente en WordPress
// 1- Convertir JSON a array PHP
$data = json_decode($response, true);

// 2- Verificar si existen datos de learners
$learners = isset($data['learners']) ? $data['learners'] : [];

// 3- Tabla HTML
echo '<table border="1">'; // Encabezados de la tabla
echo '<tr>';
echo '<th>Email</th>';
echo '<th>Nombre</th>';
echo '<th>Apellido</th>';
echo '<th>Scoring</th>';
echo '<th>Estado</th>';
echo '</tr>';

// 4- Iterar sobre cada learner y crear filas de tabla
foreach ($learners as $learner) {
    echo '<tr>';
    echo '<td>' . '@ocultar' . '</td>';  // Escapar datos para seguridad
    echo '<td>' . htmlspecialchars($learner['firstName']) . '</td>';
    echo '<td>' . htmlspecialchars($learner['lastName']) . '</td>';
    echo '<td>' . htmlspecialchars($learner['quizScorePercent']) . '</td>';
    echo '<td>' . htmlspecialchars($learner['status']) . '</td>';
    echo '</tr>';
}
echo '</table>';
				
			

Magia ✨✨

Esta tabla es el resultado de la consulta de arriba, realizada contra nuestros datos reales en Reach 360 y nuestros colaboradores:

EmailNombreApellidoScoringEstado
@ocultarSebastiánCáceres100Complete
@ocultarAgustínDíazNot Started
@ocultarMartínFernándezNot Started
@ocultarAbrilFerreyra100In Progress
@ocultarSoporte Inglés67In Progress
@ocultarSofíaMendozaNot Started
@ocultarSantiagoPeraltaNot Started
@ocultarEquipoPUNTOMOVNot Started
@ocultarPlataformaPUNTOMOVNot Started
@ocultarVentasReach 360100Complete
@ocultarLearningReportNot Started
@ocultarLucianaRodríguez67Complete
@ocultarSoporteStoryline33Complete
@ocultarVictor EduardoTenjoNot Started

Hicimos esta tabla con las columnas Estado y Scoring porque este curso se publicó en Reach 360 con dos requisitos simultáneos: completar al menos el 80% del recorrido por todos los contenidos y aprobar un cuestionario final:

Reach 360 opciones de publicacion

En la tabla de arriba, la columna Estado muestra si se completó o no el recorrido por los temas y la columna Scoring refleja el resultado alcanzado en el cuestionario.

En la fila 4 vemos que Abril tiene un “100” en el cuestionario y al mismo tiempo un estado de curso “In Progress”, es decir no completado. Esto es porque Abril fue al cuestionario en forma directa, sin completar todos los contenidos. Esto depende también de cómo esté armado cada curso, pero quedémonos con esta situación para entender lo que sigue.

 

Quiero saber qué cursantes efectivamente completaron y aprobaron un curso determinado

Supongamos que de este informe dependiera que se habilite o no el acceso a un sector restringido, pudiendo ingresar las personas que cumplan con los dos requisitos: “Complete” en el recorrido de los contenidos (80% o más de los contenidos recorridos) y “100” en el scoring (75% o más de las preguntas respondidas en forma correcta).

Lo que me gustaría obtener en la consulta a la API es una lista corta, que muestre solo a las personas habilitadas. La consulta es la misma que la anterior, pero lo que hago es filtrar los resultados:

				
					//después del paso 3 de lo anterior
// 3b- Filtrar los registros con status Complete y scoring > 75
$filteredLearners = array_filter($data['learners'], function ($learner) {
    return $learner['status'] === 'Complete' && $learner['quizScorePercent'] > 75;
});

// 3c- Construir el nuevo array con los datos filtrados
$newData = [
    'courseDeleted' => $data['courseDeleted'],
    'courseUrl' => $data['courseUrl'],
    'learners' => array_values($filteredLearners), // Reindexar el array para evitar claves numéricas no secuenciales
    'nextUrl' => $data['nextUrl']
];

// 3d- Verificar de nuevo si existen datos de learners en el nuevo array
$learners = isset($newData['learners']) ? $newData['learners'] : [];

// y seguir con el paso 4
				
			

Esta otra tabla, más pequeña, es el resultado de la consulta filtrada:

EmailNombreApellidoScoringEstado
@ocultarSebastiánCáceres100Complete
@ocultarVentasReach 360100Complete

Por cualquier otra consulta, acá estamos

Este título ☝️ es un chiste nerd, por si no se entiende. Recordemos que este post es bastante nerd y la forma más sencilla de ver reportes es en la maravillosa interfaz de la sección Analyze de Reach 360. Esta sección de consultas vía API apunta a ilustrar algunas situaciones específicas, generalmente de grandes clientes.

Analyze de Reach 360

También tenemos que decir que, aunque estamos cerca del staff de soporte de Articulate, no somos agentes de soporte sino simples usuarios y partners comerciales. Si tenés algún problema al usar la API, aún habiendo consultado toda la documentación, te recomendamos contactar directamente al soporte de Reach 360 y contarles exactamente qué te ocurre.

 

Si querés conocer nuestros planes especiales para Reach 360, no dudes en contactarnos.

Artículos relacionados

Facebook
X
LinkedIn
Pinterest
WhatsApp

Deja un comentario

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