# 消息群發
微信為訂閱號提供了每天一條的群發權限,為服務號提供每月(自然月)4條的群發權限。
開發者可以使用預覽接口校對消息樣式和排版,通過預覽接口可發送編輯好的消息給指定用戶校驗效果。
本接口中所有使用到media_id的地方,現在都可以使用素材管理中的永久素材media_id了。
[TOC]
## 消息預覽
下面演示是圖文消息的預覽,如果想發送圖片等消息預覽,開發者可以查看微信官方文檔的數據結構。
```
$data = [
"touser" => "oGiQGuMR-fR_WeD6gLRKnqgMxYGo",
"mpnews" => [
"media_id" => "vwkQqqBXrV7ND7wUu-tCnL4Lb6Zqb-MymQA7dZbt4rU",
],
"msgtype" => "mpnews",
];
//消息管理模塊
$instance = new Message;
$instance->preview($data);
```
## 群發消息
群發是將已經上傳到微信的素材發送給粉絲,所以需要先行上傳素材。
```
$data = [
"filter" => [
"is_to_all" => true,
],
"mpnews" => [
"media_id" => "vwkQqqBXrV7ND7wUu-tCnL4Lb6Zqb-MymQA7dZbt4rU",
],
"msgtype" => "mpnews",
"send_ignore_reprint" => 0,
];
$res = (new Message)->sendAll($data);
```
## 刪除群發
群發之后,隨時可以通過該接口刪除群發。只有已經發送成功的消息才能刪除,刪除群發消息只能刪除圖文消息和視頻消息,其他類型的消息一經發送,無法刪除。
```
$data = [
//群發消息的編號
"msg_id":30124
];
(new Message)>delMassMessage($data);
```
**返回說明**
```
[
"errcode"=>0,
"errmsg"=>"ok"
]
```
## 查詢群發消息發送狀態
```
$data = [
//群發消息的編號
"msg_id":30124
];
(new Message)->getMassMessageState($data);
```
**返回狀態**
```
[
"msg_id"=>201053012,
"msg_status"=>"SEND_SUCCESS"
]
```
## 事件推送群發結果
由于群發任務提交后,群發任務可能在一定時間后才完成,因此,群發接口調用時,僅會給出群發任務是否提交成功的提示,若群發任務提交成功,則在群發任務結束時,會向開發者在公眾平臺填寫的開發者URL(callback URL)推送事件。
需要注意,由于群發任務徹底完成需要較長時間,將會在群發任務即將完成的時候,就推送群發結果,此時的推送人數數據將會與實際情形存在一定誤差。
```
//判斷是否是群發消息推送事件
if ($instance->isMassMessage())
{
//執行處理代碼...
}
```