Articles sur : Export, Monétisation
Cet article est aussi disponible en :

📦 Créer son export SCORM pour LMS

Pour rendre compatible un export Celestory au format SCORM, il suffit de suivre quelques étapes avec les blocs Javascript qui rajoute l'api SCORM dans l'environnement global du projet.


Le format SCORM définit:

  • Si le module est VALIDE: Vrai ou Faux (unknown ou completed)
  • Le score minimum en pourcentage pour valider le module
  • Le score obtenu en pourcentage par l'utilisateur


Le format SCORM:

  • Est un format exporté qui est hébergé par l'outil type LMS. Il faut donc à chaque mise à jour le recréer.
  • Ne donne pas un un suivi granulaire de l'apprenant. Pour le faire, il faut toujours utiliser les analytics de Celestory. Il faut vérifier que l'hébergeur du format Scorm autorise bien l'envoi de statistiques.
  • Ne prend pas en compte les variables (booléenne, numérique, texte...) qui sont un outil très puissant pour créer sa simulation. Il faudra toujours passer par Voltask pour les récupérer (possibilité d'installation locale).


Vous pouvez vous baser sur le graphe exemple: https://creator.celestory.io/project/phHUew7e6


Seuls les blocs commençant par SCORM sont à rajouter où vous le voulez dans votre graphe.



Exemple graphe SCORM


  1. Ajoutez des blocs Javascript pour déclencher le suivi SCORM. Commencez par copier coller chaque contenu des blocs Javascript que vous créez:


SCORM API

function SCORM_ScanParentsForApi(win)
{
/*
Establish an outrageously high maximum number of
parent windows that we are will to search as a
safe guard against an infinite loop. This is
probably not strictly necessary, but different
browsers can do funny things with undefined objects.
*/
var MAX_PARENTS_TO_SEARCH = 500;
var nParentsSearched = 0;

/*
Search each parent window until we either:
-find the API,
-encounter a window with no parent (parent is null
or the same as the current window)
-or, have reached our maximum nesting threshold
*/
while ( (win.API == null || win.API === undefined) &&
(win.parent != null) && (win.parent != win) &&
(nParentsSearched <= MAX_PARENTS_TO_SEARCH)
)
{

nParentsSearched++;
win = win.parent;
}

/*
If the API doesn't exist in the window we stopped looping on,
then this will return null.
*/
return win.API;
}

function SCORM_GetAPI()
{
var API = null;

//Search all the parents of the current window if there are any
if ((window.parent != null) && (window.parent != window))
{
API = SCORM_ScanParentsForApi(window.parent);
}

/*
If we didn't find the API in this window's chain of parents,
then search all the parents of the opener window if there is one
*/
if ((API == null) && (window.top.opener != null))
{
API = SCORM_ScanParentsForApi(window.top.opener);
}

return API;
}

window.API = SCORM_GetAPI()


SCORM : Initialize Session + Step 0

const step = 0

//const candidate = celestoryPoints._get("candidate", "")

//const startTime = celestoryPoints._get("date", 0) //YYYY-MM-DDThh:mm:ss.mmmmZ
//const spentTime = new Date() - new Date(start) // float in days ? seconds ?

API.LMSInitialize("")

API.LMSSetValue("cmi.core.lesson_status", "incomplete");
API.LMSSetValue("cmi.core.score.raw", step); // Enregistre le score de l'utilisateur
API.LMSCommit(""); // Sauvegarde les données


SCORM : Step 1

const step = 70

console.log("raw score to "+step);
API.LMSSetValue("cmi.core.score.raw", step); // Enregistre le score de l'utilisateur
API.LMSCommit(""); // Sauvegarde les données


Note: Vous pouvez rajouter autant d'étapes que vous le souhaitez en dupliquant le bloc "SCORM : Step 1" et en indiquant le pourcentage atteint.
Il est par défaut de 70%, mais vous pouvez rajouter des étapes intermédiaires. (ex: 10%, 20%, 50%)


SCORM : Step 2 + Complete

const step = 100

console.log("raw score to "+step);
API.LMSSetValue("cmi.core.score.raw", step);

console.log("complete course");
API.LMSSetValue("cmi.core.lesson_status", "completed");

API.LMSCommit(""); // Sauvegarde les données


SCORM : Finish Session

console.log("Cours terminé, fenetre fermée");
API.LMSFinish(""); // Termine la session SCORM





  1. Exportez votre projet au format Web ou PWA


  1. Décompresser le ZIP téléchargé (ex: SCORM_1.zip)


  1. Créez un dossier dans le dossier décompressé avec en titre nomdumodulescorm (ex: module1) où vous déplacez l'ensemble du contenu présent


Exemple dossier scorm



  1. Téléchargez ce fichier XML imsmanifest.xml que vous rajouter dans votre dossier parent:


  1. Compressé votre dossier parent SCORM_1 en fichier zip
    Voici le lien du fichier zip exemple:



  1. Votre fichier SCORM est maintenant prêt ! Vous pouvez le tester sur un site de test comme : https://app.cloud.scorm.com/sc/user/Home


Test d'un zip au format scorm


Téléversez le zip recréé


Quand le zip Scorm est téléversé, cliquez sur Launch


En lançant le test Scorm, un nouvel onglet apparait. Finissez y le module pour qu'il se referme.



Le suivi scorm fonctionne: complétion et pourcentage sont validés


Mis à jour le : 02/07/2025

Cet article a-t-il répondu à vos questions ?

Partagez vos commentaires

Annuler

Merci !