LoginSignup
6
7

More than 5 years have passed since last update.

Webサイトにうまく繋がらなかったら Slack に投稿するメモ(PHP)

Last updated at Posted at 2015-06-03

Webサイトにうまく繋がらなかったら Slack に投稿するメモです。
簡易監視用として利用しようと思います。

Slack の設定

Configure Integrations → Incoming WebHooks → 投稿したいチャンネルを選んでAdd する。
すると Webhook URL というのが手に入るのでこれをメモしておく。

Webサイトにうまく繋がらなかったら投稿する

servercheck_slack.php
mb_language("ja");
mb_internal_encoding("UTF-8");

$URL = "http://example.com/";
$result = "";

//webアクセスチェック
if ($res = file_get_contents($URL)) {
    $result .= "";
} else {
    $result .= "<{$URL}|{$URL}> にアクセスできません\n";
}

//Slack投稿
if ($result != "") {
    $incomingUrl = 'https://hooks.slack.com/xxxxx'; // 発行されたWebhook URL
    $payload = array(
        "text" => $result, // メッセージ(必須)
        "username" => "web_bot", // 投稿者(サービス)名
        "icon_emoji" => ":ghost:", // 投稿者名のアイコン http://www.emoji-cheat-sheet.com/
        "channel" => "#xxxxx", // Channel(#または@から始まるchannel名)
    );
    $slacksubmit = slackIncomingWebhook($incomingUrl, $payload);
    var_dump($slacksubmit);
}

//Slack投稿用関数
function slackIncomingWebhook($url, $payload) {
    $headers = array();
    $params = array('payload' => json_encode($payload));

    $result = postRequest($url, $params, $headers);
    return $result;
}
//Slack投稿用関数
function postRequest($url, $params, $headers = array()) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
//    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 環境によってSSLで問題が起きる場合はコメントを解除してください。
    $result = curl_exec($ch);
    $error = curl_error($ch);
    curl_close($ch);
    if ($error) {
        throw new \Exception($error);
    }
    return $result;
}

CRON を設定

10分おきくらいで設定する。

参考にしたページ

ありがとうございました。
http://www.bunnyhop.jp/lab-20141020/
http://blog.asial.co.jp/486

6
7
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7