2019/01/31

とあるサイトが変更になった時になるべく確実に変更通知を受け取りたい

なるべく確実に変更通知を受け取るためには、普段携行している iPhone への通知が一番良さそうに思う。
iPhone への通知で一番最初に思い浮かぶのは PUSH通知 (APNS) なのだが、 APNS を利用するためには Apple への Developer 登録などが必要で、そう簡単に送る事ができないと思う (Developer 登録などが不要で簡単に PUSH 通知を送る方法があれば是非教えて下さい)。

そこで iPhone で受信しているアドレスにメールを送信し、 更に普段からチェックしている slack で自分宛にダイレクトメッセージを送信する事にした。
iPhone の設定によりメールを受信した時や slack でダイレクトメッセージが投稿された時の通知を有効にする事で、 変更通知がなるべく確実に受け取れる事になると思う。

そのために以下のスクリプトを Linux などが稼働しているサーバ設置して cron などにより自動実行する。

  1#!/bin/sh
  2
  3# site
  4url="https://www.example.com"
  5old=${HOME}/.old.html
  6new=${HOME}/.new.html
  7# for mail
  8addr="mail@exapmle.net"
  9subject="[SITE CHANGEED]"
 10body="SITE CHANGED: ${url}" 
 11# for slack
 12slack="https://hooks.slack.com/services/XXXXXXXXX/YYYYYYYYY/ZZZZZZZZZZZZZZZZZZZZZZZZ"
 13name="name"                 # post name
 14channel="#channel"          # post channel
 15
 16curl -s ${url} > ${new}
 17test -f ${old} &&  
 18cmp -s ${old} ${new} || echo "${body}" | mail -s "${subject}" ${addr} &&
 19curl -sLX POST --data-urlencode "payload={\"channel\": \"${channel}\", \"username\": \"${name}\", \"text\": \"${body}\"}" ${slack}
 20
 21mv $new $old
    
slack でチャンネルではなくダイレクトメッセージを送信する場合は channel の値を適切に変更する。
web を検索すると `channel: @名前` とすれば良いとの記事を多く見かけるが、少なくとも最近の slack ではエラーとなってしまう。
その場合、slack の web 画面の左側に表示されている `ダイレクトメッセージ` をクリックした時に遷移するページの URL の最後の部分 (https://XXX.slack.com/messages/YYYYY/YYYYY の部分) を指定するとダイレクトメッセージが送信できる。


Copyright © 2008-2020 Mitzyuki IMAIZUMI. All rights reserved.