|
|
|
@ -1,15 +1,25 @@
|
|
|
|
|
<?php
|
|
|
|
|
namespace LaneWeChat\Core; // 定义命名空间,表明这个类属于LaneWeChat模块的核心部分
|
|
|
|
|
namespace LaneWeChat\Core; // 定义命名空间为 LaneWeChat\Core,表示该类属于 LaneWeChat 模块的核心部分
|
|
|
|
|
|
|
|
|
|
class AdvancedBroadcast{ // 定义一个名为AdvancedBroadcast的类,用于高级群发功能
|
|
|
|
|
/**
|
|
|
|
|
* 高级群发功能类
|
|
|
|
|
*
|
|
|
|
|
* 该类提供了多种高级群发功能,包括上传图文消息、根据分组ID群发图文、文本、语音、图片和视频消息等。
|
|
|
|
|
*/
|
|
|
|
|
class AdvancedBroadcast {
|
|
|
|
|
|
|
|
|
|
// 上传图文消息到微信服务器
|
|
|
|
|
public static function uploadNews($articles){
|
|
|
|
|
/**
|
|
|
|
|
* 上传图文消息到微信服务器
|
|
|
|
|
*
|
|
|
|
|
* @param array $articles 图文消息数组,包含多篇文章的相关信息
|
|
|
|
|
* @return string|bool 返回上传成功后的media_id,或在失败时返回false
|
|
|
|
|
*/
|
|
|
|
|
public static function uploadNews($articles) {
|
|
|
|
|
// 构建请求URL,包含access_token,使用AccessToken类的getAccessToken方法获取
|
|
|
|
|
$queryUrl = 'https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=' . AccessToken::getAccessToken();
|
|
|
|
|
$queryAction = 'POST'; // 请求方式为POST
|
|
|
|
|
// 遍历文章数组,对每个文章的字段进行URL编码,以确保特殊字符不会影响请求
|
|
|
|
|
foreach($articles as &$article){
|
|
|
|
|
foreach ($articles as &$article) {
|
|
|
|
|
$article['author'] = urlencode($article['author']);
|
|
|
|
|
$article['title'] = urlencode($article['title']);
|
|
|
|
|
$article['content'] = urlencode($article['content']);
|
|
|
|
@ -18,16 +28,21 @@ class AdvancedBroadcast{ // 定义一个名为AdvancedBroadcast的类,用于
|
|
|
|
|
$template = array(); // 创建模板数组
|
|
|
|
|
$template['articles'] = $articles; // 将编码后的文章数组赋值给模板的articles字段
|
|
|
|
|
$template = json_encode($template); // 将模板数组转换为JSON字符串
|
|
|
|
|
// 对JSON字符串进行URL解码(这一步可能是多余的,因为JSON字符串不需要URL解码)
|
|
|
|
|
$template = urldecode($template);
|
|
|
|
|
// 发起网络请求,调用Curl类的方法,传入URL、数据和请求方式
|
|
|
|
|
$result = Curl::callWebServer($queryUrl, $template, $queryAction);
|
|
|
|
|
// 返回media_id,如果结果中没有media_id则返回false
|
|
|
|
|
return empty($result['media_id']) ? false : $result['media_id'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 根据分组ID群发图文消息
|
|
|
|
|
public static function sentNewsByGroup($groupId, $mediaId, $isToAll=false){
|
|
|
|
|
/**
|
|
|
|
|
* 根据分组ID群发图文消息
|
|
|
|
|
*
|
|
|
|
|
* @param int $groupId 分组ID
|
|
|
|
|
* @param string $mediaId 图文消息的media_id
|
|
|
|
|
* @param bool $isToAll 是否群发所有用户,默认为false
|
|
|
|
|
* @return mixed 返回群发操作的结果
|
|
|
|
|
*/
|
|
|
|
|
public static function sentNewsByGroup($groupId, $mediaId, $isToAll = false) {
|
|
|
|
|
// 构建请求URL,包含access_token
|
|
|
|
|
$queryUrl = 'https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=' . AccessToken::getAccessToken();
|
|
|
|
|
$queryAction = 'POST'; // 请求方式为POST
|
|
|
|
@ -41,8 +56,15 @@ class AdvancedBroadcast{ // 定义一个名为AdvancedBroadcast的类,用于
|
|
|
|
|
return Curl::callWebServer($queryUrl, $template, $queryAction);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 根据分组ID群发文本消息
|
|
|
|
|
public static function sentTextByGroup($groupId, $content, $isToAll=false){
|
|
|
|
|
/**
|
|
|
|
|
* 根据分组ID群发文本消息
|
|
|
|
|
*
|
|
|
|
|
* @param int $groupId 分组ID
|
|
|
|
|
* @param string $content 文本内容
|
|
|
|
|
* @param bool $isToAll 是否群发所有用户,默认为false
|
|
|
|
|
* @return mixed 返回群发操作的结果
|
|
|
|
|
*/
|
|
|
|
|
public static function sentTextByGroup($groupId, $content, $isToAll = false) {
|
|
|
|
|
// 构建请求URL,包含access_token
|
|
|
|
|
$queryUrl = 'https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=' . AccessToken::getAccessToken();
|
|
|
|
|
$queryAction = 'POST'; // 请求方式为POST
|
|
|
|
@ -56,8 +78,15 @@ class AdvancedBroadcast{ // 定义一个名为AdvancedBroadcast的类,用于
|
|
|
|
|
return Curl::callWebServer($queryUrl, $template, $queryAction);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 根据分组ID群发语音消息
|
|
|
|
|
public static function sentVoiceByGroup($groupId, $mediaId, $isToAll=false){
|
|
|
|
|
/**
|
|
|
|
|
* 根据分组ID群发语音消息
|
|
|
|
|
*
|
|
|
|
|
* @param int $groupId 分组ID
|
|
|
|
|
* @param string $mediaId 语音消息的media_id
|
|
|
|
|
* @param bool $isToAll 是否群发所有用户,默认为false
|
|
|
|
|
* @return mixed 返回群发操作的结果
|
|
|
|
|
*/
|
|
|
|
|
public static function sentVoiceByGroup($groupId, $mediaId, $isToAll = false) {
|
|
|
|
|
// 构建请求URL,包含access_token
|
|
|
|
|
$queryUrl = 'https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=' . AccessToken::getAccessToken();
|
|
|
|
|
$queryAction = 'POST'; // 请求方式为POST
|
|
|
|
@ -71,8 +100,15 @@ class AdvancedBroadcast{ // 定义一个名为AdvancedBroadcast的类,用于
|
|
|
|
|
return Curl::callWebServer($queryUrl, $template, $queryAction);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 根据分组ID群发图片消息
|
|
|
|
|
public static function sentImageByGroup($groupId, $mediaId, $isToAll=false){
|
|
|
|
|
/**
|
|
|
|
|
* 根据分组ID群发图片消息
|
|
|
|
|
*
|
|
|
|
|
* @param int $groupId 分组ID
|
|
|
|
|
* @param string $mediaId 图片消息的media_id
|
|
|
|
|
* @param bool $isToAll 是否群发所有用户,默认为false
|
|
|
|
|
* @return mixed 返回群发操作的结果
|
|
|
|
|
*/
|
|
|
|
|
public static function sentImageByGroup($groupId, $mediaId, $isToAll = false) {
|
|
|
|
|
// 构建请求URL,包含access_token
|
|
|
|
|
$queryUrl = 'https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=' . AccessToken::getAccessToken();
|
|
|
|
|
$queryAction = 'POST'; // 请求方式为POST
|
|
|
|
@ -86,8 +122,17 @@ class AdvancedBroadcast{ // 定义一个名为AdvancedBroadcast的类,用于
|
|
|
|
|
return Curl::callWebServer($queryUrl, $template, $queryAction);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 根据分组ID群发视频消息
|
|
|
|
|
public static function sentVideoByGroup($mediaId, $title, $description, $groupId, $isToAll=false){
|
|
|
|
|
/**
|
|
|
|
|
* 根据分组ID群发视频消息
|
|
|
|
|
*
|
|
|
|
|
* @param string $mediaId 视频消息的media_id
|
|
|
|
|
* @param string $title 视频标题
|
|
|
|
|
* @param string $description 视频描述
|
|
|
|
|
* @param int $groupId 分组ID
|
|
|
|
|
* @param bool $isToAll 是否群发所有用户,默认为false
|
|
|
|
|
* @return bool 返回群发操作是否成功
|
|
|
|
|
*/
|
|
|
|
|
public static function sentVideoByGroup($mediaId, $title, $description, $groupId, $isToAll = false) {
|
|
|
|
|
// 构建请求URL,包含access_token
|
|
|
|
|
$queryUrl = 'https://file.api.weixin.qq.com/cgi-bin/media/uploadvideo?access_token=' . AccessToken::getAccessToken();
|
|
|
|
|
$queryAction = 'POST'; // 请求方式为POST
|
|
|
|
@ -99,7 +144,7 @@ class AdvancedBroadcast{ // 定义一个名为AdvancedBroadcast的类,用于
|
|
|
|
|
// 发起网络请求
|
|
|
|
|
$result = Curl::callWebServer($queryUrl, $template, $queryAction);
|
|
|
|
|
// 检查返回结果是否符合预期
|
|
|
|
|
if(empty($result['type']) || $result['type'] != 'video' || empty($result['media_id'])){
|
|
|
|
|
if (empty($result['type']) || $result['type'] != 'video' || empty($result['media_id'])) {
|
|
|
|
|
// 如果结果中没有type字段,或者type不是video,或者没有media_id,则返回false
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|