How to utilize xapi or scorm content packages - scorm

I am coding an LMS. Backend and UI is almost ready. Our first intention was to code our own content studio but using existing studios are way quicker. We want to use rise and rise gives the following exports:
This is a github repo of xapi and scorm 2004 exports. As you can see, index.html (scormcontent/index.html in scorm2004) is working perfectly. UI is intact and it is saving progression value internally.
My question is how can I get that data and save it to my own database (I know how to use a database, I just cant get the data stream from scorm).
After I save those values to my database, I also need to insert them back into the scorm or xapi when the user opens website.
If you guys can just show me how to retrieve that data, I can do everything from there. I read something about an endpoint??
Note: Functions at the bottom of index.html such as finishQuiz() are not working, at least I couldnt make them work.
Another Note: I really don't want iframe please

See my answer to Get the scorm values from the LMS
SCORM is a set of standards defining not only APIs for communication but also structures for packaging learning content. You will need to implement one of the SCORM APIs (SCORM 1.2 is probably easiest if you want to support most authoring tools and don't need any of the advanced sequencing features of SCORM 2004) or xAPI.
If you are going to implement xAPI you will want to look into how to implement it as an "LRS" (i.e. the server that consumes xAPI data from a learning activity) as xAPI doesn't normally refer to LMSes. Since you will also want to serve the content rather than just consume the data they generate, you might want to opt to implement cmi5, which builds on xAPI to also define a packaging format to replace SCORM.

Related

How does SCORM handle navigation between lessons?

i would like to manually create a scorm package, to understand the mechanisms.
I have read about content packaging and run time on the scorm website.
The content packaging is easy to understand but i have problems with the tasks of the run-time environment.
I understand that the scorm package display a html page with the desired content and communicate (initialize, commit, ...) with the LMS over the scorm API to persist data.
But how can i navigate to another lesson?
Should my run-time environment navigate between lessons or is the LMS concerned to navigate between the lessons?
I have read that some scorm generators like iSpring includes a front end user interface with navigation. But it sounds like this is optional.
Also i don't understand the entire scorm terminology. In an LMS i have courses (scorm package), lessons and for example quizzes in the lessons.
But what is a lesson in scorm? A SCO? And how can i implement quizzes or other things?
Must i implement this myself in the user interface?
Navigation between lessons can either be handled by the LMS outside the SCORM package, or it's possible to have multi-SCO packages where navigation happens within the package using a feature called sequencing. You can read about sequencing here: https://scorm.com/scorm-explained/technical-scorm/sequencing/

SCORM, building without an authoring tool?

I've a couple training courses that I sometimes provide to clients. They are both a few text pages + 20-25 videos + a link out to take an exam in my LMS.
My preference has always been to provide embed links to the videos, as it allows us to easily push out updates. Then the client embeds that in their own LMS / training package (however they want). But two clients are requesting the courses are delivered in a SCORM package to be delivered on their LMS.
I'm familiar with the authoring tools like Captivate and Storyline Articulate. I'm not a huge fan as they feel like canned powerpoints. I'm also not sure that's what the client wants.
Two questions:
(1) My understanding is I can package a SCORM file manually. How does that content present itself when put into an LMS? Would it present slide-by-slide in a single panel (similar to how I see storyline work) or is it distributed based on how the LMS is set-up?
(2) Would doing it manually be advantageous in any way?
Couple things to watch out for -
Simply zipping your content folder with a imsmanifest.xml maybe not put the files in the root of the zip like the LMS may possibly expect. Instead you end up with folder/imsmanifest.xml vs /imsmanifest.xml. Something to watch out for, but some LMS's do not care.
You can manually edit the imsmanifest.xml, but I'd work to validate it. Performing this task in editors that do not provide feedback can lead to validation issues.
Content Packaging is part of it, but the LMS may have its own subset of additional options like how to launch the content (popup, new window/tab, or in a IFRAME). They may have additional scoring/attempts and other settings outside of what the SCORM CAM provides.
Aside from familiarizing yourself with the IMS Manifest format and the above cautionary items you can do do this without to many hiccups.
There is a packager on https://cybercussion.com if you'd like to demo that after you have prepared your Shareable Content Object.
GL

Is SCORM Package Interchange Format simply a data interchange format or is it more complicated?

I am working on a learning project for mobile devices that requires (or would at least be desirable) the ability to export to a SCORM-compatible format. I see that SCORM has a "Package Interchange Format" (PIF) based around a .zip file. I am new to SCORM and am trying to understand exactly what this file must contain. Specifically, is the PIF file just a format for generating interchangeable data between systems, or is it more complicated than that?
For some context, imagine the use case of a set of questions/sections that a user has to run through on a native mobile app, and at the end, we want to offer the ability for the user to "export" their data in a SCORM-compliant fashion. Is this simply a matter of exporting information about a) the questions and b) the answers into some .xml format, or is there more to it? I notice a lot of the documentation around SCORM seems to focus on Javascript and HTML. Is SCORM HTML specific, or are native apps reconcilable with SCORM, at least from the export perspective?
Apologies if any of this is basic stuff. Just trying to wrap my head around the standard and how it does or does not apply to what I'm doing.
The PIF is really a very small detail of SCORM's packaging. It only says that you can distribute your content in zip format, but not what that should contain.
What a SCORM (1.2) file should contain is described in much, much detail in the SCORM CAM book. To summarize very quickly, you need:
All the files necessary for the content to run (images, html files, javascript files, css etc)
A file called imsmanifest.xml that describes a few things about your content, the files it contains and possibly how they interract with the LMS they run on. It can vary from very simple to very complicated.
Optionally, metadata in XML format
So, SCORM does not care if and where you include your questions and answers. It doesn't know about them. This is your content's responsibility and that should be able to include them and present them to the user, when ran. What SCORM can do is make your content communicate with the LMS you're running it on, so that the results of these questions are persisted.
For now, I'd suggest that you have a look at some existing SCORM files, to get an idea of how the imsmanifest.xml file should look like, and then study the SCORM CAM book and things will get rolling.
The trouble with SCORM is that is has to be launched from within LMS. If you're building an external app that has to communicate to a LMS, take a look at either LTI (http://www.imsglobal.org/toolsinteroperability2.cfm) or TinCanAPI (http://tincanapi.com/).
SCORM 2004 sample https://github.com/cybercussion/SCOBot/
You zip the contents of the directory. Some LMSs expect the imsmanifest.xml to be located in the root of the zip.
Some people are using Native Apps in a LMS format and loading the SCO's into an HTML view, but as stated above SCORM is expecting a JavaScript to JavaScript communication.

