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

Canvas - интеграция с Canvas LMS для чтения курсов и заданий

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

ИсточникOptional - устанавливается через hermes skills install official/productivity/canvas
Путьoptional-skills/productivity/canvas
Версия1.0.0
Авторcommunity
ЛицензияMIT
ТегиCanvas, LMS, Education, Courses, Assignments

Ниже приведено полное определение навыка, которое Hermes загружает при его активации. Именно эти инструкции агент видит во время работы навыка.

Read-only доступ к Canvas LMS для просмотра курсов и заданий.

  • scripts/canvas_api.py - Python CLI для вызовов Canvas API
  1. Войдите в Canvas в браузере
  2. Откройте Account -> Settings
  3. Прокрутите до Approved Integrations и нажмите + New Access Token
  4. Назовите токен, при необходимости задайте срок действия и нажмите Generate Token
  5. Скопируйте токен и добавьте его в ~/.hermes/.env:
CANVAS_API_TOKEN=your_token_here
CANVAS_BASE_URL=https://yourschool.instructure.com

CANVAS_BASE_URL - это адрес, который вы видите в браузере после входа в Canvas, без завершающего /.

Окно терминала
CANVAS="python $HERMES_HOME/skills/productivity/canvas/scripts/canvas_api.py"
# Список всех активных курсов
$CANVAS list_courses --enrollment-state active
# Список всех курсов
$CANVAS list_courses
# Список заданий по конкретному курсу
$CANVAS list_assignments 12345
# Список заданий, отсортированный по due date
$CANVAS list_assignments 12345 --order-by due_at

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

[{"id": 12345, "name": "Intro to CS", "course_code": "CS101", "workflow_state": "available", "start_at": "...", "end_at": "..."}]

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

[{"id": 67890, "name": "Homework 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.

Окно терминала
# Список курсов
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 rate-limit около 700 запросов за 10 минут; при необходимости проверяйте X-Rate-Limit-Remaining
ProblemFix
401 UnauthorizedТокен неверный или истек - создайте новый в Canvas Settings
403 ForbiddenУ токена нет доступа к этому курсу
Empty course listПопробуйте --enrollment-state active или уберите флаг
Wrong institutionПроверьте, что CANVAS_BASE_URL совпадает с URL в браузере
Timeout errorsПроверьте доступность вашего Canvas instance