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

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

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

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

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

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

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

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

Начните с определения того, может ли пользователь создавать дополнения. Это можно сделать, отправив запрос к конечной точке userProfiles.checkUserCapability с параметром разрешения CREATE_ADD_ON_ATTACHMENT . Проверьте логическое значение поля allowed в ответе; значение true указывает, что пользователь может создавать дополнения.

Питон

eligibility_response = (
  classroom_service.userProfiles()
  .checkUserCapability(
    userId="me",
    capability="CREATE_ADD_ON_ATTACHMENT",
    # The previewVersion is necessary while the method is available in the
    # Workspace Developer Preview Program.
    previewVersion="V1_20240930_PREVIEW",
  ).execute()
)
is_create_attachment_eligible = (
  eligibility_response.get('allowed')
)
print('User eligibility for add-on attachment creation: '
      f'{is_create_attachment_eligible}.')

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

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

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

Если пользователь не может создавать дополнительные вложения, создайте новое задание 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 с использованием Link Material в представлении преподавателя.

Соответствующий требованиям пользователь

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

  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")}'
  )

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