To Develop LMS and Scorm Sequesncing Engine

We want a LMS(coded in ASP.NET/vb.net) which is able to import SCORM packages & display it to learner for viewing content. I am totally new to SCORM and have been shifted to this project. I want to know how can I access SCORM Assessment object's (Test) result, like Learner ID, passed/fail, time.
Can you please guide me what will I need to implement in ASP.NET code to accomplish my goal ?
Task that I have done so far is,
Reading a manifest zip file, unzipping the file and get all information from the file(content name,description,items and launching page) and when user clicks on a particular course a pop up window is launching the page.
I eagerly want to know what I can do next to communicate with the LMS with the APIs. Shall I need to develop my own LMS to get the result,If there is a quiz which is running, all I need to know is the no of questions attempted by the user, whether the user is pass or fail and I need to store all information in the database for individual user so that I can review the result afterwards.
So the task remaining.
Tracking mechanism to deliver the content.
SCORM/LMS sequencing engine that controls the navigation between parts of SCORM conformant course.
Please help.
SLK at codeplex provides a good starting point. However, if you are truly wanting to provide an in-house written SCORM play that is fully compliant, you have a major task ahead of you. In essence there are three party you need to fully develop:
CAM - the unzipping process, which it sounds like you have already achieved.
RTE - the javascript host for SCORM, providing the 8 specified methods. Behind this you also need to implement the SCORM object model, which SLC does help with. If you have implemented all of this, then there should be data entries on the data model that indicate completion etc.
SN - the sequencing and navigation processing. This is significantly the most complex part. I am still in the process of trying to implement this, using SLC, and it is hard. It is the completion of this that will potentially give you more information that will enable you to know what has been done.
it is also worth looking at scorm.com, who are a consultancy, but provide a lot of useful information about the scorm standard.
That is true. SCORM is one of these stadarts where you can implement as little as possible. But you will need some of Javascript with a Backend-Script (JSON to the rescue) so you can track the scorm data, and save it your database.
But let me tell you this: This is the easiest task! Making your own course-creator is a whole other beast.

How to scrape websites such as Hype Machine?

I'm curious about website scraping (i.e. how it's done etc..), specifically that I'd like to write a script to perform the task for the site Hype Machine.
I'm actually a Software Engineering Undergraduate (4th year) however we don't really cover any web programming so my understanding of Javascript/RESTFul API/All things Web are pretty limited as we're mainly focused around theory and client side applications.
Any help or directions greatly appreciated.
The first thing to look for is whether the site already offers some sort of structured data, or if you need to parse through the HTML yourself. Looks like there is an RSS feed of latest songs. If that's what you're looking for, it would be good to start there.
You can use a scripting language to download the feed and parse it. I use python, but you could pick a different scripting language if you like. Here's some docs on how you might download a url in python and parse XML in python.
Another thing to be conscious of when you write a program that downloads a site or RSS feed is how often your scraping script runs. If you have it run constantly so that you'll get the new data the second it becomes available, you'll put a lot of load on the site, and there's a good chance they'll block you. Try not to run your script more often than you need to.
You may want to check the following books:
"Webbots, Spiders, and Screen Scrapers: A Guide to Developing Internet Agents with PHP/CURL"
http://www.amazon.com/Webbots-Spiders-Screen-Scrapers-Developing/dp/1593271204
"HTTP Programming Recipes for C# Bots"
http://www.amazon.com/HTTP-Programming-Recipes-C-Bots/dp/0977320677
"HTTP Programming Recipes for Java Bots"
http://www.amazon.com/HTTP-Programming-Recipes-Java-Bots/dp/0977320669
I believe that the most important thing you must analyze is which kind of information do you want to extract. If you want to extract entire websites like google does probably your best option is to analyze tools like nutch from Apache.org or flaptor solution http://ww.hounder.org If you need to extract particular areas on unstructured data documents - websites, docs, pdf - probably you can extend nutch plugins to fit particular needs. nutch.apache.org
On the other hand if you need to extract particular text or clipping areas of a website where you set rules using DOM of the page probably what you need to check is more related to tools like mozenda.com. with those tools you will be able to set up extraction rules in order to scrap particular information on a website. You must take into consideration that any change on a webpage will give you an error on your robot.
Finally, If you are planning to develop a website using information sources you could purchase information from companies such as spinn3r.com were they sell particular niches of information ready to be consume. You will be able to save lots of money on infrastructure.
hope it helps!.
sebastian.
Python has the feedparser module, located at feedparser.org that actually handles RSS in its various flavours and ATOM in its various flavours. No reason to reinvent the wheel.

Resources