Подключение и методы
Для запуска 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
при размонтировании интерфейса прокторинга.