天天看點

【玩轉騰訊雲】WordPress Typecho Hexo 實作消息的及時 QQ 微信 推送

WordPress 在有新評論的時候,可以有郵件推送,但是長老平時也不是時時刻刻都會打開郵箱看着,是以希望能夠将新評論及時地推送到自己的 QQ 或者微信,以便及時檢視、及時回複。下面長老将分享如何簡單、快速地将消息推送到自己的 QQ 和 微信。

Server 醬是一個微信消息推送平台、Qmsg 醬是一個 QQ 消息推送平台,利用它們,我們可以輕松實作自己伺服器上業務在滿足一定條件時自動推送及時消息到自己的手機上。

http://sc.ftqq.com/3.version

https://qmsg.zendee.cn/

推送平台這麼多,為什麼長老要向大家推薦這兩個呢?首先,Slack 這樣的平台提供了太多可定制的功能,API 文檔又長又複雜,而且還要安裝額外的用戶端,新增賬號也是一件很麻煩的事情,選手機短信就更加麻煩了。

長老相信對于國内使用者,大概沒有比 QQ 和微信用的更多的通訊平台了,是以推送到 QQ 和微信是最友善的。

Server 醬和 Qmsg 醬隻有一個 API 位址,隻需要将消息發送 POST 請求到這個位址即可,可以輕松實作不同的功能,例如:

  1. 部落格有新評論時及時通知作者
  2. 搶票腳本搶到車票時通知本人
  3. 正在伺服器上運作着的深度神經網絡模型,每隔 1 個小時向自己推送一條消息,包括目前 loss 和 accuracy
  4. 伺服器 CPU、記憶體占用超過 80% 給自己報警

使用說明可以參考各自的官網(其實也沒有什麼使用說明,就是拿一個位址,然後發個 POST 請求),長老以 WordPress 新評論推送 QQ 和微信通知為例,詳細說一下使用步驟。

這個方法同樣适用于 Hexo、Typecho 等部落格平台(就是把 PHP 代碼換成 JS 代碼嘛),你可以根據自己需求,修改代碼、挂不同的鈎子,以實作個性化的需求。

首先我們看一下 Qmsg 醬的使用。

Qmsg 醬是使用 QQ 互聯的 KEY 來作為服務調用位址的。

我們進入官網,點選登入,選擇 QQ 登入,登入成功後的界面非常簡單,我們選擇一個推送機器人,然後添加自己的 QQ 号,點選儲存。

【玩轉騰訊雲】WordPress Typecho Hexo 實作消息的及時 QQ 微信 推送

Qmsg 界面

添加成功後,我們打開手機 QQ,添加這個 Qmsg 的 QQ 号,這是一個消息推送機器人,之後的消息會通過這個 QQ 給我們推送。

然後我們點選“文檔”頁面,記錄下自己的接口位址,如

https://qmsg.zendee.cn:443/send/<KEY>.html

【玩轉騰訊雲】WordPress Typecho Hexo 實作消息的及時 QQ 微信 推送

Qmsg 接口位址

接下來我們編輯 WordPress 主題下的

functions.php

檔案,增加一個自定義鈎子。

我們首先寫一個推送函數,該函數會挂載到 WordPress 鈎子,無需關心參數和傳回值。

在函數中首先根據

comment_id

擷取

comment

全部資訊,然後根據自己需求,産生相關描述,接着封裝一個 POST 請求,将産生的資料對象發送到剛才我們獲得的接口位址中。

函數隻要直接挂到 WordPress 的評論鈎子即可。

/**
 * 評論推送到 QQ,該函數會挂載到 WordPress 鈎子,無需關心參數和傳回值
 * @param $comment_id
 * @return false|string
 */
function push_qq($comment_id)
{
    // 通過 comment_id 擷取 comment 全部資訊
    $comment = get_comment($comment_id);
 
    //  根據自己需求,産生相關描述,可以包括文章内容、評論人、IP、評論内容等
    $text = '您的文章 《' . get_the_title($comment->comment_post_ID) . '》 有新評論';
 
    $desp = $text . "\n\n" . "作者: $comment->comment_author (IP位址: $comment->comment_author_IP ) \n\n 電子郵箱: $comment->comment_author_email \n\n 評論: $comment->comment_content \n\n 點選檢視:https://www.jxtxzzw.com/?p=$comment->comment_post_ID#comment-$comment_id \n\n";
 
    // 封裝一個 Object 對象,其 msg 字段是我們需要推送到 QQ 的消息内容
    $postdata = http_build_query(
        array(
            'msg' => $desp
        )
    );
 
    // 一個 POST 請求
    $opts = array('http' =>
        array(
            'method' => 'POST',
            'header' => 'Content-type: application/x-www-form-urlencoded',
            'content' => $postdata
        )
    );
 
    $context = stream_context_create($opts);
 
    // 将自己的接口位址填在這裡
    return $result = file_get_contents('https://qmsg.zendee.cn:443/send/<KEY>.html', false, $context);
 
}
// 挂載 WordPress 評論送出的接口
add_action('comment_post', 'push_qq', 19, 2);           

複制

儲存該檔案,發表一條評論,發現手機 QQ 及時收到了消息。

【玩轉騰訊雲】WordPress Typecho Hexo 實作消息的及時 QQ 微信 推送

Qmsg 測試

類似的,很容易得到微信部分的代碼。

同樣地,我們進入官網,然後登入,隻不過這裡需要使用 GitHub 賬号登入。沒有的話可以先去注冊一個。授權登入成功以後也會獲得一個 KEY。

【玩轉騰訊雲】WordPress Typecho Hexo 實作消息的及時 QQ 微信 推送

Server 醬接口位址

然後點選微信推送頁面,關注“方糖”機器人,我們之後的消息将會由這個“方糖”給我們發送。

後面的操作是類似的,我們在

functions.php

再增加一個微信推送的函數。

函數主體與上面 QQ 推送一緻,隻需要注意這裡的 POST data 是

text

字段和

desp

字段,以及需要修改自己的 KEY。

function push_wechat($comment_id) {
    // 之前的代碼與 QQ 推送一緻
    $key = '<KEY>'; // 替換成自己的 KEY
    $postdata = http_build_query(
        array(
            'text' => $text,
            'desp' => $desp
        )
    );
    // 之後的代碼與 QQ 推送一緻
    return $result = file_get_contents('http://sc.ftqq.com/'.$key.'.send', false, $context);
}
// 挂載 WordPress 評論送出的接口
add_action('comment_post', 'push_wechat', 19, 2);           

複制

至此,我們就能收到消息了。

【玩轉騰訊雲】WordPress Typecho Hexo 實作消息的及時 QQ 微信 推送

Server 醬測試

看到這裡,有很多小朋友的小問号們又要問了,“長老長老,我是 Hexo,怎麼做呀,我是 Typecho 能不能用呀?”。能呀。

如果你是 Typecho,長老建議你直接安裝 https://github.com/YianAndCode/Comment2Wechat 插件,隻需要填入 KEY 即可。

至于 QQ 嘛,你可以仿照上面的例子,把對應的 QQ 推送的代碼添加到這個插件的

plugin.php

中,并仿照這個插件中

sc_send()

函數的寫法,把推送挂載到 Typecho 的評論功能上。

如果你是 Hexo,可能還是用 JS 來實作比較好,你可以把上面的代碼翻譯成 JS 的函數,然後在執行特定操作(例如釋出新文章、有新評論)時調用這個函數。你也可以用 GET 請求的方式,在執行特定操作時,用 JS 通路一下

https://sc.ftqq.com/<KEY>.send?text=<消息正文>