微信开发-群发接口

Written by

in

文章目录
  •     删除群发适用于,当群发过后发现群发消息不对的时候,可以使用接口进行删除这次群发。     1.msg_id是群发消息成功后返回的msgid。     2.删除接口只能删除图文和视频,其他类型的不能删除。     3.删除图文只是将图文详情页失效,但是图文的消息卡片用户在本地还是可以看到。     4.如果多次群发的都是用一个media_id类型的素材,删除掉其中一个群发,会将所有这个素材的群发全部失效。            public function deletePushAll(){ $access_token=get_token(); $url=”https://api.weixin.qq.com/cgi-bin/message/mass/delete?access_token=”.$access_token; $data=array(‘msg_id’=>1000000005); $result=json_decode(curl($url,json_encode($data)),true); if($result[‘errcode’]==0){ echo “删除群发成功”; }else{ echo “群发失败:原因:”.$result[‘errmsg’]; } }     
  •           1、预览接口可以将消息发送给一个指定的用户,可以查看消息的样式和排版,但是每天只有100次,需要谨慎使用。       public function previewPush(){ $access_token=get_token(); $url=”https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=”.$access_token; $data=array( ‘touser’=>’odys8xDP3L7UP1nXoDFrevFqO6KQ’, ‘text’=>array( ‘content’=>’test’ ), ‘msgtype’=>’text’ ); $result=json_decode(curl($url,json_encode($data)),true); }
  •          这个接口是用来查询已经发送的消息的状态,msg_id是提交群发任务成功后返回的一个标识。如果返回SEND_SUCCESS说明已经全部群发成功。       public function selectPush(){ $access_token=get_token(); $url=”https://api.weixin.qq.com/cgi-bin/message/mass/get?access_token=”.$access_token; $data=array(‘msg_id’=>1000000005); $result=json_decode(curl($url,json_encode($data)),true); var_dump($result);exit; }      查询结果:     
  •             在群发快要成功的时候,微信会推送一个XML结构以事件的形式推送到开发者的URL上,开发者可以根据返回的结构来分析这个消息发送了多少人,成功的有多少,失败的有多少。           public function masssendjobfinish(){ $msgid=$this->msgId; $total=$this->totalCount ; $filter=$this->filterCount; $sendCount=$this->sentCount; $errorCount=$this->errorCount; $data=array( ‘totalcount’=>$total, ‘filtercount’=>$filter, ‘sendcount’=>$sendCount, ‘errorcount’=>$errorcount ); plog($data); M(‘monthtuisong’)->where(array(‘msgid’=>$msgid))->save($data); }
  • 前面说到的都是一条一条的回复给用户消息,如果想要一次性发给多个用户,就要使用微信提供的群发接口了。

    微信群发需要注意(其实就是微信文档里面的内容):

    1.次数不一样,认证的订阅号可以每天发送一条群发消息,而认证的服务号虽然每天可以发送100条,但是用户每月只能接收四条,多余四条的将发送失败。

    2.群发的时候,认证的订阅号每天只能使用is_to_all群发一次或者在公众平台群发一次。相应的,服务号每个月公众平台群发+is_to_all群发最多只能四次。

      1.这个接口是通过post请求的,请求参数根据群发的内容略有不同。

      2.tagid就是以前的分组id现在改名叫标签,在微信公众平台->用户管理的右侧可以看到已经创建的标签名,获得标签id需要通过接口来获得已经创建的所有标签的id。

      3.当is_to_all为true时,可以选择不填写tagid。

      4.media_id需要通过微信上传素材接口获得。

      5.群发接口可以发送卡券,cardid需要通过创建卡券获得或者卡券相关事件推送获得。

      

    /**
        *根据标签进行群发
        */
        public function pushByTags(){
            $access_token=get_token();
            $url="https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=".$access_token;
            $data=array(
                'filter'=>array(
                    'is_to_all'=>false,
                    'tag_id'=>135
                    ),
                'text'=>array(
                    'content'=>'test'
                    ),
                'msgtype'=>'text'
                );
            $result=json_decode(curl($url,json_encode($data)),true);
            if($result['errcode']==0){
                echo "群发成功";
                M('monthtuisong')->add(array('msgid'=>$result['msg_id']));
            }else{
                echo "群发失败";
            }
        }

      

      

      返回errcode=0只是意味着群发任务提交成功,并不意味着群发结束,后续的群发过程中可能受到各种因素的影响,需要一段时间才能群发完毕。

      

        1.根据openid列表进行群发和根据标签群发基本相似,只有第一个参数是不同的。根据标签群发的第一个参数是filter而这个是touser,touser里面是

        需要群发的openid列表。

        2.只有服务号可用,订阅号不可用。

         

    public function pushByOpenIdList(){
            $access_token=get_token();
            $url="https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=".$access_token;
            $data=array(
                'touser'=>array('xxx','yyy'),//填写你要发的ID
                'text'=>array(
                    'content'=>'test'
                    ),
                'msgtype'=>'text'
                );
            $result=json_decode(curl($url,json_encode($data)),true);
            if($result['errcode']==0){
                echo "群发成功";
                M('monthtuisong')->add(array('msgid'=>$result['msg_id'],'shijian'=>time()));
            }else{
                echo "群发失败:原因:".$result['errmsg'];
            }
        }

        

        删除群发适用于,当群发过后发现群发消息不对的时候,可以使用接口进行删除这次群发。

        1.msg_id是群发消息成功后返回的msgid。

        2.删除接口只能删除图文和视频,其他类型的不能删除。

        3.删除图文只是将图文详情页失效,但是图文的消息卡片用户在本地还是可以看到。

        4.如果多次群发的都是用一个media_id类型的素材,删除掉其中一个群发,会将所有这个素材的群发全部失效。

         

        

        public function deletePushAll(){
            $access_token=get_token();
            $url="https://api.weixin.qq.com/cgi-bin/message/mass/delete?access_token=".$access_token;
            $data=array('msg_id'=>1000000005);
            $result=json_decode(curl($url,json_encode($data)),true);
            if($result['errcode']==0){
                echo "删除群发成功";
            }else{
                echo "群发失败:原因:".$result['errmsg'];
            }
        }

        

        

         1、预览接口可以将消息发送给一个指定的用户,可以查看消息的样式和排版,但是每天只有100次,需要谨慎使用。

         

    public function previewPush(){
            $access_token=get_token();
            $url="https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=".$access_token;
            $data=array(
                'touser'=>'odys8xDP3L7UP1nXoDFrevFqO6KQ',
                'text'=>array(
                    'content'=>'test'
                    ),
                'msgtype'=>'text'
                );
            $result=json_decode(curl($url,json_encode($data)),true);
        }

        

        这个接口是用来查询已经发送的消息的状态,msg_id是提交群发任务成功后返回的一个标识。如果返回SEND_SUCCESS说明已经全部群发成功。

         

    public function selectPush(){
            $access_token=get_token();
            $url="https://api.weixin.qq.com/cgi-bin/message/mass/get?access_token=".$access_token;
            $data=array('msg_id'=>1000000005);
            $result=json_decode(curl($url,json_encode($data)),true);
            var_dump($result);exit;
        }

         查询结果:

        

         

          在群发快要成功的时候,微信会推送一个XML结构以事件的形式推送到开发者的URL上,开发者可以根据返回的结构来分析这个消息发送了多少人,成功的有多少,失败的有多少。

          

      

    public function masssendjobfinish(){
            $msgid=$this->msgId;
            $total=$this->totalCount ;
            $filter=$this->filterCount;
            $sendCount=$this->sentCount;
            $errorCount=$this->errorCount;
            $data=array(
                'totalcount'=>$total,
                'filtercount'=>$filter,
                'sendcount'=>$sendCount,
                'errorcount'=>$errorcount
                );
            plog($data);
            M('monthtuisong')->where(array('msgid'=>$msgid))->save($data);
        }

    评论

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注

    站内搜索