IFTTTとOffice365emailを連携し授業変更自動通知LINE BOTを作った。


はじめに

室長がクラスLINEで誤った授業変更通知をして僕が忘れ物をした(確認しなかった僕が悪い)ので授業変更を自動で通知してくれるLINE BOTを作りました。

仕組み

様々なWebサービス同士を連携させることができるIFTTT(イフトって読むらしい。初見分からんかった。)というものを使用しました。

Outlookで特定のメールアドレス(ここでは授業変更を通知してくる学校のメアド)からメールを受信する。
↓
IFTTTに転送(事前にIFTTT側でOffice365emailとの連携が必要)
↓
IFTTTからWebhook送信でLINE BOTサーバにメール本文をPOST
↓
POSTされたメール本文をグループLINEにPush
  • 言語:Python
  • Webフレームワーク:Flask
  • サーバ:Heroku

ソースコード

クソな部分がいっぱいあるけど許してください....。
まじで....あとで修正するから....今だけだから....許して...。
https://github.com/FlexiblePrintedCircuits/class_bot

参考にした記事や人など

IFTTT

↓IFTTTでのそもそものWebhookの使い方
https://ifttt-japan.club/apply-webhooks
↓メールを受信したらSlackに通知をさせるっていう記事
https://qiita.com/wasnot/items/ba71c7e861fb44cf8d84

LINE BOT側

↓グループにプッシュ通知をさせる
https://qiita.com/kenichi_odo/items/18badf7c069334d9c3a2

Siketyanって子がいるんですけどその子に色々教えてもらいました。
ありがとうSiketyan!!

結果


できたっちゃできた。
ただhtmlのタグが入っているので将来的にこいつらを取り除きたい。

詰まったとこ

IFTTTのトリガーにGmailがサポートされていない

最初Gmailでメール受信したら、って形にしたかったけど、去年の3月デサポート終了したらしいので仕方なくOfficeを使用することに。

IFTTTからサーバにメールの内容が送信されずIFTTT側でエラーが出る

Office側でIFTTTに権限を許可していないのが原因でした。
1度IFTTTでOffice365emailのコネクションを切って、もう1度コネクトしたら解決しました。

コードは問題ないのにLINE BOTエラーがでる

IFTTTから送信されたメールの内容がほとんどがクソ長いhtmlのコードで、実際に欲しいメールの内容はそれのごく一部にすぎませんでした。
それがなぜエラーに繋がるかというと、LINEMessageingAPIでは2000文字しか取り扱えないからです。なのでクソ長いPOSTされたメールデータから、実際に欲しい文字列をスライスして取得してそいつをメッセージ送信させることにしたらエラーが解決しました。

自慢させろ

これ5時間で作った