今天心血來潮,想試試用微信公眾號給自己發消息。主要是想如何運維監控的設備故障時可以通過微信告警。
查了一下開發者文檔,發現普通未認證訂閱號不能通過API群發,認證訂閱號每天只能群一條信號,而認證的服務號每月發給每個月戶也只有4條。瞬間心涼了一半,于是網上又搜了一下,發現有個“WeiXin-Private-API-master”的東東說是可以單獨給每個關注的用戶發送,于是下載試了一下,失敗。再去查查官方文檔,已找不到這個“single send”接口,官方的FAQ里回答也是沒有這個功能。
最后使用公眾平臺測試賬號,最后總算成功了。具體的步驟如下:
注:測試賬號每天可以發送100條分組群發信息和100條openid列表群發信息。
1.注冊公眾平臺訂閱號(個人的未認證訂閱號即可)
2.開通開發者中心功能,注冊公眾平臺測試賬號。獲取到appID和appsecret
3.通過appID和appsecret獲取access_token。(也即是臨時憑證,有效時間為兩小時,需要在到期前去更新)。獲取的url為
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
(將上面的APPID和APPSECRET替換成第2步獲取到的ID和密碼)
4.使用個人微信號關注這個測試賬號,關注后在右方會出現加密后的微信號(也就是OpenID)
5.通過腳本調用API,這里用PHP,以OpenID列表群發為例
<?php $post_data = array( "touser"=>array('OpenID1', 'OpenID2'), //把OpenID替換成第4步獲取到的加密微信號注意這里至少要兩個OpenID,否則會返回錯誤信息。如果只有一個賬號關注了的話,可以自己再隨便造一個,或兩個OpenID寫成一樣 "msgtype"=> "text", "text" => array( "content" => "I am msg.") ); $post_data = json_encode($post_data) ;
//因為API只接受json的格式的數據,所以要進行json encode,當然,以上的代碼也可直接寫成下面這樣: //$postdata = '{"touser":["OpenID1","OpenID2"],"msgtype":"text","text":{"content":"I am msg."}}';
$url='https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN'; //把ACCESS_TOKEN替換成第3步獲取到的token
$ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_POSTFIELDS, $p); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //上面兩行是為了解決https證書問題,不加的話會報錯,所以直接信任證書了。 $result=curl_exec($ch); echo curl_error($ch);curl_close($ch); print_r($result);
6.用瀏覽器打開這個頁面,顯示成功:
7.在手機上查看訂閱號發來的信息。(有一些延遲,所以對于需要緊急處理的監控不適合用微信訂閱號來發)
最后再強調一下,為了騰訊了為安全,使用access_token,兩小時就超時,所以要在超時前重新獲取,可以直接在代碼里進行刷新獲取。測試賬號每天可獲取最大次數為2000次。
以上內容就是監控服務調用微信API如何給自己發告警信息的全部內容,希望大家喜歡。