Перейти к содержимому
Все материалыБИБЛИОТЕКА TRUSTEXAM

Интеграция TrustExam с Moodle, Canvas и собственной LMS

Серверный API, клиентский SDK, вебхуки и отчёты: как подключить прокторинг к существующему экзаменационному процессу.

Если экзамены уже проходят в LMS или собственном портале, интеграция позволяет сохранить вашу платформу основным интерфейсом, а прокторинг TrustExam подключить к экзаменационному процессу. Серверный API создаёт сессию и возвращает токен, клиентский SDK встраивает прокторинг в страницу экзамена, а вебхуки и ИИ-отчёты передают результаты обратно.

1) Что означает интеграция на практике

Обычно команда не хочет переносить материалы, заново создавать экзамены или отправлять участников на отдельный портал. При интеграции:

  • Ваша LMS управляет входом, правилами, вопросами, таймерами, оценками и попытками.

  • TrustExam выполняет прокторинг: работа с камерой, демонстрацией экрана и звуком, проверка личности, сбор материалов и анализ событий.

  • Результаты возвращаются в вашу систему через report_url, вебхуки и API ИИ-отчёта о попытке.

Этот подход используется для Moodle, Canvas, собственных LMS, государственных порталов и веб-систем тестирования, способных обращаться к API и загружать JavaScript.

2) Два уровня интеграции: сервер и клиент

Уровень A: взаимодействие между серверами

Ваш сервер регистрирует экзамен — assignment с определением и настройками, участника — student, а при необходимости и метаданные попытки.

В ответ TrustExam возвращает:

  • external_session.token — токен для клиентского SDK;

  • report_url — прямую ссылку на отчёт о попытке в интерфейсе TrustExam.

Уровень B: браузер участника

Страница экзамена загружает SDK прокторинга, инициализирует его токеном и запускает или завершает попытку из вашего интерфейса.

3) Серверный API: создание сессии и получение токена

Адрес и авторизация

Для создания внешней сессии используется:

POST https://api.trustexam.ai/api/external-session/assignment.json?api_token=YOUR_API_TOKEN

Токен также можно передать в заголовке X-Authorization: YOUR_API_TOKEN.

Какие данные ответа сохранять

Сохраните external_session.token и report_url вместе с записью попытки. Так административный интерфейс сможет открыть отчёт, а клиентская часть — инициализировать прокторинг.

Структура JSON-запроса

Минимальный запрос включает следующие объекты и поля:

  1. assignment — обязательный объект экзамена:

    • assignment.external_id — уникальный идентификатор экзамена в вашей системе;

    • assignment.name — название;

    • assignment.settings — настройки прокторинга и вебхуков.

  2. student — обязательный объект участника:

    • student.external_id — уникальный идентификатор пользователя;

    • student.name — имя;

    • student.email — электронная почта, рекомендуется.

  3. application — обязательный тип приложения: "browser" по умолчанию, "tray" или "desktop".

  4. session_data — необязательные данные. session_data.external_id содержит внутренний идентификатор попытки и помогает сопоставлять вебхуки и отчёты.

Как сопоставить данные с LMS

  • Тест или задание в Moodle/Canvas соответствует assignment.external_id.

  • Запись пользователя — student.external_id.

  • Экзаменационная попытка — session_data.external_id.

Постоянные идентификаторы позволяют обновлять настройки без создания дубликатов: при повторной передаче тех же assignment.external_id и student.external_id TrustExam обновляет соответствующие записи.

4) Клиентский SDK: прокторинг на странице экзамена

Загрузка SDK

Добавьте скрипт TrustExam на экзаменационную страницу:

<script src="https://cdn.trustexam.ai/extension/app.js"></script>
<script src="https://cdn.trustexam.ai/extension/app.js"></script>
<script src="https://cdn.trustexam.ai/extension/app.js"></script>
<script src="https://cdn.trustexam.ai/extension/app.js"></script>

Инициализация в контейнере

Интерфейс прокторинга размещается в контейнере, например .wrapper. Передайте токен, полученный от серверного API:

Proctoring.initialize('.wrapper', {
  language: 'en',
  token: 'external_session.token from backend API response',
  onMounted: function () {},
  onConfigured: function () {},
  onStarted: function () {},
  onFinished: function () {},
  onAction: function (action) {},
  onError: function (error) {}
});
Proctoring.initialize('.wrapper', {
  language: 'en',
  token: 'external_session.token from backend API response',
  onMounted: function () {},
  onConfigured: function () {},
  onStarted: function () {},
  onFinished: function () {},
  onAction: function (action) {},
  onError: function (error) {}
});
Proctoring.initialize('.wrapper', {
  language: 'en',
  token: 'external_session.token from backend API response',
  onMounted: function () {},
  onConfigured: function () {},
  onStarted: function () {},
  onFinished: function () {},
  onAction: function (action) {},
  onError: function (error) {}
});
Proctoring.initialize('.wrapper', {
  language: 'en',
  token: 'external_session.token from backend API response',
  onMounted: function () {},
  onConfigured: function () {},
  onStarted: function () {},
  onFinished: function () {},
  onAction: function (action) {},
  onError: function (error) {}
});

