監控服務器調用微信API給自己發告警信息

今天心血來潮,想試試用微信公衆號給自己發消息。主要是想如果運維監控的設備故障時可以通過微信告警。

查了一下開發者文檔,發現普通未認證訂閱號不能通過API羣發,認證訂閱號每天只能羣一條信號,而認證的服務號每月發給每個月戶也只有4條。瞬間心涼了一半,於是網上又搜了一下,發現有個“WeiXin-Private-API-master”的東東說是可以單獨給每個關注的用戶發送,於是下載試了一下,失敗。再去查查官方文檔,已找不到這個“single send”接口,官方的FAQ裏回答也是沒有這個功能。

最後使用公衆平臺測試賬號,最後總算成功了。具體的步驟如下:

注:測試賬號每天可以發送100條分組羣發信息和100條openid列表羣發信息。

1.註冊公衆平臺訂閱號(個人的未認證訂閱號即可)

2.開通開發者中心功能,註冊公衆平臺測試賬號。獲取到appID和appsecret

wKiom1XtVBLwxYsgAAEvgS_gl2U507.jpg


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)
wKioL1XtVfSiikN0AAD9PM8DLY8079.jpg


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.用瀏覽器打開這個頁面,顯示成功:
wKioL1XtVibBo3muAABNQIYhjAw671.jpg


7.在手機上查看訂閱號發來的信息。(有一些延遲,所以對於需要緊急處理的監控不適合用微信訂閱號來發)

wKioL1XtWz6DXeWFAAEEV_9T5h8038.jpg


最後再強調一下,爲了騰訊了爲安全,使用access_token,兩小時就超時,所以要在超時前重新獲取,可以直接在代碼裏進行刷新獲取。測試賬號每天可獲取最大次數爲2000次。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章