我在https://docs.microsoft.com/en-us/previous-versions/azure/reference/mt734910(v%3dazure.100)中找到了“直接批量发送”的示例,但是我不知道如何使用PHP。
我已成功通过PHP请求“直接发送” API。但是我不知道如何使用“直接批量发送” API
有“直接发送” API请求功能
public function sendNotification($notification, $tagsOrTagExpression="") {
if (is_array($tagsOrTagExpression)) {
$tagExpression = implode(" || ", $tagsOrTagExpression);
} else {
$tagExpression = $tagsOrTagExpression;
}
# build uri
$uri = $this->endpoint . $this->hubPath . "/messages" . NotificationHub::API_VERSION;
// $uri = $this->endpoint . $this->hubPath . "/messages/$batch?direct$" . NotificationHub::API_VERSION;
$ch = curl_init($uri);
if (in_array($notification->format, ["template", "apple", "gcm"])) {
$contentType = "application/json";
} else {
$contentType = "application/xml";
}
$token = $this->generateSasToken($uri);
$headers = [
'Authorization: '.$token,
'Content-Type: '.$contentType,
'ServiceBusNotification-Format: '.$notification->format
];
if ("" !== $tagExpression) {
$headers[] = 'ServiceBusNotification-Tags: '.$tagExpression;
}
# add headers for other platforms
if (is_array($notification->headers)) {
$headers = array_merge($headers, $notification->headers);
}
curl_setopt_array($ch, array(
CURLOPT_POST => TRUE,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POSTFIELDS => $notification->payload
));
// Send the request
$response = curl_exec($ch);
// Check for errors
if($response === FALSE){
throw new Exception(curl_error($ch));
}
$info = curl_getinfo($ch);
var_dump($info);
var_dump($response);
if ($info['http_code'] <> 201) {
throw new Exception('Error sending notification: '. $info['http_code'] . ' msg: ' . $response);
}
}