消息自动推送群发接口

实现功能:
订阅号和服务号的消息自动推送和群发功能。

注意事项:
此接口需要多个接口一起完成群发功能,不是通过一个接口就可以完成的。

代码示例:

require "init.php";
$WXAPI = new WXAPI();
// 图片资源 绝对路径 /data/web/upload/img.jpg (LINUX) 
// LINUX /data/web/upload/img.jpg
// WINDOWS D:/web/www/weixin/img.jpg
$img = $_SERVER['DOCUMENT_ROOT'].'/test.jpg';

//上传图片 获得 图片 url 路径
// $img = $WXAPI->media_uploadimg($img);



//上传资源 获得 资源 media_id
$img = $WXAPI->media_upload($img);

// 第一步:上传图文消息素材
$data = [];
$data[] = [
    'thumb_media_id'=>$img['data']['media_id'],
    'title'=>'这里是标题',
    'content'=>'这里的内容会在详情页显示,如果此处需要展示图片 需要调用 $WXAPI->media_uploadimg($img) 方法来生成微信服务器的图片路径。',
    'author'=>'小悦同学',//图文消息的作者
    // 'content_source_url'=>'http://weixin.qq1121.com/',//在图文消息页面点击“阅读原文”后的页面
    // 'digest'=>'',//图文消息的描述,如本字段为空,则默认抓取正文前64个字
    'show_cover_pic'=>0,//是否显示封面,1为显示,0为不显示
];
$news = $WXAPI->media_uploadnews($data);


// 第二步:根据标签进行群发
$r = $WXAPI->message_sendall($news['data']['media_id']);


// 发送完成
pr($r);

底层代码:

上传图文消息内的图片获取URL

    /**
     * 上传图文消息内的图片获取URL
     * @author yanxuefa
     * @date   2018-01-08
     * @param  [type]     $url [description]
     * @return [type]          [description]
     */
    public function media_uploadimg($url){
        if(class_exists('CURLFile')){
            $data = array('media' => new CURLFile(realpath($url)));
        }else{
            $data = array('media'=>'@'.$url);
        }
        $url = $this->_URL['cgi-bin'].'media/uploadimg?access_token='.$this->token();
        return $this->http($url,$data);
    }

上传资源获得资源 media_id

    /**
     * 上传资源获得资源 media_id
     * @author yanxuefa
     * @date   2018-01-08
     * @param  [type]     $url [description]
     * @return [type]          [description]
     */
    public function media_upload($url,$type='image'){
        if(class_exists('CURLFile')){
            $data = array('media' => new CURLFile(realpath($url)));
        }else{
            $data = array('media'=>'@'.$url);
        }
        $url = $this->_URL['cgi-bin'].'media/upload?access_token='.$this->token().'&type='.$type;
        return $this->http($url,$data);
    }

上传图文消息素材

    /**
     * 上传图文消息素材
     * @author yanxuefa
     * @date   2018-01-08
     * @param  [type]     $url [description]
     * @return [type]          [description]
     */
    public function media_uploadnews($data){

        $url = $this->_URL['cgi-bin'].'media/uploadnews?access_token='.$this->token();
        return $this->http($url,json_encode(['articles'=>$data],JSON_UNESCAPED_UNICODE));
    }

根据标签进行群发

    /**
     * 根据标签进行群发
     * @author yanxuefa
     * @date   2018-01-08
     * @return [type]     [description]
     */
    public function message_sendall( $media_id ){

        $data = [
            'msgtype'=>'mpnews',//图文消息为mpnews,文本消息为text,语音为voice,音乐为music,图片为image,视频为video,卡券为wxcard
            'send_ignore_reprint'=>1,//图文消息被判定为转载时,是否继续群发。 1为继续群发(转载),0为停止群发。 该参数默认为0。
            'filter'=>[
                'is_to_all'=>true,//选择true该消息群发给所有用户,选择false可根据tag_id发送给指定群组的用户
                // 'tag_id'=>2,
            ],
            'mpnews'=>[
                'media_id'=>$media_id,
            ],
        ];

        $url = $this->_URL['cgi-bin'].'message/mass/sendall?access_token='.$this->token();
        return $this->http($url,json_encode($data));

    }

 

发表评论

电子邮件地址不会被公开。