前言

Uptime Robot 链接 是一款非常好用的网站监控工具,而且大部分功能是免费的
其中一个功能就是在网站宕机/恢复的时候通知你,但是不支持微信,不是特别方便。
利用PHP写个WebHook接收器即可曲线救国。
本项目开源:链接

服务器设置

首先在自己的服务器上创建一个WebHook接收器
在你的网站合适的位置新建一个PHP文件,写入以下内容:

也可以从GitHub下载:
wget https://raw.githubusercontent.com/chr233/uptime-robot-to-ftqq/master/index.php

<?php
/*
 *一个很简单的微信推送的api,用来对接uptime robot的webhook功能
 *author: Chr_
 *email: [email protected]
 *website: https://blog.chrxw.com
 *
 *token:
 *用于验证身份,不需要的话留空即可
 *设置以后需要以http:/xx.com?token=xxx的格式访问
 *token错误会直接返回404,防止被恶意使用
 *
 *skey:
 *用于方糖气球微信推送
 *访问https://sc.ftqq.com/?c=code登录获取
*/
$token = '';
$skey = '';
if ($_GET && $_GET['token'] == $token) {
    if ($_GET['alertType'] == 1) { //down
        $text = '服务器下锅啦';
        $desp = '### 名称: ' . $_GET['monitorFriendlyName'] . "\n";
        $desp.= '#### 网址: [' . $_GET['monitorURL'] . '](' . $_GET['monitorURL'] . ')' . "\n";
        $desp.= '#### 状态: 故障' . "\n";
        $desp.= '#### 时间: ' . date('Y-m-d H:i:s', (int)$_GET['alertDateTime']) . "\n";
        $desp.= '#### 详情: ' . $_GET['alertDetails'];
    } elseif ($_GET['alertType'] == '2') { //up
        $text = '服务器捞起来啦';
        $seconds = (int)$_GET['alertDuration'];
        if ($seconds > 3600) {
            $hours = intval($seconds / 3600);
            $minutes = $seconds % 3600;
            $time = $hours . "小时" . gmstrftime('%M分钟%S秒', $minutes);
        } else {
            $time = gmstrftime('%H小时%M分钟%S秒', $seconds);
        }
        $desp = '## 名称: [' . $_GET['monitorFriendlyName'] . ']' . "\n";
        $desp.= '#### 网址: [' . $_GET['monitorURL'] . '](' . $_GET['monitorURL'] . ')' . "\n";
        $desp.= '#### 状态: 运行中' . "\n";
        $desp.= '#### 时间: ' . date('Y-m-d H:i:s', (int)$_GET['alertDateTime']) . "\n";
        $desp.= '#### 持续: ' . $time . "\n";
        $desp.= '#### 详情: ' . $_GET['alertDetails'];
    } else {
        abort(500);
    }
    $opts = array('http' => array('method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => http_build_query(array('text' => $text, 'desp' => $desp))));
    $context = stream_context_create($opts);
    $result = file_get_contents('https://sc.ftqq.com/' . $skey . '.send?', false, $context);
    echo $result;
} else {
    abort(404);
}
?>

第17行自己设个token,第18行填入方糖气球的SKEY 获取方式

然后记下访问的URL,还有token,拼成URL?token=‘你的token’的形式,下一步要用

比如访问URL为https://t.tt/webhook/index.php,token 设为1314
那么拼合后为https:/t.tt/webhook/index.php?token=1314

Uptime Robot对接

没有Uptime Robot账户的可以先去注册一个 链接

登陆后点最上面一排的My Settings,界面如图
简易界面说明
在最右边,如果屏幕窄的话可能会在下面,先在对应位置添加一个Webhook

创建WebHOOK
填URL的时候记得在最后加个&
填完了在最下面点Create Alert Contact保存

编辑WebHook设置
点编辑按钮进入WebHook设置

勾选使用默认参数
勾选Send default variables as a query string
然后点Save Changes保存

监视器设置
最后别忘了在监视器设置里启用刚刚创建的WebHook通知器

最后修改:2019 年 12 月 05 日
Null