Intégration des contenus AICC Easyquizz et Epistudio dans une plate-forme autre qu'Epilearn ou Easyquizz Server
Un article de EpistemaWiki.
Cette fiche a pour but de vous guider dans l'intégration des contenus générés par Easyquizz et Epistudio dans une plate-forme de formation compatible AICC autre qu'Epilearn.
Sommaire |
Fonctionnement général
Les logiciels Easyquizz et Epistudio génèrent des contenus de formation au format HTML ou PHP, compatibles avec le protocole AICC. Ce protocole permet au contenu de renvoyer à la plate-forme de formation un certain nombre d'informations : les temps passés, les résultats, et les réponses.
Données envoyées par epistudio à la plate-forme :
Ces données sont envoyées sous la forme d'un fichier .ini, tel que défini par la norme AICC. Ce fichier est composé de deux sections [core] et [core_lesson], et de données sous la forme clé=valeur. Dans le cas d'Epistudio, voici un exemple d'un tel fichier :
[core] -> section AICC core Lesson_Status= -> non utilisé pour le moment Time=00:00:19 -> temps passé sur le module, au format HH:MM:SS
Données envoyées par easyquizz à la plate-forme :
[core] -> Section AICC core
Lesson_Status=NA -> Non utilisé pour le moment
Score=5,100,0 -> Résultat au format : Note obtenue, Note maximale, 0
Time=00:00:09 -> Temps passé sur le module, au format HH:MM:SS
[core_lesson] -> Section AICC core_lesson (dans Easyquizz Pro seulement)
a:8:{s:10:"PageNumber";s:1:.... -> Ensemble de données du questionnaire, sous forme d'un
a:8:{s:10:"PageNumber";s:1:.... tableau associatif PHP sérialisé. Ces données contiennent
a:9:{s:10:"PageNumber";s:1:.... les réponses entrées par l'utilisateur.
a:9:{s:10:"PageNumber";s:1:....
a:9:{s:10:"PageNumber";s:1:....
Pour organiser la communication AICC entre le contenu de formation et la plate-forme, il faut prévoir deux fonctions :
- une procédure d'appel : elle est reponsable du lancement du contenu de formation en lui passant des paramètres.
- une procédure de retour : elle enregistre les données AICC renvoyées par le contenu de formation.
Procédure d’appel d’un contenu de formation
On appelle le contenu en lui passant en paramètre dans l'URL (méthode GET) les trois données suivantes :
- l'URL sur laquelle il doit renvoyer les données AICC
- un numéro de session qui sera renvoyé à la plate-forme
- la référence du contenu au sein de la plate-forme, qui sera elle aussi renvoyée à la plate-forme.
Par exemple :
[aicc_url] => http://serveur_LMS/epilearn/lms_hmi/cmi.php [aicc_sid] => e640769cd293d34d2ad19b05af0cc2a5 [aicc_refid] => testAICC
Dans le cas des questionnaires générés avec Easyquizz Pro, il est possible d'envoyer au questionnaire les données de réponses précédentes de l'utilisateur, en méthode POST uniquement (la taille des données est trop importante pour passer dans l'URL d'appel) :
[quizz_init] => a%3A6%3A%7Bs%3A10%3A%22PageNum....
Les données proviennent de la section AICC [core_lesson] que le contenu a renvoyé lors de son dernier appel (voir les exemples de code plus loin).
Exemple de code php d'appel d'un questionnaire easyquizz pro :
// ouvre un module AICC désigné par $refId
function OpenModule($refId)
{
$quizz_url = GetQuizzURL($refId); // fonction à écrire, renvoyant l'adresse
// du questionnaire sur la plate-forme
$aicc_sid = GetAICC_SessionId($refId); // fonction à écrire, renvoyant une chaine
// de caractere identifiant la session
$aicc_url = GetAICC_URL($refId); // fonction à écrire, renvoyant l'adresse
// du script PHP qui devra être appelé par
// le module pour renvoyer les données AICC
$aicc_refid = $refId
$quizz_data = GetQuizzData(); // fonction à écrire, renvoyant la section
// [core_lesson] précédemment renvoyée par
// le questionnaire (si présente)
$quizz_url .= '?aicc_url' . urlencode($aicc_url)
. '&aicc_sid' . urlencode($aicc_sid)
. '&aicc_refid' . urlencode($aicc_refid);
if ($quizz_data != '')
{
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
echo '<html>';
echo '<body onload="document.forms[0].submit();">';
echo ' <form action="'. $quizz_url . '" method="post" ';
echo ' name="FormName" enctype="application/x-www-form-urlencoded">';
echo ' <input type="hidden" name="quizz_init" value="'.$quizz_data.'">';
echo ' </form>';
echo '</body>';
echo '</html>';
}
else
{
header("Location: ".$quizz_url);
}
}
Retour de l’information à la plateforme
Easyquizz effectue un retour d'information lors que l'utilisateur arrive sur la dernière page. Epistudio effectue le retour d'information lors de la fermeture du contenu de formation.
Afin de récupérer les données AICC, il est nécessaire que la plateforme implémente un script capable d'interpréter les paramètres (passés en POST) suivants :
[command] => PutParam [version] => 2.0 [session_id] => 5ad24ae6e3a986c542e9b974bf83b646 [ref_id] => testAICC [aicc_data] => %5Bcore%5D%0D%0ALe....
Ref_id et session_id correspondent aux paramètres aicc_refid et aicc_sid passés au module lors de son appel. Aicc_data contient le fichier .ini AICC en format urlencodé.
Exemple de code php de retour d'information d'un module epistudio ou easyquizz :
Pour décoder le paramètre AICC_data, le code suivant peut être utilisé :
$AICCData = DecodeAiccData($_POST['aicc_data']);
// retourne un tableau de la forme suivante :
// [Lesson_Status] => NA
// [Score] => 5,100,0
// [Time] => 0:0:9
// [quizz_data] => Données du questionnaire pour Easyquizz Pro
function DecodeAiccData($PostedValue)
{
$RetValue = array();
$table = split("[\n]{1,}",urldecode($PostedValue));
switch(strtolower(trim($table[0])))
{
case '[core]':
foreach($table as $k => $v)
{
if (trim(strtolower($v)) == "[core_lesson]")
{
$RetValue["quizz_data"] = urlencode(implode("\n",array_slice($table, $k+1)));
break;
}
else if ($k && (list($var_name, $value) = explode("=",$v)))
{
$var_name = strtolower(trim($var_name));
$value = trim($value);
if($var_name)
$RetValue[$var_name] = $value;
}
}
break;
case '[core_lesson]':
unset($table[0]);
$RetValue["quizz_data"] = urlencode(implode("\n",$table));
break;
}
return $RetValue;
}
Références :
- Un exemple de procédures d'appel et de retour d'information AICC se trouve dans la plate-forme Epilearn Open Source d'Epistema. Téléchargement sur http://www.epistema.com/
- La procédure d'appel est /lms_hmi/los.php
- La procédure de retour /lms_hmi/cmi.php
- Pour en savoir plus sur le protocole AICC : http://www.aicc.org/
