4 votes

Qu'est-ce que CMIString4096 et comment puis-je extraire les données qui s'y trouvent?

J'ai cette chaîne que je reçois d'Adobe Presenter 7. Elle s'appelle suspend_data et est de type CMIString4096 (selon la documentation)

CMIString4096 Un ensemble de caractères ASCII d'une longueur maximale de 4096 caractères.

Voici la chaîne :

aG1111111000000000BB001EC%2E.acC%7E%24GS%2AayjHm110BKCBBB0B0EBAB1B1ED%2E.icC%7E%24GS%2AlfkHm110BKDBCB0B0EBBB0B0EBAB1B1EE%2E.wcC%7E%24GS%2ACBlHm100BKDB2BCBCDB1BABBDB0BBBADF.7cC%7E%24GS%2A4GmHm110BKBB0Ebl%C3%A1rRbl%C3%A1r%3Bgr%C3%A6nn%3Brau%C3%B0urB

Ça ressemble à du base64 avec des caractères urlencodés. Quand je urldecode() la chaîne, les derniers caractères ressemblent à des données mais c'est en utf8, puis je utf8_decode et je vois ceci.

aG1111111000000000BB001EC.acC~$GS*ayjHm110BKCBBB0B0EBAB1B1ED.icC~$GS*
lfkHm110BKDBCB0B0EBBB0B0EBAB1B1EE.wcC~$GS*CBlHm100BKDB2BCBCDB1BABBDB0BBBADF.
7cC~$GS*4GmHm110BKBB0EblárRblár;grænn;rauðurB

D'accord je suis plus près de certaines données (à la fin), mais cela semble toujours être un gâchis. Quand je base64_decode() j'obtiens un gâchis binaire, mais je ne sais absolument pas ce que c'est.

Est-ce que quelqu'un sait ce que sont ces données et comment je peux en tirer un sens? J'utilise PHP au fait donc seules les fonctions de ce langage sont applicables.

4voto

Mike Rustici Points 1828

Les données stockées dans le champ cmi.suspend_data sont simplement un ensemble de données que le SCO (le contenu) peut utiliser pour conserver son état actuel. Il n'y a pas de signification sémantique ou de structure définie pour les données. Dans de nombreux cas, la signification des données peut être devinée ou inversée, mais cela ne semble pas être le cas avec le contenu produit par Adobe Presenter.

Le champ suspend_data est limité à 4096 caractères ASCII. Pour certains SCOs, cela ne fournit pas assez d'espace de stockage pour conserver pleinement l'état actuel. Dans de nombreux cas, un développeur de contenu confronté à ce dilemme appliquera un algorithme de compression aux données d'état afin de les insérer dans l'espace limité. Il semble que c'est ce qu'Adobe Presenter fait ici. Je suppose qu'ils ont compressé leurs données à l'état non encodé que vous avez trouvé, puis ont appliqué un encodage d'URL pour garantir que tous les caractères résultants étaient sûrs à envoyer au LMS.

La chaîne de 1 et de 0 au début des données suspendues pourrait avoir une signification. Il pourrait correspondre au(x) diapositive(s) du cours déjà visionnée(s) par l'apprenant. Pour vérifier cela, il pourrait être utile de faire passer le cours par un outil comme SCORM TestTrack (disponible gratuitement sur scorm.com) et d'utiliser les journaux de débogage générés pour observer comment les données suspendues changent lorsque l'utilisateur progresse dans le cours.

SCORM fournit de nombreux autres éléments du modèle de données qui ont une signification spécifique concernant l'état actuel du cours. Voici une liste de tous les éléments du modèle de données disponibles. Les journaux de débogage de SCORM TestTrack vous montreront également quels éléments du modèle de données Adobe Presenter utilise.

1voto

M4N Points 48758

Je ne pense pas que SCORM définisse ce que contient le champ suspend_data ou sous quel format il se trouve. Cela dépend entièrement du contenu/cours (Adobe Presenter dans votre cas), mais il ne peut contenir que du texte et est limité à 4096 caractères.

Ce champ peut être utilisé par le contenu pour stocker tout type d'état qui devrait être transmis de nouveau au contenu la prochaine fois qu'il est démarré.

1voto

Stefan Gehrig Points 47227

Trouvé

13. cmi.suspend_data

Lire / Écrire

Destiné à agir comme un emplacement pour stocker toutes les informations qu'un SCO aimerait conserver jusqu'à une session ultérieure.

dans ici. Donc comme Martin l'a écrit, SCORM ne définit que le type de données et non l'encodage ou le contenu de cmi.suspend_data. Peut-être que cette pourrait vous aider à déterminer l'encodage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X