1. 程式人生 > >微信公眾號之主動給使用者傳送訊息

微信公眾號之主動給使用者傳送訊息

前一段時間專案中遇到一個稍微麻煩一點的問題。

即客戶要求,他在後臺編輯好文章後要主動給每個使用者都發送訊息,並可以讓使用者點選直接進入文章頁面。

於是乎,當時腦子一熱,想著沒什麼大的問題,so easy。模板訊息不就得了。

後來在寫程式碼的過程中卻發現,並不行。

微信公眾號中模板訊息有很嚴格的限制。

1.必須有使用者主動觸發事件方可傳送模板訊息

2.模板訊息一分鐘只能傳送六十條,超過六十條,不好意思。你懂。

於是乎,就想到了另一種方法:群發訊息

但是一看文件中群發訊息的限制,發現悲催了

群發訊息服務號每個月最多隻能傳送4條。

而客戶要求的是隨時隨地就能傳送.這個4條明顯不符合要求的。

怎麼辦呢?一度陷入困難之中。只好繼續檢視開發文件。

當看到客服功能時,突然想到,能不能用客服主動給使用者傳送訊息呢?

於是乎,想到就去試驗下。

首先,先在公眾號後臺功能模組中-》新增功能模組  新增   客服功能   模組

如圖所示:

 

然後就進入程式碼環節了。

先新增客服。也可以公眾號後臺新增

//先新增客服
function addkf()
{
    $token = getToken();
    $url = 'https://api.weixin.qq.com/customservice/kfaccount/add?access_token='.$token;

    $data = '{
         "kf_account" : "system@system",
         "nickname" : "客服1",
         "password" : "admin",
    }';
    echo https_request($url,$data);
}

然後就是主動傳送訊息的方法

//獲取access_token的方法。
function getToken()
{
    $appid = 'appid';
    $appsecret = 'appsecret';
    $token_file = dirname(dirname(__FILE__)).'/data/token.txt';
    if(!file_exists($token_file) || ((time() - filemtime($token_file)) > 7000)){
        $TOKEN_URL="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;

        $json=file_get_contents($TOKEN_URL);
        $result=json_decode($json);

        $ACC_TOKEN=$result->access_token;
        file_put_contents($token_file,$ACC_TOKEN);
    }else{
        $ACC_TOKEN = file_get_contents($token_file);
    }
    return $ACC_TOKEN;
}

//呼叫傳送方法
function sendmsg($content,$openid)
{
    $token = getToken();
    $url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$token;
    $content = '感謝你的關注\n回覆你厲害 \n例如<a href=\"http://www.baidu.com\">回覆123456</a>';
    $data = '{
        "touser":"'.$openid.'",
        "msgtype":"text",
        "text":
        {
             "content":"'.$content.'"
        }
    }';
    https_request($url,$data);
    return true;
}

/**
 * request 請求
 */
function https_request($url, $data = null){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    if (!empty($data)){
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}

使用的時候直接呼叫 sendmsg()方法傳值就可以了。

最後上完成的圖

如圖所示,公眾號可以給使用者傳送訊息,而且傳送的內容你可以使用html 標籤哦

雖然這樣感覺很方便,但是同樣,微信公眾平臺對此也有限制。

1.使用者必須關注公眾號,方可收到資訊。

2.使用者只能連續收到   20   條客服訊息。超過後使用者就收不到訊息,

超過後,使用者必須   主動給公眾號傳送訊息  。或者  點選選單欄,這樣20條訊息的限制就會重置。

以上就是本次分享的內容了。希望對觀看的各位大佬們有所幫助。

轉載本文需徵得博主同意,且轉載時需要標明出處!!!

其實我也不想這樣,但是有人為了自己的搜尋權重,不告知本人就轉載了,同時也搜不到本人的文章了。

所以才出此下策。對於想轉載的小夥伴說聲抱歉,轉載時請留言,本人會及時同意,謝謝。

2019年06月2