如何使用 PHP 和 CURL 从 API 端点 POST 到多个 ID?
How can I POST to multiple IDs from an API endpoint using PHP and CURL?
我正在尝试 post 使用 PHP API 通过 Canvas 发送消息。
我认为这更像是一个 PHP 问题,而不是 Canvas。
当我为“收件人[]”包含一个用户 ID 时,以下代码有效(“79”是特定用户的想法,API 向他们发送消息 - 如电子邮件)。
请参阅下面的 API 文档和尝试 post 到多个 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
具体来说:
recipients[] Required
string
An array of recipient ids. These may be user ids or course/group ids prefixed with “course_” or “group_” respectively, e.g. recipients[]=1&recipients=2&recipients[]=course_3
API 要求为此 "array" 发送一个字符串(末尾的括号?)。您不能传递多个 "recipients" 字段,因为只有最后一个会记录 (duh)。
我认为解决方案可能与使用 http_build_query(参见 https://www.php.net/http_build_query)发送 complex/nested 数组有关,但我已经尝试了多种方法来将更多内容打包到 "recipients[]" 他们都失败了。
任何 PHP 或一般 API 智慧定义赞赏...
post 参数(特别是 "recipients")应该如下所示
$post = [
'recipients' => '59,48,19,55',
'group_conversation' => true,
'bulk_message' => true,
'subject' => $msg_subject,
'body' => $msg_body,
];
或者,也许是以下内容:'recipients' => [59,48,19,55]
。但是 recipients[]
将是一个奇怪的传递参数,因为它包含特殊字符。
我正在尝试 post 使用 PHP API 通过 Canvas 发送消息。
我认为这更像是一个 PHP 问题,而不是 Canvas。
当我为“收件人[]”包含一个用户 ID 时,以下代码有效(“79”是特定用户的想法,API 向他们发送消息 - 如电子邮件)。
请参阅下面的 API 文档和尝试 post 到多个 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
具体来说:
recipients[] Required
string
An array of recipient ids. These may be user ids or course/group ids prefixed with “course_” or “group_” respectively, e.g. recipients[]=1&recipients=2&recipients[]=course_3
API 要求为此 "array" 发送一个字符串(末尾的括号?)。您不能传递多个 "recipients" 字段,因为只有最后一个会记录 (duh)。
我认为解决方案可能与使用 http_build_query(参见 https://www.php.net/http_build_query)发送 complex/nested 数组有关,但我已经尝试了多种方法来将更多内容打包到 "recipients[]" 他们都失败了。
任何 PHP 或一般 API 智慧定义赞赏...
post 参数(特别是 "recipients")应该如下所示
$post = [
'recipients' => '59,48,19,55',
'group_conversation' => true,
'bulk_message' => true,
'subject' => $msg_subject,
'body' => $msg_body,
];
或者,也许是以下内容:'recipients' => [59,48,19,55]
。但是 recipients[]
将是一个奇怪的传递参数,因为它包含特殊字符。