本指南介绍了如何在网站或应用中创建插件附件。 这些互动类似于使用 CourseWork API 创建作业 endpoints。实现此历程,以允许用户创建插件附件 来自您的网站或应用
工作流程
概括来讲,附件创建过程遵循以下顺序:
- 教师用户打开您的网站或应用。他们会选择一段内容 分配给学生的作业。
- 检查用户是否可以创建插件附件。
- 如果用户无法创建插件附件,请创建 CourseWork 使用指向所选内容的网址作为链接材料。
- 如果用户可以创建插件附件,请执行以下操作:
<ph type="x-smartling-placeholder">
- </ph>
- 创建作业。
- 创建链接到所选内容的插件附件 并将其与新分配相关联。
- 通知教师该作业已成功创建。
以下各部分介绍了每项操作。
检查用户是否可以创建插件附件
您可以代表符合条件的用户创建插件附件。符合条件的 user 是您尝试创建的课程中的教师用户 包含“教学与学习版或教育 Plus 版 已向他们分配 Google Workspace 教育版许可。
首先,确定用户是否可以在给定的 Course
中创建插件。
向 courses.checkAddOnCreationEligibility
端点发出请求,
包括课程 ID
Python
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
并将用户选择的内容网址指定为 Link
。
Python
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 作业草稿。
符合条件的用户
如果用户可以创建插件附件,请执行以下操作。
- 创建一项不包含任何附件的新“
CourseWork
”作业。 - 创建插件附件。
- 将
AddOnAttachment
的itemId
设置为新创建的文件的id
分配。 - 确保为每个视图提供用户选择内容的网址 支持的资源。
- 将
Python
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")}'
)
该插件在 Google 课堂中显示为附件卡片。网址 并在相应 每个 View 的 iframe。