我们开发了与 Microsoft Teams for Education 的集成,除了学生提交任务时的 Create educationSubmissionResource 调用之外,所有 API 调用都可以正常工作。
我们创建了一个作业,并将
allowStudentsToAddResourcesToSubmission
标志设置为 true,当学生提交作业时,我们执行以下代码:
$graph = new Microsoft\Graph\Graph();
$graph->setAccessToken($student->accessToken);
$submissionResource = new Microsoft\Graph\Model\EducationSubmissionResource();
$linkResource = new Microsoft\Graph\Model\EducationLinkResource();
$linkResource->setLink($link);
$linkResource->setDisplayName(mb_substr($title, 0, 100)); // as the maximum length is 100
$linkResource->setODataType('#microsoft.graph.educationLinkResource');
$submissionResource->setResource($linkResource);
$graph
->createRequest(
'POST',
"/education/classes/{$courseId}/assignments/{$courseWorkId}/submissions/{$submissionId}/resources"
)
->addHeaders(["Content-Type" => "application/json"])
->attachBody($submissionResource)
->execute();
响应始终相同(标识符被隐藏):
Client error: `POST https://graph.microsoft.com/v1.0/education/classes/[...]/assignments/[...]/submissions/[...]/resources` resulted in a `400 Bad Request` response:
{"error":{"code":"10017","message":"Bad Request.","innerError":{"date":"2023-11-29T15:14:35","request-id":"[...]","client-request-id":"[...]"}}}
但没有指出问题是什么。有没有人发现自己处于类似情况并有一些提示?
谢谢
好吧,经过几天的调查,问题似乎是每次学生完成任务时,我们都会向 Microsoft Teams 发送相同的链接资源,并且错误仅在第一次之后才会出现。
结论:如果您将相同的资源发送到已拥有该资源的提交,Teams 会响应错误。