Создавайте вложения за пределами Google Classroom

В этом руководстве рассматривается создание дополнительных вложений на вашем веб-сайте или в приложении. Взаимодействия аналогичны созданию заданий с использованием конечных точек API CourseWork . Реализуйте этот путь, чтобы пользователи могли создавать дополнительные вложения с вашего веб-сайта или приложения.

Рабочий процесс

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

  1. Пользователь-учитель открывает ваш веб-сайт или приложение. Они выбирают часть контента, чтобы поручить своим ученикам.
  2. Убедитесь, что пользователь может создавать дополнительные вложения .
  3. Если пользователь не может создавать дополнительные вложения, создайте задание CourseWork с URL-адресом выбранного контента в качестве материала ссылки.
  4. Если пользователь может создавать дополнительные вложения, выполните следующие действия:
    1. Создайте задание.
    2. Создайте дополнительное вложение, которое ссылается на выбранный контент, и свяжите его с новым заданием.
    3. Сообщите учителю, что задание создано успешно.

Каждое действие описано в следующих разделах.

Проверьте, может ли пользователь создавать дополнительные вложения

Вы можете создавать дополнительные вложения от имени соответствующего пользователя. Подходящим пользователем является пользователь, который является преподавателем курса, в котором вы пытаетесь создать задания CourseWork , и которому назначена лицензия на выпуск Teaching & Learning или Education Plus Google Workspace for Education.

Начните с определения того, может ли пользователь создавать дополнения в данном Course . Отправьте запрос к конечной точке courses.checkAddOnCreationEligibility , включая идентификатор курса.

Питон

eligibility_response = (
  classroom_service.courses()
  .checkAddOnCreationEligibility(courseId=course_id)
  .execute()
)
is_create_attachment_eligible = (
  eligibility_response.get('isCreateAttachmentEligible')
)
print(f'User eligibility for course {eligibility_response.get("courseId")}'
      f': {is_create_attachment_eligible}.')

Если пользователь имеет право, ответ содержит логическое значение isCreateAttachmentEligible , для которого установлено значение true . Если пользователь не соответствует критериям, ответ не вернет логическое значение isCreateAttachmentEligible .

Маршрутизация пользователя в зависимости от его соответствия критериям

Право на участие определяет, можете ли вы создавать дополнительные вложения для пользователя.

Неподходящий пользователь

Если пользователь не может создавать дополнительные вложения, создайте новое задание CourseWork с URL-адресом выбранного пользователем контента в качестве Link .

Питон

if not is_create_attachment_eligible:
  coursework = {
    'title': 'My CourseWork Assignment with Link Material',
    'description': 'Created using the Classroom CourseWork API.',
    'workType': 'ASSIGNMENT',
    'state': 'DRAFT',  # Set to 'PUBLISHED' to assign to students.
    'maxPoints': 100,
    'materials': [
      {'link': {'url': my_content_url}}
    ]
  }

  assignment = (
    service.courses()
    .courseWork()
    .create(courseId=course_id, body=coursework)
    .execute()
  )

  print(
    f'Link Material assignment created with ID: {assignment.get("id")}'
  )

Ответ содержит задание по запрошенному курсу с прикрепленным содержимым. Пользователи могут щелкнуть Link , чтобы открыть содержимое вашего сайта в новой вкладке.

Черновик задания курсовой работы со ссылками на материалы

Рис. 1. Представление преподавателя черновика задания CourseWork со ссылкой на материал.

Соответствующий пользователь

Выполните следующие действия, если пользователь может создавать дополнительные вложения.

  1. Создайте новое задание CourseWork без вложений.
  2. Создайте дополнительное вложение.

Питон

if is_create_attachment_eligible:
  coursework = {
    'title': 'My CourseWork Assignment with Add-on Attachment',
    'description': 'Created using the Classroom CourseWork API.',
    'workType': 'ASSIGNMENT',
    'state': 'DRAFT',  # Set to 'PUBLISHED' to assign to students.
    'maxPoints': 100,
  }

  assignment = (
    classroom_service.courses()
    .courseWork()
    .create(courseId=course_id, body=coursework)
    .execute()
  )

  print(
    f'Empty assignment created with ID: {assignment.get("id")}'
  )

  attachment = {
    'teacherViewUri': {'uri': teacher_view_url},
    'studentViewUri': {'uri': student_view_url},
    'studentWorkReviewUri': {'uri': grade_student_work_url},
    'title': f'Test Attachment {test_label}',
  }

  add_on_attachment = (
    service.courses()
    .courseWork()
    .addOnAttachments()
    .create(
      courseId=course_id,
      itemId=assignment.get("id"),  # ID of the new assignment.
      body=attachment,
    )
    .execute()
  )

  print(
    f'Add-on attachment created with ID: {add_on_attachment.get("id")}'
  )

Дополнение отображается в виде карточки приложения в Классе. URL-адреса, указанные в запросе, открываются в соответствующем iframe для каждого представления .