• 微信开发-群发接口


    前面说到的都是一条一条的回复给用户消息,如果想要一次性发给多个用户,就要使用微信提供的群发接口了。

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

    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只是意味着群发任务提交成功,并不意味着群发结束,后续的群发过程中可能受到各种因素的影响,需要一段时间才能群发完毕。

     根据openid列表群发

      

        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);
        }

     

  • 相关阅读:
    使用npm安装一些包失败了的看过来(npm国内镜像介绍)(解决生成空的abp模板项目一直卡在还原cpm包中)
    .NET CORE 发布到IIS问题 HTTP ERROR 500.30
    .NET Core默认不支持GB2312,使用Encoding.GetEncoding(“GB2312”)的时候会抛出异常。
    .net c# 文件分片/断点续传之下载--客户端
    aspnetcore 实现断点续传
    C# 反射获取属性值、名称、类型以及集合的属性值、类型名称
    C# 3Des两种加密方式 (对应java中的desede/CBC/PKCS5Padding加密)
    Asp.NetCore3.1中多次读取Request.Body
    ASP.NET Core 2.0系列学习笔记-DI依赖注入
    C# Newtonsoft.Json JObject合并对象整理
  • 原文地址:https://www.cnblogs.com/lina520/p/6150167.html
Copyright © 2020-2023  润新知