xApi Client Library for OpenLearning
Install:
npm install @openlearning/xapi --save
Usage:
import {
initLrs,
saveStatement,
saveAttachments,
saveCompletion,
saveActivityState,
retrieveActivityState
} from "@openlearning/xapi";
The webpage will be loaded with query string arguments that configure the LRS connection.
The initLrs
function returns the configuration retrieved from the query (search) string.
const lrsConfig = initLrs();
Once an LRS connection is configured, this config can be used with the other functions,
e.g. to mark this activity as completed:
saveCompletion(lrsConfig);
saveCompletion(lrsConfig, myData);
Or to send file URLs to OpenLearning as attachments that can then be shared by the learner:
saveAttachments(lrsConfig, [{
contentType: "text/plain",
display: "attachment.txt",
description: "A text file written by the learner",
fileUrl: "https://www.example.com/attachment.txt"
}], "published");
saveAttachments(lrsConfig, [{
contentType: "text/plain",
display: "attachment.txt",
description: "A text file written by the learner",
fileUrl: "https://www.example.com/attachment.txt"
}], "attached");
Activity State can also be set and retrieved for the current user of this activity:
Note, to use these, the setting: "OpenLearning LRS: Use OpenLearning to store xAPI documents and state (Experimental)"
needs to be activated under Course Setup > Advanced.
saveActivityState(lrsConfig, stateId, state);
retrieveActivityState(lrsConfig, stateId).then((state) => {
console.log(state);
});
Standalone Bundle
If you're not using npm (e.g. you're not building with webpack, etc.) and want to just use a <script>
tag, using:
<script src="./bundle/openlearning-xapi.js"></script">
will define:
window.xApi = {
initLrs,
saveStatement,
saveAttachments,
saveCompletion,
saveActivityState,
retrieveActivityState
};
Development
Build the ./dist
folder:
npm run build
Build the standalone bundle: ./bundle/openlearning-xapi.js
:
npm run bundle