我正在尝试使用 PHP 通过 Canvas API 发布消息。
我相信这比 Canvas 更像是一个 PHP 问题。
当我为“recipients[]”包含单个用户 ID(“79”是一个特定的用户想法并且 API 向他们发送一条消息 - 如电子邮件)时,以下代码有效。
有关 API 文档和尝试发布到多个 ID 的问题,请参见下文。
$post = [
'recipients[]' => 79,
'group_conversation' => true,
'bulk_message' => true,
'subject'=>$msg_subject,
'body'=>$msg_body,
];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $token_url,
CURLOPT_HTTPHEADER => $header,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $post,
CURLOPT_RETURNTRANSFER => true
));
$lti_msgresponse = curl_exec($curl);
curl_close($curl);
echo($lti_msgresponse);
这是 Canvas 文档: https ://edu.pretpriemacedu.mk/doc/api/conversations.html#method.conversations.create
具体来说:
收件人[] 必需的
字符串
收件人 ID 的数组。这些可能是分别以“course_”或“group_”为前缀的用户 ID 或课程/组 ID,例如收件人[]=1&recipients=2&recipients[]=course_3
API 要求为这个“数组”发送一个字符串(最后的括号?)。您不能传递多个“收件人”字段,因为只有最后一个会记录(duh)。
我认为解决方案可能与使用 http_build_query (请参阅https://www.php.net/http_build_query)发送复杂/嵌套数组有关,但我尝试了各种方法将更多内容打包到“recipients []”中,他们都失败了。
任何 PHP 或一般 API 智慧都值得赞赏......