Trello のタスクを監視し、完了したら Slack で褒めてくれる雷bot(2018/9/8)

今後のために過去の記事を復活させておきます。


雷…私を褒めてくれ!

先日 Slack のbotを作成するまでの記事を作成しましたが、今回はその続きになります。

Slack のbotに移行したいものはいくつかあるのですが、本記事ではその先駆けとしてタイトルの機能を実装してみました。

プログラムの動作としては下記のような挙動になります。

動作フロー・通知条件

  1. 指定された Trello のボードの中で、期限(due)設定されているタスクカードを抽出
  2. 期限の日時が今日となっているもののみに絞り込み
  3. 「完了」となっている(dueComplete: true)があれば Slack に「完了済み」として褒める
  4. 3.の条件に一致しないタスクカードのうち、期限切れのタスクカードがあれば「期限切れ」でも励ます
  5. 3., 4.のどちらも0件だった場合「タスクがない」ことを知らせる

作成経緯

上記の通り、実際は完了済みだけでなく期限切れに対しても通知してくれるものとなっています。通知だけならばプログラムを作らずとも Trello と Slack を連携するだけでできるようです。しかし、やりたかったのは機械的な「通知」ではなく「タスクを完了したことへの報酬」として「褒めてくれるbot」が欲しかったので、プログラムを作ったというのが経緯となります。

技術ブロック図

技術的なブロック図は下記になります。

技術ブロック図
技術ブロック図
  1. cron で Trello APIを叩いてjson形式のデータを入手
  2. JSON から必要なデータを抽出、 PHP 内で整形してDBにタスクデータを登録
  3. 登録したタスクデータのうち、通知条件に合致したものに対して Slack の Incoming Webhook を叩いてbotで通知

という形になります。

動作サンプル

実際に手元で動かしてみた結果が以下になります。

Slack 上での通知
Slack 上での通知

Slack で雷が褒めてくれます。一応アイコンは隠しておきます。

スマホへのプッシュ通知
スマホへのプッシュ通知

スマホに Slack アプリを入れればプッシュ通知も。

参考記事

Slack

PHP, MySQL

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。