消息群發
微信的群發消息接口有各種亂七八糟的注意事項及限制,具體請閱讀 微信官方文檔。
發送消息
以下所有方法均有第二個參數 $to
用于指定接收對象:
- 當
$to
為整型時為標簽id
- 當
$to
為數組時為用戶的openid
列表(至少兩個用戶的openid
) - 當
$to
為null
時表示全部用戶
$officialAccount->broadcasting->sendMessage(\EasySwoole\WeChat\Kernel\Contracts\MessageInterface $message, array | int $to = null);
下面的別名方法 sendXXX
都是基于上面 sendMessage
方法的封裝。
文本消息
<?php
// 發送給全部用戶
$officialAccount->broadcasting->sendText("大家好!歡迎使用 EasySwoole WeChat。");
// 指定目標用戶
// 至少兩個用戶的 openid,必須是數組。
$officialAccount->broadcasting->sendText("大家好!歡迎使用 EasySwoole WeChat。", [$openid1, $openid2]);
// 指定標簽組用戶
$officialAccount->broadcasting->sendText("大家好!歡迎使用 EasySwoole WeChat。", $tagId); // $tagId 必須是整型數字
圖文消息
<?php
$officialAccount->broadcasting->sendNews($mediaId);
$officialAccount->broadcasting->sendNews($mediaId, [$openid1, $openid2]);
$officialAccount->broadcasting->sendNews($mediaId, $tagId);
圖片消息
<?php
$officialAccount->broadcasting->sendImage($mediaId);
$officialAccount->broadcasting->sendImage($mediaId, [$openid1, $openid2]);
$officialAccount->broadcasting->sendImage($mediaId, $tagId);
$mediaIds = [
'aaa',
'bbb',
'ccc'
];
$extraParams = [
'recomand' => 'xxx',
'need_open_comment' => 1,
'only_fans_can_comment' => 0
];
$officialAccount->broadcasting->sendImages($mediaIds, 2, [], $extraParams);
語音消息
<?php
$officialAccount->broadcasting->sendVoice($mediaId);
$officialAccount->broadcasting->sendVoice($mediaId, [$openid1, $openid2]);
$officialAccount->broadcasting->sendVoice($mediaId, $tagId);
視頻消息
用于群發的視頻消息,需要先創建消息對象。
<?php
// 1. 先上傳視頻素材用于群發:
$video = '/path/to/video.mp4';
$videoMedia = $officialAccount->material->uploadVideo($video, '視頻標題', '視頻描述');
// 結果如下:
//{
// "media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc",
// "url": "URL"
//}
// 2. 使用上面得到的 media_id 群發視頻消息
$officialAccount->broadcasting->sendVideo($videoMedia['media_id']);
// to tag
$officialAccount->broadcasting->sendVideo($videoMedia['media_id'], $tagId);
// to user
$officialAccount->broadcasting->sendVideo($videoMedia['media_id'], [$openid1, $openid2]);
卡券消息
<?php
$officialAccount->broadcasting->sendCard($cardId);
// to user
$officialAccount->broadcasting->sendCard($cardId, [$openid1, $openid2]);
// to tag
$officialAccount->broadcasting->sendCard($cardId, $tagId);
發送預覽群發消息給指定的 openId 用戶
<?php
$officialAccount->broadcasting->previewText($text, $openId);
$officialAccount->broadcasting->previewNews($mediaId, $openId);
$officialAccount->broadcasting->previewVoice($mediaId, $openId);
$officialAccount->broadcasting->previewImage($mediaId, $openId);
$officialAccount->broadcasting->previewVideo($mediaId, $openId);
$officialAccount->broadcasting->previewCard($cardId, $openId);
發送預覽群發消息給指定的微信號用戶
$wxanme 是用戶的微信號,比如:easyswoole
<?php
$officialAccount->broadcasting->previewText($text, $wxname, \EasySwoole\WeChat\OfficialAccount\Broadcasting\Client::PREVIEW_BY_NAME);
$officialAccount->broadcasting->previewNews($mediaId, $wxname, \EasySwoole\WeChat\OfficialAccount\Broadcasting\Client::PREVIEW_BY_NAME);
$officialAccount->broadcasting->previewVoice($mediaId, $wxname, \EasySwoole\WeChat\OfficialAccount\Broadcasting\Client::PREVIEW_BY_NAME);
$officialAccount->broadcasting->previewImage($mediaId, $wxname, \EasySwoole\WeChat\OfficialAccount\Broadcasting\Client::PREVIEW_BY_NAME);
$officialAccount->broadcasting->previewVideo($mediaId, $wxname, \EasySwoole\WeChat\OfficialAccount\Broadcasting\Client::PREVIEW_BY_NAME);
$officialAccount->broadcasting->previewCard($cardId, $wxname, \EasySwoole\WeChat\OfficialAccount\Broadcasting\Client::PREVIEW_BY_NAME);
刪除群發消息
<?php
$officialAccount->broadcasting->delete($msgId);
$officialAccount->broadcasting->delete($msgId, $index);
查詢群發消息發送狀態
$officialAccount->broadcasting->status($msgId);