Основные параметры:

  • selector — место размещения интерфейса;

  • language"en", "ru" или "kz";

  • token — значение external_session.token.

Запуск и завершение попытки

Основные методы вызываются из вашего интерфейса:

await Proctoring.start();   // start attempt
await Proctoring.finish();  // finish attempt on submit
await Proctoring.start();   // start attempt
await Proctoring.finish();  // finish attempt on submit
await Proctoring.start();   // start attempt
await Proctoring.finish();  // finish attempt on submit
await Proctoring.start();   // start attempt
await Proctoring.finish();  // finish attempt on submit

Дополнительные методы Proctoring.isFinished() и Proctoring.isCanStartNewAttempt() полезны для процессов с ограничением числа попыток, повторным запуском или возобновлением.

5) ContentProtect: защита заданий в браузере

Для защиты от утечки содержимого через снимки экрана, запись или удалённый доступ SDK поддерживает ContentProtect:

  • На сервере задайте content_protect: true в assignment.settings.proctoring_settings.

  • На клиенте передайте protector при инициализации, указав защищаемый элемент.

Proctoring.initialize('.wrapper', {
  token: 'external_session.token',
  protector: { match: '.question-wrapper', textColor: '#000' }
});
Proctoring.initialize('.wrapper', {
  token: 'external_session.token',
  protector: { match: '.question-wrapper', textColor: '#000' }
});
Proctoring.initialize('.wrapper', {
  token: 'external_session.token',
  protector: { match: '.question-wrapper', textColor: '#000' }
});
Proctoring.initialize('.wrapper', {
  token: 'external_session.token',
  protector: { match: '.question-wrapper', textColor: '#000' }
});

ContentProtect ограничивает поддерживаемые способы захвата в выбранном режиме. Подтвердите браузерную или настольную конфигурацию и проверьте разрешённые инструменты. Защита не гарантирует блокирование любого захвата, программы удалённого доступа или внешней камеры.

6) Вебхуки и ИИ-отчёты: возврат результатов в LMS

Уведомления о начале и завершении

При настройке assignment.settings.webhook TrustExam отправляет HTTP POST при запуске и завершении экзамена:

  • webhook.start_url — экзамен начат;

  • webhook.finish_url — экзамен завершён.

Вебхуки содержат идентификаторы попытки, включая переданный session_data.external_id, статус, отметки времени, основные метаданные и дополнительные поля из webhook.post, webhook.query и webhook.headers.

Это позволяет синхронизировать статус прокторинга с журналом оценок, запускать разбор событий и уведомлять преподавателей, координаторов или кадровые системы.

Ссылка report_url для администраторов и проверяющих

Поле report_url из серверного ответа открывает отчёт о попытке в TrustExam. Ссылку можно включить в кабинет преподавателя, административную панель аудита или процесс рассмотрения апелляций.

API ИИ-отчёта о попытке

Для структурированных результатов, аналитических панелей и автоматизации используется:

GET https://trust-rating.trustexam.ai/api/v1/actions/reports/ai/ATTEMPT_ID?api_token=API_KEY

Документация описывает общую оценку риска, перечень событий, требующих проверки, хронологию подозрительных событий и рекомендации по ручной проверке.

Эти данные помогают расставлять приоритеты при больших объёмах. Они не должны превращать прокторинг в автоматическое наказание: сохраните контроль человека в регламенте экзамена.

7) Какие настройки нужно согласовать заранее

Неопределённые правила могут создать проблемы даже при технически корректной интеграции. Ниже — параметры из справочника TrustExam, важные для планирования.

Камеры и экран

Передача сигнала и загрузка записей настраиваются раздельно:

  • main_camera_record — по умолчанию true; main_camera_upload — false.

  • second_camera_record — true; second_camera_upload — false.

  • screen_share_record — true; screen_share_upload — false.

Параметры Record относятся к сигналам наблюдения в реальном времени, Upload — к сохранению материалов и объёму хранилища.

Идентификация

  • photo_head_identity — 0: выключено, 1: включено;

  • video_head_identity — проверка личности по видео на протяжении сессии;

  • id_verification — получение изображения документа.

