Перейти к основному содержимому

Canvas

Интеграция с Canvas LMS — получение списка курсов и заданий с аутентификацией по API-токену.

Метаданные навыка​

ИсточникОпционально — установка через vibeos skills install official/productivity/canvas
Путьoptional-skills/productivity/canvas
Версия1.0.0
Авторcommunity
ЛицензияMIT
Платформыlinux, macos, windows
ТегиCanvas, LMS, Образование, Курсы, Задания

Справочник: полный SKILL.md​

к сведению

Ниже приведено полное описание навыка, которое VibeOS загружает при его активации. Агент видит эти инструкции, когда навык активен.

Canvas LMS — Доступ к курсам и заданиям

Доступ только для чтения к Canvas LMS для просмотра курсов и заданий.

Скрипты​

  • scripts/canvas_api.py — Python CLI для вызовов Canvas API

Настройка​

  1. Войдите в свой экземпляр Canvas через браузер
  2. Перейдите в Аккаунт → Настройки (нажмите на иконку профиля, затем «Настройки»)
  3. Прокрутите до раздела Утверждённые интеграции и нажмите + Новый токен доступа
  4. Дайте токену имя (например, «VibeOS»), установите необязательный срок действия и нажмите Сгенерировать токен
  5. Скопируйте токен и добавьте в ${VIBEOS_HOME:-~/.vibeos}/.env:
CANVAS_API_TOKEN=ваш_токен_здесь
CANVAS_BASE_URL=https://вашашкола.instructure.com

Базовый URL — это адрес, который отображается в браузере при входе в Canvas (без завершающего слеша).

Использование​

CANVAS="python $VIBEOS_HOME/skills/productivity/canvas/scripts/canvas_api.py"

# Список всех активных курсов
$CANVAS list_courses --enrollment-state active

# Список всех курсов (любое состояние)
$CANVAS list_courses

# Список заданий для конкретного курса
$CANVAS list_assignments 12345

# Список заданий, отсортированных по дате выполнения
$CANVAS list_assignments 12345 --order-by due_at

Формат вывода​

list_courses возвращает:

[{"id": 12345, "name": "Введение в CS", "course_code": "CS101", "workflow_state": "available", "start_at": "...", "end_at": "..."}]

list_assignments возвращает:

[{"id": 67890, "name": "Домашнее задание 1", "due_at": "2025-02-15T23:59:00Z", "points_possible": 100, "submission_types": ["online_upload"], "html_url": "...", "description": "...", "course_id": 12345}]

Примечание: Описания заданий обрезаются до 500 символов. Поле html_url ведёт на полную страницу задания в Canvas.

Справочник по API (curl)​

# Список курсов
curl -s -H "Authorization: Bearer $CANVAS_API_TOKEN" \
"$CANVAS_BASE_URL/api/v1/courses?enrollment_state=active&per_page=10"

# Список заданий для курса
curl -s -H "Authorization: Bearer $CANVAS_API_TOKEN" \
"$CANVAS_BASE_URL/api/v1/courses/COURSE_ID/assignments?per_page=10&order_by=due_at"

Canvas использует заголовки Link для пагинации. Python-скрипт обрабатывает пагинацию автоматически.

Правила​

  • Этот навык только для чтения — он только получает данные, никогда не изменяет курсы или задания
  • При первом использовании проверьте аутентификацию, запустив $CANVAS list_courses — если ошибка 401, проведите пользователя через настройку
  • Canvas ограничивает количество запросов до ~700 за 10 минут; при достижении лимитов проверяйте заголовок X-Rate-Limit-Remaining

Устранение неполадок​

ПроблемаРешение
401 UnauthorizedТокен недействителен или истёк — создайте новый в настройках Canvas
403 ForbiddenУ токена нет прав на этот курс
Пустой список курсовПопробуйте --enrollment-state active или опустите флаг, чтобы увидеть все состояния
Неправильное учебное заведениеУбедитесь, что CANVAS_BASE_URL совпадает с URL в вашем браузере
Ошибки тайм-аутаПроверьте сетевое подключение к вашему экземпляру Canvas