1. 記事一覧 >
  2. ブログ記事
category logo

ファイル/フォルダの追加更新削除をWebHookを使って通知するアプリ

(更新) (公開)

はじめに

弊社では社内のアクティビティを可視化するために、GitLab,Wekanの操作をWebHookを使って通知しています。
詳細は、別記事「GitLab,Wekan→Rocket.Chat→SlackのWebHook」にアップ済みです。
これと同じようにファイル/フォルダの追加更新削除をWebHookを使って通知するアプリ(サービス)を作成しましたので、概要を説明します。

アプリの本体、ソースコードは公開していません。


動作内容
Rocket.ChatにIncoming WebHookを設定
監視アプリインストール
監視対象フォルダ設定
WebHook URLの設定
動作確認


動作内容

以下の図のように、ファイルサーバーの特定フォルダを監視し、監視フォルダ直下でファイル/フォルダの追加更新削除が行われたら、WebHookでRocket.Chatへ通知、さらにRocket.Chat→Slackへ伝播するイメージです。

Rocket.Chat→Slackの部分は、別記事「GitLab,Wekan→Rocket.Chat→SlackのWebHook」の内容と重複しますので、そちらをご覧ください。

監視対象は、ローカルディスクでもできましたが、運用上ファイルサーバー(NAS)の方を監視対象とするため、ファイルサーバーを監視前提で進めていきます。


Rocket.ChatにIncoming WebHookを設定

管理者でログイン後、ユーザーのアイコンをクリックして、「管理」をクリックします。
「サービス連携」をクリックします。
「Incoming」を選択して、「+New」をクリックします。

「名前」は、"フォルダ監視"とし、投稿先チャンネルは、"#general"とします。
「投稿ユーザー」は、Rocket.Chatで登録されているユーザー名を入力します。

絵文字は、アバターの画像になります。https://www.webfx.com/tools/emoji-cheat-sheet/ 等で調べて、絵文字コードを入力します。今回 :file_folder: とします。

今回、Scriptは登録しません。スクリプトを有効にするをオフのままにします。
スクリプトを使わない理由は、以下のように監視アプリから、text が欲しい形で送られてくるからです。textは、そのままチャットのテキストに採用されます。

{
	"username": "ファイル作成",
	"text": "ファイル '新しいテキスト ドキュメント.txt' を作成しました。"
}

「有効」スイッチをオンにして、保存ボタンをクリックします。

保存後、以下のように Webhook URL が表示されるため、これをコピーしておきます。

以上で、Rocket.Chat側のWebHook受け入れ準備は完了です。


監視アプリインストール

msiをダブルクリックしてインストールします。


「Folder Monitoring Service」としてサービスに登録されます。
設定ファイル、exeが C:\Program Files (x86)\Common Files\monitoring に登録されます。


監視対象フォルダ設定

ファイルサーバーに接続して、ユーザー名、パスワードを入力、このとき、「資格情報を記憶する」にチェックを入れます。


option.exeを起動して、先ほど接続したファイルサーバーのフォルダを指定します。


「Folder Monitoring Service」のプロパティ→ログオン→アカウントで、ファイルサーバーに接続したユーザー(今操作しているユーザー)のアカウント名、パスワードを入力し、OKをクリックします。

このときに登録するのは、ファイルサーバーへの接続に必要なユーザー名、パスワードではありません。そちらは、「資格情報を記憶する」に記憶されています。



サービスを再起動します。

WebHook URLの設定

config.iniを開いて、WebHook URLをRocket.Chatで取得したURLに書き換えます。

.jsonファイルは、通知内容が書かれています。これを書き換えると、通知内容を変えられる仕様にしましたが、このままにします。

FileRenamed.jsonの例

{
	"username": "ファイル名変更",
	"text": "ファイル名を '%%OLD_FULL_PATH%%' から '%%NAME%%' へ変更しました。"
}

受け手がRocket.Chat以外でも問題無いように可変仕様にしましたが、今回は、この内容で目的は達成できます。


動作確認

準備が整ったため、監視対象フォルダにファイルを置いてみます。

監視アプリ→WebHook→Rocket.Chat へ通知が来て、投稿されました。
さらに、「GitLab,Wekan→Rocket.Chat→SlackのWebHook」のRocket.Chat→Slackの設定をしている場合、Slackにも同じ内容が投稿されます。

ファイルを更新します。(上書き保存)

ファイルをリネームします。

ファイルを削除します。

フォルダを作成します。

フォルダをリネームします。

フォルダを削除します。

できました!


loading...