slackでのメール通知アプリの作成(events apiの利用とGoogle Apps Scriptでの実装)

2017/11/28 : 第1版
2017/12/11 : 第2版:DMの場合には送信相手にのみ送付するように変更。その他、詳細な箇所を修正

この記事の内容はslackを、私のようなメール中心の生活を送っている人間が使うときの内容です。

以前、outgoing webhookを用いたメール通知ボットを実現していました。slackのメール通知機能はデフォルトで何かとメールを送らない条件がある。細かく設定を変えても送らない条件が残るのです。メンバーもメールドリブンな場合、全員に設定を変えるように説明するのも面倒です。私としては常にすぐにメールで通知する機能が欲しかったのです。

新しいworkspace用に過去の資産を再利用しようとしたところ、outgoing webhookはlegacy扱いになっていて、新規に登録できませんでした。もしかしたら新しく登録する方法もあるのかもしれませんが、せっかくなので新しいevents apiを試してみることとしました。

ここでは単純に「誰が」「何と書いたか」をメンバー全員にメールで通知することとします。

  1. 「https://api.slack.com/apps/」から新規アプリを作成
  2. 「Events API(Event Subscriptions)」からenableとし、以下を追加
    • file_comment_added
    • file_created
    • im_created
    • message.channels
    • message.groups
    • message.im
    • message.mpim
  3. 「Request URL」は後述のGoogle Apps ScriptのWeb URLを指定
  4. 「OAuth & Permissions」で以下の二つのScopeを追加
    • users:read
    • users:read.email
  5. 「OAuth Access Token」の内容をメモ
  6. Gdriveで適当なフォルダーにSpreadsheetを新規作成(履歴保管用)
  7. ツール→スクリプトエディター
    • 以下の内容を作成
    • 「xoxp-??????????」の部分は上の「OAuth Access Token」のメモ内容とする
  8. 公開→Webアプリケーションとして導入
    • ここで得られたURLを3のURLにする

過去のバージョンではSpreadsheetにメールアドレスをリスト化して用意していましたが、今回はslack apiを通じてメンバーのメールアドレスも取得しています。これには一長一短があります。

 

タグ: , ,

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*