Это основной уровень защиты от подмены участника и источник материалов для рассмотрения апелляций.

Звук и второй микрофон

  • noise_detector, speech_detector;

  • second_microphone_record / second_microphone_upload;

  • second_microphone_label — регулярное выражение для разрешённых названий устройств.

Правила записи звука зависят от страны и организации. До включения загрузки согласуйте информирование участников, согласия и сроки хранения.

Отслеживание головы, лица и объектов

Настройки определяют чувствительность, интервалы сравнения и место анализа — на клиенте или сервере:

  • head_tracking_client;

  • head_tracking_server, head_tracking_server_post, head_tracking_server_realtime;

  • object_detect и соответствующие пороги и категории;

  • face_landmarker — отслеживание глаз и направления взгляда.

Используйте результаты как сигналы риска, а не единственный источник истины. Пороговые значения должны соответствовать формату: требования к лицензионному экзамену и тренировочному тесту могут различаться.

Дополнительные меры

  • proctoring_mobile_restrict — запрет экзамена на мобильных устройствах;

  • proctoring_fallback_allow — разрешение запуска при недоступности отдельных функций;

  • тайм-ауты подключения и инициализации.

Эти параметры определяют поведение при частичном отказе. Для ответственных экзаменов могут потребоваться более строгие условия допуска.

8) Рекомендуемая последовательность взаимодействия

  1. Сервер LMS создаёт внешнюю сессию TrustExam незадолго до экзамена.

  2. Он сохраняет external_session.token, report_url и внутренний идентификатор попытки в session_data.external_id.

  3. Страница экзамена загружает SDK и инициализирует его токеном.

  4. При нажатии «Начать» интерфейс вызывает Proctoring.start().

  5. При отправке результатов — Proctoring.finish().

  6. TrustExam обращается к finish_url и передаёт метаданные попытки.

  7. Ваш сервер получает ссылку report_url для администраторов и при необходимости ИИ-отчёт через API для аналитики и распределения проверок.

9) Планирование внедрения

Этап 1: техническая интеграция

  • Создание сессии на сервере: assignment, student, application и необязательный session_data.

  • Подключение SDK на клиенте, запуск и завершение.

  • Обработка ошибок и повторные попытки: тайм-ауты, разрешения пользователя.

Этап 2: правила и управление

  • Согласия и уведомления о конфиденциальности.

  • Сроки хранения и доступ к видео, экрану и звуку.

  • Апелляции: кто просматривает отчёты и принимает решения.

Этап 3: масштабирование и эксплуатация

  • Вебхуки в процессе выставления оценок.

  • ИИ-отчёты для определения приоритетов проверки.

  • Наблюдение за доставкой вебхуков, жизненным циклом токенов и частотой ошибок.

10) Типичные ошибки интеграции

  1. Токен создан слишком рано. Создавайте сессию ближе к началу экзамена и храните токены безопасно.

  2. Нет постоянных идентификаторов. Используйте стабильные assignment.external_id и student.external_id: повторная передача обновляет записи.

  3. Неясные правила прокторинга. Определите действия при отказе камеры, запрете демонстрации экрана или недоступном звуке. Осознанно настройте proctoring_fallback_allow.

  4. Результаты не возвращаются в LMS. Без вебхуков сотрудникам приходится проверять отдельный интерфейс. Сразу настройте start_url и finish_url.

  5. Слишком строгие настройки для тренировочных тестов. Начните с умеренных требований и уточняйте их с учётом наблюдаемых событий и числа апелляций.

11) Роль TrustExam.ai

Если Moodle, Canvas или собственная LMS должны оставаться основным интерфейсом экзамена, модель интеграции TrustExam предусматривает выдачу токена сервером, встраивание на клиенте, процессы на основе вебхуков и отчёты для проверки.

Для выбора конфигурации сообщите тип LMS, виды экзаменов — промежуточные, вступительные, олимпиады или сертификация — и обязательные требования программы. Это поможет согласовать идентификацию, работу с экраном и звуком, хранение материалов и нагрузку на проверяющих.

Подтвердите выбранную конфигурацию

Этапы выше задают порядок подготовки, а не обещанный срок внедрения. До реализации подтвердите актуальные версии API и SDK, авторизацию, устройства и доступные проверки с технической командой. Секреты серверной интеграции храните на сервере; согласуйте срок токенов, обработку журналов и восстановление после ошибок. Если нужен поиск микронаушников, подтвердите специальное оборудование и его подключение: разрешение на обычный микрофон не означает наличия такой функции.

Практические руководства

ОБСУДИМ ВАШ ЭКЗАМЕН

Обсудим, как это будет работать у вас.

Запросить демо