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

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

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

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

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

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

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

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

Начните с определения того, может ли пользователь создавать вложения-надстройки. Это можно сделать, отправив запрос к конечной точке userProfiles.checkUserCapability с параметром возможности CREATE_ADD_ON_ATTACHMENT . Проверьте поле boolean 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 , чтобы открыть контент на вашем сайте в новой вкладке.

Черновик задания по курсовой работе с материалом 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")}'
  )

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