The OctoProctor’s proctoring system supports integration with LearnWorlds LMS. The proctoring system integrates directly with an assessment added to a course module section.
The general principle of integration is to insert an “Embed Code” widget into the first question of the assessment, which allows you to place the proctoring code within it. As a result, a proctoring session starts from the question where this widget with code was added. A proctoring session termination is implemented in the “Ending screen” section.
In the code you can enter the name of the template used for this assessment, this option allows you to use different templates for diverse assessments.
In the course settings you must disable the ability to view the correct answers after passing the assessment. If necessary, you can add a “Retake” button if you want to give this opportunity to test-takers. In this case, you need to change the template settings by adding the number of attempts to retake the assessment. It is also necessary to limit the number of attempts to pass the assessment in the LMS itself.
The interface and content of the assessment can be customized at your own discretion.
NOTE: the proctoring session starts from the first question in the assessment. Since the proctoring session starts after a question is uploaded, the question may remain visible to the test-taker for a short while.
In order to integrate the OctoProctor's proctoring system with the LearnWorlds LMS you need to add the “Blanc exam” activity to the course module.
Then you should go to the question editing panel.
In the opened menu you can add the necessary questions.
Then the “Embed Code” widget should be added into the first question in an assessment.
After adding this widget, you will be able to insert code into the “Embeddable script” field.
Paste the following code. Note that it is needed to replace the links with ones that are relevant for your application:
(function (host, template) {
const script = document.createElement('script');
script.setAttribute('src', https://${host}/sdk/supervisor.js
);
script.onload = function () {
const msgUint8 = new TextEncoder().encode(me.id + location.href);
const identifier = crypto.subtle
.digest('SHA-1', msgUint8)
.then(buffer => {
return new Uint8Array(buffer).reduce(
(a, b) => a + b.toString(16).padStart(2, '0')
, '');
});
const supervisor = new Supervisor({ url: https://${host}
});
supervisor.on(['stop', 'fail'], function (err) {
if (err) alert(err);
supervisor.logout({ redirect: '/' });
});
supervisor.start({
provider: 'learnworlds',
username: me.id,
nickname: me.username,
subject: document.title,
tags: me.email,
identifier,
template
});
window.supervisor = supervisor;
};
document.head.appendChild(script);
})('demo.proctoring.app', 'default');
NOTE: you need to replace “demo.proctoring.app” with the address of your proctoring server in the code and “default” with your session template.
Click the “Update” button, then the “Save” button:
You should go to the “Ending screen” section. It is needed to add the “Embed Code” widget and to insert the following code:
supervisor.stop();
Click the “Update” button, then the “Save” button:
To connect the integration API with LearnWorlds LMS, you need to load the following configuration with integration parameters under the proctoring system manager:
JSON
{
"id": "<Host_ID>",
"key": "<License_Key>",
"params": {
"webhooks": {
"learnworlds": {
"authorizer": "plain",
"integrator": "generic",
"callbackURL": "query.redirect",
"profile": {
"username": "payload.username",
"nickname": "payload.nickname"
},
"register": {
"identifier": "payload.identifier",
"template": "payload.template",
"subject": "payload.subject",
"tags": "payload.tags"
}
}
}
}
}
NOTE: the field "id" is the ID of the host (if you do not specify it, a new host will be created); the field "key" is the license key of this host.