微信開發-羣發接口

前面說到的都是一條一條的回覆給用戶消息,若是想要一次性發給多個用戶,就要使用微信提供的羣發接口了。json

微信羣發須要注意(其實就是微信文檔裏面的內容):api

1.次數不同,認證的訂閱號能夠天天發送一條羣發消息,而認證的服務號雖然天天能夠發送100條,可是用戶每個月只能接收四條,多餘四條的將發送失敗。微信

2.羣發的時候,認證的訂閱號天天只能使用is_to_all羣發一次或者在公衆平臺羣發一次。相應的,服務號每月公衆平臺羣發+is_to_all羣發最多隻能四次。微信公衆平臺

 

根據標籤羣發

  1.這個接口是經過post請求的,請求參數根據羣發的內容略有不一樣。curl

  2.tagid就是之前的分組id如今更名叫標籤,在微信公衆平臺->用戶管理的右側能夠看到已經建立的標籤名,得到標籤id須要經過接口來得到已經建立的全部標籤的id。post

  3.當is_to_all爲true時,能夠選擇不填寫tagid。ui

  4.media_id須要經過微信上傳素材接口得到。this

  5.羣發接口能夠發送卡券,cardid須要經過建立卡券得到或者卡券相關事件推送得到。url

 

  

/**
    *根據標籤進行羣發
    */
    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只是意味着羣發任務提交成功,並不意味着羣髮結束,後續的羣發過程當中可能受到各類因素的影響,須要一段時間才能羣發完畢。spa

 

 根據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'];
        }
    }

 

    

  預覽接口

    

     一、預覽接口能夠將消息發送給一個指定的用戶,能夠查看消息的樣式和排版,可是天天只有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);
    }
相關文章
相關標籤/搜索