Подключение и методы
Для запуска SDK необходимы три параметра: serverOrigin, integrationName и secret для подписи JWT. Получить их можно у Службы заботы Экзамус, либо через представителя.
Необходимо сгенерировать JWT на стороне LMS. Этот токен должен содержать ссылку на тест и другую информацию о тестировании и настройках прокторинга (читайте статью «Генерация JWT»).
Подключение SDK
<script src="https://sdk.examus.net/stable/proctoring.global.js"></script>Proctoring, необходимую для инициализации приложения.Пример использования глобальной сборки
<script src="https://sdk.examus.net/stable/proctoring.global.js"></script>
<script>
// Создаем экземпляр приложения с собственным API. Подробнее смотрите ниже в разделе «API».
const session = Proctoring({
supportChat: true
});
// Задаём действие при старте тестирования.
session.onExamStart(() => {
// Здесь можно скрыть начальные элементы DOM и показать контент тестирования,
// например:
// hideInitialDom();
// showExamContent();
});
// Задаём действие при завершении тестирования.
session.onExamStop(() => {
// Здесь можно скрыть контент тестирования после завершения, например:
// hideExamContent();
});
// Запускаем интерфейс прокторинга. Метод возвращает Promise,
// который выполняется (resolves) после успешного монтирования интерфейса на страницу
// и отклоняется (rejects), если по какой-то причине невозможно начать сессию.
session.start({serverOrigin, integrationName, jwt})
.then(() => {
// Здесь можно обработать успешный запуск, например:
// console.log('Proctoring UI mounted successfully');
})
.catch((error) => {
// Здесь можно обработать ошибки, если запуск не удался.
// console.error('Proctoring failed to start:', error);
});
// Позволяет системе прокторинга автоматически восстанавливать последнюю сессию
// после перезагрузки страницы. Метод необходим для контроля и приоритизации между
// `start()` и `resume()`, например, если запуск новой сессии важнее возобновления предыдущей.
// Возвращает такой же Promise, как и `start()`.
session.resume();
// Отправляет сообщение о завершении сессии, а затем завершает сеанс прокторинга.
// session.stop();
</script>
Использование сборки в виде ES-модуля
Большинство современных браузеров поддерживают ES-модули, поэтому можно подключать SDK с сервера как нативный ES-модуль:
<script type="module">
import Proctoring from 'https://sdk.examus.net/stable/proctoring.js'
const session = Proctoring({
supportChat: true
});
// ...
</script>Обратите внимание, что используется <script type="module">, а URL указывает на сборку в виде ES-модуля: https://sdk.examus.net/stable/proctoring.js.
API
Proctoring(options)
Функция-конструктор. Создает экземпляр приложения. Аргументом принимает параметры, для тонкой настройки (читайте статью Настройка).
Type
interface StartParams {
serverOrigin: string
integrationName: string
jwt: string
}
interface ProctoringInstance {
start: (startParams: StartParams) => Promise<void>
stop: () => Promise<void>
resume: () => Promise<void>
// Методы жизненного цикла:
onAppStart: (handler: (session?: Session) => void) => void
onProctoringStart: (handler: () => void) => void
onExamStart: (handler: (examURL: string) => void) => void
onExamStop: (handler: () => void) => void
onVideoUploaded: (handler: () => void) => void
onProctoringStop: (handler: (leaveURL?: string) => void) => void
onAppStop: (handler: () => void) => void
}Пример
const session = Proctoring({
supportChat: true
});start(startParams)
Запускает интерфейс прокторинга и возвращает Promise, который резолвится после полного монтирования интерфейса в DOM.
Пример
session.start({serverOrigin, integrationName, jwt})
.then(() => {
// Здесь можно обработать успешный запуск, например:
// console.log('Proctoring UI mounted successfully');
})
.catch((error) => {
// Здесь можно обработать ошибки, если запуск не удался.
// console.error('Proctoring failed to start:', error);
});resume()
Позволяет приложению попытаться восстановить сессию после перезагрузки страницы.
stop()
Отправляет на сервер сообщение о завершении тестирования, а после подтверждения со стороны сервера завершает прокторинг.
События жизненного цикла
Экземпляр приложения имеет методы для подписки на события жизненного цикла. Каждый из них принимает в качестве аргумента функцию-обработчик. С их помощью можно контролировать интерфейс тестирования: например, скрывать вопросы до полного запуска прокторинга или показывать страницу с результатами после его завершения.
onAppStart(callback)
Вызывает callback при запуске приложения. В callback передаётся объект сессии, если сессия найдена и все еще актуальна.
Обратите внимание: Это событие и onAppStop() вызываются каждый раз, когда SDK монтирует или размонтирует интерфейс, включая экраны ошибок, часть из которых не предполагают дальнейшего прохождения тестирования. Соответственно, существуют сценарии, когда будут вызваны только эти два события, а события прокторинга и тестирования будут пропущены.
Пример
let sessionData
session.onAppStart((data) => sessionData = data)onProctoringStart(callback)
Вызывает callback, когда приложение получило все разрешения, прошло проверки и трансляция видео успешно запущена (как правило, сразу после этапа проверки оборудования). Аргументы в callback не передаются.
onExamStart(callback)
Вызывает callback, когда приложение или проктор разрешает пользователю начать тестирование. Аргументом передаётся ссылка на тестирование.
onExamStop(callback)
Вызывает callback, когда тестирование завершено по той или иной причине (как со стороны пользователя, так и со стороны сервера). Аргументы в callback не передаются. На этом этапе можно скрыть содержимое тестирования, однако, если требуется перенаправление на другую страницу, следует выполнить его по событию onProctoringStop.
onVideoUploaded(callback)
Вызывает callback когда все части видео были отправлены. Аргументы не передаются.
onProctoringStop(callback)
Вызывает callback, когда все данные были отправлены на сервер и все процессы приложения завершены. На этом этапе можно безопасно перенаправлять пользователя на другую страницу или перезагружать текущую. Опционально в callback передается ссылка для перенаправления, указанная в параметрах тестирования или при генерации JWT.
onAppStop(callback)
Вызывает callback при размонтировании интерфейса прокторинга.